Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование iOS/iPhone
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
filyakov
0 / 0 / 0
Регистрация: 23.11.2013
Сообщений: 5
1

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

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

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

Вместо navigation bar с table view хочу сделать просто view controller
добрый вечер. В xcode есть стандартный темплейт с navigation controller, но там по дефолту...

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

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

Трансформация view
всем привет) почему при применение трасформации что то в духе view.layer.transform =...

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

Решение

Цитата Сообщение от filyakov Посмотреть сообщение
Но в моем случае надо отрисовывать view именно на каждом шаге цикла. Может быть, у кого нибудь есть идеи, как решить эту проблему?
Вы сами проблем насоздавали, теперь героически решаете. Ваш linearAnimation выполняется в главном потоке, и благодаря наличию замечательного вызова sleep благополучно его подвешивает. drawRect выполняется в runloop главного же потока, поэтому он выполняется не "в конце цикла", а когда ваш метод отдает управление.
Используйте NSTimer и забудьте навсегда про sleep (по крайней мере в главном потоке)
0
zulkis
684 / 611 / 43
Регистрация: 13.01.2011
Сообщений: 1,724
16.02.2015, 22:12 4
filyakov, я бы добавил - вообще sleep функцию забудьте. Ее не нужно использовать при разработке под iOS. Все решается другими путями.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2015, 22:12

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

Single View Application
Доброе время суток уважаемые форумчане. Хотел у вас спросить, когда создаешь приложение из...

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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