무거운 UI 업데이트 중에 활동 표시기를 표시하려고했습니다.(iphone) UI 업데이트가 많은 경우 활동 표시를 어떻게 표시합니까?
내 최초의 시도가 실패한 뷰 1에서
- 공연 활동 표시했다
- 과 pushViewController는
- 은 뷰 1의 viewDidDisappear가 (과 pushViewController의 푸시 애니메이션 가 발생합니다 (이의 ViewController의 생성보기는 시간이 오래 걸립니다)), 활동 표시기를 숨기기
pushViewController 전에 "show activity indicator"를 호출했는데 푸시 된 viewController의 뷰를 생성 할 때 발생하는 무거운 UI로 인해 활동 표시기가 표시되지 않는 문제가있었습니다.
필자는 전략을 다음과 같이 변경했으며 작동하며 이유는 알 수 없습니다. 의 ViewController의 viewDidLoad에
에서
- 과 pushViewController
- 공연 활동 표시 나는 인상 표시등이 didn를 이유 있었다 첫 번째 방법은 무거운 UI 프로세스 때문이었습니다.
링크의 토론을 참조하십시오. (iphone) showing activity indicator before heavy ui updating지연된 UI 업데이트 (표시기가 표시되지 않음)가 큐에 너무 많은 UI 업데이트로 인해 발생하는 경우 두 번째 방법이 다른 이유는 무엇입니까?
viewDidLoad는보기를 만들 때만 호출된다는 것을 알고 있습니다.
그리고보기가 실제로 화면에 표시 할 때 viewDidAppear는 (따라서 호출 할 수있는 여러 번). 호출되는하지만 viewDidAppear를 사용하는 두번째 방법은 내 상황에서 작동하는 이유를 설명 할 근본적인 차이가?
소위 메인 스레드와 별도로 UI 업데이트 스레드가 있습니까? 메인 스레드가 UI 업데이트 스레드입니까?
난 당신이 주 스레드에서 UIKit UI를 업데이트하고 있는지 확인하려면
주셔서 감사합니다. 예 메인 스레드에서 UI를 업데이트하고 있습니다. viewWillAppear은 하나의 뷰 모양을 위해 여러 번 호출되는 것으로 생각했습니다. ViewDidAppear은 한 번 호출됩니다. 왜 viewWillAppearear가 더 나은 선택입니까? viewWillAppear은 여러 번 호출되기 때문에 여러 표시기 뷰를로드하지 않도록 bool var를 유지해야합니까? – eugene
if 문을 사용하여 활동 표시기가 애니메이션으로 표시되는지 확인합니다. 그렇지 않다면 움직입니다. 활동 지시기가 이미 작성되어 있어야하며, 펜촉에 있으면 도움이됩니다. viewWillAppear (또는 앱에 더 적합한 경우 viewDidAppear)을 호출 할 때 표시 및 애니메이션으로 설정하고 UI가 완전히로드되면 애니메이션 표시를 중지하고 보이지 않게하는 활동 표시기를 설정합니다. –