UIActivityIndicator во время операций рисования кварца - PullRequest
0 голосов
/ 10 марта 2010

Я понимаю, что для использования UIActivityIndicator необходимо запустить его в главном потоке, а затем выполнить длительную операцию в фоновом потоке. Я также понимаю, что все операции UIKit должны выполняться и в основном потоке.

Но теперь я столкнулся с длительной операцией по созданию CALayers с использованием методов рисования Quartz CGContext, и мне интересно, можно ли выполнять Quartz в фоновом потоке, чтобы я мог отобразить индикатор активности в то время как мои сложные графики рисуются?

Я довольно новичок в Кварце и должен признать, что легко заблудился в этой области. Я надеюсь, что он достаточно отличается от UIKit, чтобы разрешить операции фонового рисования контекста.

Ответы [ 2 ]

2 голосов
/ 10 марта 2010

Выделите NSThread и создайте контекст, который вы создали с помощью CGBitmapContextCreate. По завершении используйте -[NSObject performSelectorOnMainThread:withObject:waitUntilDone:], чтобы отправить изображение, полученное из CGBitmapContextCreateImage, обратно в основной поток, который будет присвоен свойству CALayer contents. Убедитесь, что ваш код рисования является поточно-ориентированным.

0 голосов
/ 10 марта 2010

Вы не создаете CALayers, используя методы рисования Quartz CGContext. Вы рисуете в CALayers, используя методы рисования CGContext. Это происходит на этапе рисования цикла выполнения, когда он вызывает drawInContext:, и вы не можете контролировать, в каком потоке это происходит (или даже когда это происходит на самом деле). Вы хотите сохранить их как можно быстрее, поэтому для сложных слоев вам нужно как можно больше предварительных вычислений и сохранить от ответов, путей и т. Д.

Я чувствую, что вы можете иметь в виду что-то еще, хотя. Что вы подразумеваете под "создать CALayers?"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...