Как принудительно обновить экран для UIScrollView из потока / функции не-пользовательского интерфейса (iPhone) - PullRequest
3 голосов
/ 13 января 2010

Я рисую набор изображений в просмотре uiscroll из не-пользовательского потока / функции. Но он отображается только после того, как все рисунки сделаны рисованием. Для рисования всех изображений я написал функцию, и это то, что называется не-пользовательским потоком. Я написал эту строку внутри функции

[self performSelectorOnMainThread:@selector(updateUI) withObject:nil waitUntilDone:NO];

И написали функцию как указано ниже

- (void)updateUI
{
[myScrollView setNeedsDisplay];
}

Но это не имеет никакого эффекта, даже когда я вижу, как управление передается этой функции. Что теперь делать?

Ответы [ 4 ]

3 голосов
/ 13 января 2010

По моему опыту, все операции рисования должны выполняться в потоке пользовательского интерфейса, даже если они не видны или даже добавляются в иерархию представления, когда вы их делаете. Если бы вы нашли способ обойти это, я бы хотел узнать: -)

1 голос
/ 14 января 2010

Хорошо, у меня есть решение. Это работает отлично, хотя мне не нравится решение. Я изменил свою функцию следующим образом.

- (void)updateUI
{
 for(UIView *subview in [myScrollView subviews]) 
 {
  [myScrollView bringSubviewToFront:subview];   
 } 
}
0 голосов
/ 14 января 2010

Попробуйте что-то вроде performSelectorOnMainThread:withObject:waitUntilDone:

0 голосов
/ 13 января 2010

Может быть, вам также следует позвонить setNeedsLayout и / или layoutIfNeeded?

...