Форум программистов, компьютерный форум, киберфорум
Программирование iOS/iPhone
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 23.11.2013
Сообщений: 5
1

Перерисовка кастомного View

15.02.2015, 23:27. Показов 1354. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!
У меня есть класс, унаследованных от UIView, отрисовка объекта этого класса прописана в методе drawRect:. Мне необходимо по нажатию кнопки во ViewController'е циклически перерисовывать view с задержкой в конце каждой итерации. Для этого я вызываю в цикле метод setNeedsDisplay. Но, как показывает отладка, этот метод вызывается не на каждой итерации цикла, а только один раз в конце цикла. Как я понял после поисков в интернете, так сделано с целью повышения производительности. Но в моем случае надо отрисовывать view именно на каждом шаге цикла. Может быть, у кого нибудь есть идеи, как решить эту проблему?
Прикладываю код, в котором пытаюсь циклически перерисовывать view:
Objective-C
1
2
3
4
5
6
7
8
- (IBAction)linearAnimation:(id)sender {
    self.linearPolygon.isTransformed = YES;
    for (CGFloat a = -0.4; a < 0.4; a=a+0.1) {
        self.linearPolygon.alpha = a;
        [self.linearPolygon setNeedsDisplay];
        sleep(1);
    }
}
Заранее спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.02.2015, 23:27
Ответы с готовыми решениями:

Вылетает программа при выборе пункта в диалоговом окне (AlertDialog) для кастомного View
Есть MainActivity.java В нем есть функция: public void onClickSettings(View view) { ...

Перерисовка фрагмента области view
в onpait области view рисуется фон, на фоне в центре отображается картинка. При ресайзинге...

Создание кастомного View "Матрица"
Здравствуйте! Взялся за написание компонента, который отображает матрицу произвольного размера. ...

В чем разница (View view) и (View v)
Я только начинаю изучать программирование под андроид (до этого вобще программированием не...

3
38 / 38 / 6
Регистрация: 20.07.2011
Сообщений: 88
16.02.2015, 15:46 2
Попробуй перерисовывать асинхронно в главном потоке или по тику NSTimer.
0
95 / 71 / 12
Регистрация: 12.12.2012
Сообщений: 214
16.02.2015, 16:57 3
Лучший ответ Сообщение было отмечено zulkis как решение

Решение

Цитата Сообщение от filyakov Посмотреть сообщение
Но в моем случае надо отрисовывать view именно на каждом шаге цикла. Может быть, у кого нибудь есть идеи, как решить эту проблему?
Вы сами проблем насоздавали, теперь героически решаете. Ваш linearAnimation выполняется в главном потоке, и благодаря наличию замечательного вызова sleep благополучно его подвешивает. drawRect выполняется в runloop главного же потока, поэтому он выполняется не "в конце цикла", а когда ваш метод отдает управление.
Используйте NSTimer и забудьте навсегда про sleep (по крайней мере в главном потоке)
0
686 / 613 / 43
Регистрация: 13.01.2011
Сообщений: 1,722
16.02.2015, 22:12 4
filyakov, я бы добавил - вообще sleep функцию забудьте. Ее не нужно использовать при разработке под iOS. Все решается другими путями.
0
16.02.2015, 22:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.02.2015, 22:12
Помогаю со студенческими работами здесь

Как сделать невидимым один из view в предыдущем item of recycler view
Здравствуйте ! Как сделать чтобы при клике на кнопку в элементе рисайклеравью в предыдущем...

Как во view добавить вычисляемую колонку с порядковым номером записи во view?
Как во view добавить вычисляемую колонку с порядковым номером записи во view?

По нажатию кнопки на View Controllere открыть Table View Controller
Как по нажатию кнопки на View Controllere открыть Table View Controller

view с чего состоит и что выполняет каждая функция в view?
Буду очень благодарен за ответ!!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru