2011-02-17 3 views
1

제목이 말하는 것 : 빈 UIView 하위 클래스를 만들고 서브 뷰를 추가하면 비어있는 layoutSubviews 메소드가 생성되고 거기에 중단 점을 추가합니다. 그런 다음 프로젝트를 빌드하고 layoutSubviews 메소드의 해당 지점에서 뷰를로드 할 때 시뮬레이션이 중지됩니다. 지금까지는 괜찮습니다. 시뮬레이션을 계속하고 장치를 회전합니다 (뷰 컨트롤러가 모든 방향을 허용하도록 설정되었다고 가정).하지만 객체가 어떻게 회전하는지 볼 수는 있지만 layoutSubviews는 다시 호출되지 않습니다. 아이디어가 있으십니까?layoutsubviews는 기기 회전에도 불구하고 한 번만 호출됩니다.

좋아요, 내 질문을 단순화합니다 : 사용자 지정 UIView 일부 하위 뷰를 만들고 장치 방향에 응답하게하려면 어떻게합니까? drawRect 또는 아무것도 사용하지 않아도되고, UIView의 서브 클래스를 만들고, 몇 개의 subView를 추가하고, 장치가 회전 중일 때 핸들 할 필요가 없습니다.

답변

3

정확히 같은지는 모르겠지만 비슷한 문제가 발생했습니다. 나는 UISplitViewContoller (Xcode의 템플릿)를 사용하고 있었고 DetailViewController에 서브 뷰를 추가하고 있었다. layoutSubviews 메서드는 ViewController의 기본 UIView의 하위 뷰이기 때문에 회전 할 때 호출되지 않았습니다.

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { 
    [super didRotateFromInterfaceOrientation:fromInterfaceOrientation]; 
    if (detailView != nil) [detailView layoutSubviews]; 
} 
5

당신은있는 UIView에 autoresizingMask을 설정하려고 했나 : 그래서 내가 DetailsViewController이 추가가 일하러 가야 (detailView 내 하위 뷰)? 예를 들어 다음과 같은 :에서

someView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 

UIView documentation :

하면 '뷰의 경계 변경, 해당 뷰는 자동으로 각 서브 뷰의 자동 크기 마스크에 따라 그 서브 뷰의 크기를 조정' autoresizingMask를 None 이외의 값으로 설정하면 뷰 범위가 변경 될 때 layoutSubviews 메서드가 항상 호출된다는 것을 의미합니다.

+0

스레드 스타터와 동일한 문제가있었습니다. 이것으로 해결했습니다. 감사 –