몇 시간이 걸리는 UI 요소를 인스턴스화하는 동안 진행률 막대를 업데이트하고 싶습니다. 우선 viewLoad 메서드에서 내 뷰를 만들고 거기에 내 진행 막대를 추가합니다. viewDidAppear 메서드에서 내보기가 나타난 후에는 여러 개의 Uikit 개체 인스턴스를 만들고 있지만 평균 시간 내에 진행률 막대를 업데이트하고 싶습니다. 나는 모든 요소가 주 요소에서 발생하기 때문에 어떻게 진행해야할지 모르겠습니다.시간 소비 UI 요소를 인스턴스화하는 동안 진행률 막대를 업데이트하는 방법은 무엇입니까?
-(void) viewDidAppear:(BOOL)animated
{
// precompute the source and destination view screenshots for the custom segue
self.sourceScreenshotView = [[UIImageView alloc] initWithImage:[self.view pw_imageSnapshot]];
[self.progressBar setProgress:.3];
SCLViewController *rvc = [[SCLViewController alloc] init];
UIView *destinationView = rvc.view;
destinationView.frame = CGRectMake(0, 0, kWidthLandscape, kHeightLandscape);
self.destinationScreenshotView = [[UIImageView alloc] initWithImage:[destinationView pw_imageSnapshot]];
[self.progressBar setProgress:.5];
}
난 그냥 나중에 그들을 사용하는 두 개의 뷰 스크린 샷을 만들 필요가 위의 코드에서 : 여기
내 코드의 일부입니다. 문제는 진행률 표시 줄에 진행률을 설정할 때 마지막 업데이트 (.5) 만 표시된다는 것입니다. 이 업데이트를 수행하는 적절한 방법은 무엇입니까?
작동합니다. - 감사합니다! 그래서 그것은 OK입니다 백그라운드 스레드에서 일부 UIVIew 인스턴스화합니까? Uikit 객체의 모든 조작은 주 스레드에서만 수행되어야한다고 생각했습니다. 또한 각 인스턴스 생성 후에 설정 한 단계에 도달 할 때까지 진행 상황을 부드럽게 유지하는 방법에 대해 좀 더 자세히 설명 할 수 있습니까? – tiguero
예, 백그라운드 스레드에서보기를 인스턴스화 할 수 있습니다. 주 스레드에서해야 할 일은 다시 그리기 (서브 뷰 추가 또는 일부 속성 수정)를 의미하는 모든 것입니다. 원활한 진행 상황에 대해 말씀 드렸듯이 진행 상황 표시 줄을 업데이트하기 위해 매 순간 어떤 상태에 있는지 알 수있는 디자인이 있어야합니다. 지금은 초기화가 언제 시작되고 언제 완료되는지 알 수 있습니다. 이 초기화가 일련의 알려진 단계 인 경우 해당 단계 사이에 코드를 추가하여 다른 사람 (대리인)에게 진행률 표시 줄을 업데이트하도록 할 수 있습니다. –