Форум программистов, компьютерный форум CyberForum.ru

Перерисовка кастомного View - Программирование iOS/iPhone

Войти
Регистрация
Восстановить пароль
 
filyakov
0 / 0 / 0
Регистрация: 23.11.2013
Сообщений: 5
15.02.2015, 23:27     Перерисовка кастомного View #1
Доброго времени суток!
У меня есть класс, унаследованных от 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);
    }
}
Заранее спасибо.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2015, 23:27     Перерисовка кастомного View
Посмотрите здесь:

Objective-C Перелистывание View
Accessory View Objective-C
rotate view
Scroll view Objective-C
анимация View
Трансформация view
View Controller Scene
Objective-C StoryBoard vs View
По нажатию кнопки на View Controllere открыть Table View Controller
Вместо navigation bar с table view хочу сделать просто view controller
Вызвать метод View Controller'a из другого View Controller'a Objective-C
Выбор View Swift

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Melzas
 Аватар для Melzas
38 / 38 / 4
Регистрация: 20.07.2011
Сообщений: 88
16.02.2015, 15:46     Перерисовка кастомного View #2
Попробуй перерисовывать асинхронно в главном потоке или по тику NSTimer.
glvrzzz
95 / 71 / 12
Регистрация: 12.12.2012
Сообщений: 214
16.02.2015, 16:57     Перерисовка кастомного View #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от filyakov Посмотреть сообщение
Но в моем случае надо отрисовывать view именно на каждом шаге цикла. Может быть, у кого нибудь есть идеи, как решить эту проблему?
Вы сами проблем насоздавали, теперь героически решаете. Ваш linearAnimation выполняется в главном потоке, и благодаря наличию замечательного вызова sleep благополучно его подвешивает. drawRect выполняется в runloop главного же потока, поэтому он выполняется не "в конце цикла", а когда ваш метод отдает управление.
Используйте NSTimer и забудьте навсегда про sleep (по крайней мере в главном потоке)
zulkis
 Аватар для zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
16.02.2015, 22:12     Перерисовка кастомного View #4
filyakov, я бы добавил - вообще sleep функцию забудьте. Ее не нужно использовать при разработке под iOS. Все решается другими путями.
Yandex
Объявления
16.02.2015, 22:12     Перерисовка кастомного View
Ответ Создать тему
Опции темы

Текущее время: 11:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru