2014-02-13 1 views
11

인터페이스 빌더에서 자동 레이아웃 설정을 처리합니다. 런타임에 상태 표시 줄을 숨길 때 레이아웃 가이드 상단에 고정 된 뷰를 오프셋하지 않으려합니다.iOS7 상태 표시 줄을 숨기고 상단 레이아웃 가이드를 조정하지 않습니다.

상태 표시 줄을 숨길 때 myViewController.topLayoutGuide.length이 20에서 0으로 변경된다는 것을 발견했습니다. 그것을 막는 방법? 또는 (해결 방법으로) 핀 대 레이아웃 가이드없이 다양한 창 크기에 대해 전체 화면보기를 설정하는 방법은 무엇입니까?

일부 코드 내 상황을 설명하기 :

Log(@"frame: %@, top: %.0f", NSStringFromCGRect(myViewController.myView.frame), self.topLayoutGuide.length); 
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone]; 
Log(@"frame: %@, top: %.0f", NSStringFromCGRect(myViewController.myView.frame), self.topLayoutGuide.length); 

출력 :

frame: {{40, 24}, {240, 40}}, top: 20 
frame: {{40, 4}, {240, 40}}, top: 0 
+0

달성하려는 목표에 대해 완전히 명확하지 않습니다. 상태 표시 줄이 표시되는지 여부에 관계없이 뷰를 고정 된 위치에 표시하려고합니까? 아니면 iOS6/7 스위칭 문제입니까? 구성 요소와 런타임 결과를 배치 할 때 문제가 발생하는 경우 IB의 상태 표시 줄을 숨길 수도 있습니다. – Ben

+0

런타임에 상태 표시 줄을 숨기고 그 순간 UI가 바뀝니다. 이유는'topLayoutGuide'에 있습니다. 상태 표시 줄이 숨겨지면 UI 위치를 유지하고 싶습니다. – brigadir

+0

보기를 표시하고 상태 표시 줄을 제거 했습니까? 또는보기를 표시하기 전에 상태 표시 줄이 나타나지 않는다고 말하고 있습니까? – Ben

답변

19

topLayoutGuide 속성은 읽기 전용이며 변화하는 것을 방지 할 수 없다.

항목을 topLayoutGuide가 아닌 superview에 고정 할 수 있습니다. 그게 당신의 문제를 해결해야합니다.

enter image description here

+1

고맙습니다 :-) superview 제약은 스크린 샷의 동일한 메뉴를 통해서만 가능합니다. – Etan

+0

환상적인 팁입니다! – algal

+0

좋아요! 당신은 내 시간을 절약 ~ – seapy