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

Программирование iOS/iPhone

Войти
Регистрация
Восстановить пароль
 
filyakov
0 / 0 / 0
Регистрация: 23.11.2013
Сообщений: 5
#1

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

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

Доброго времени суток!
У меня есть класс, унаследованных от 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
Посмотрите здесь:

Scroll view - Objective-C
вопрос элементарный. Вот я создал scroll view, заполнил его. (информация не помещается на экране (уходит вниз экрана) и должна ездить...

StoryBoard vs View - Objective-C
Подскажите, сейчас штудирую XCODE по книжке, которая уже устарела (в то время самой актуальной версией iPhone был 4S). Так вот вопрос: ...

Трансформация view - Программирование iOS
всем привет) почему при применение трасформации что то в духе view.layer.transform = CATransform3DMakeRotation(angle, 0.0, 1.0,...

анимация View - Программирование iOS
Здравствуйте! Использую этот метод для анимации(передвижения) view ; У этого view установлена тень ...

Выбор View - Swift
Доброго времени суток. Есть несколько view controller-ов, и есть конструкция switch-case в коде, которая должна определять какая и view...

Accessory View - Objective-C
подскажите как сделать так, чтобы в TableView при нажатии на ячейку(выполняется переход на другой View), менялось изображение у кнопки...

rotate view - Программирование iOS
Привет всем. У меня есть вьюконтроллер, это просто попап окно, которое расположено сверху всеъ элементов. добавляю я его мне...

Перелистывание View - Objective-C
Добрый вечер. Возник вопрс. Как сделать так. чтобы можно было перелистывать view. Т.е. есть исходная view и при нажатии внизу на...

Добавление Table View - Программирование iOS
Здравствуйте,как сделать чтобы при нажатии кнопки высвечивался view,в этом view пользователь выбирает настройки,по окончании выбора table...

Жесты + View Controller - Objective-C
Доброго времени суток Облазил кучу топиков стэк оферфлоу, но так и не нашел четкого, доступного ответа на свой вопрос. Собственно сабж:...

Сортировка view по цветам - Программирование iOS
У меня есть 15 view, которые окрашиваются рандомным цветом, и мне нужно их отсортировать по цвету. Я нажимаю кнопку сортировки по красному...

Table View Cell - Программирование iOS
Есть Table View Cell. Как сделать переход по нажатью push на View Controller&amp; Добавлено через 30 минут Точнее по нажатию на Table...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
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
Ответ Создать тему
Опции темы

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