2016-06-16 6 views
0

저는 UISplitViewController를 사용하여 화면의 왼쪽에 메뉴를 구현하는 iPhone (특성 컴팩트)에서 실행되는 앱을 성공적으로 만들었습니다. 그것은 Storyboard를 (23 Views/Units와 함께) AutoLayout과 함께 광범위하게 사용합니다. 나는 Gmail App 및 다른 많은 기능과 유사한 기능을 목표로하고 있습니다. UISplitViewController와 함께 AutoLayout을 사용할 수 있습니까?

enter image description here

메뉴가 여전히 볼 수 있지만 화면의 20 %와 상세/차보기를 떠나, 화면의 80 %를 점유 세로 모드에서 볼 수

. viewWillLayoutSubviews & viewWillTransitionToSize를 사용하여 splitViewController.preferredPrimaryColumnWidthFraction = 0.8을 설정하여이 작업을 수행했습니다.

슬픔의 원인이되는 문제 또는 부작용은 메뉴를 표시 할 때 AutoLayout을 모두 사용하는 보조보기가 내부보기 단추 및 레이블을 모두 위로 채우고 겹쳐서 표시된다는 것입니다.

enter image description here

그래서 내 질문은 이것이다 : 위 숙청 효과를 생산하지 않고 UISplitViewController 내에서 자동 레이아웃을 사용하는 것이 가능합니까? 나는 그것이 무엇인지, 그래서 내가 무엇을 놓치고 있는지, AutoLayout 시스템을 속여서 레이아웃을 부 풀리지 않고 어떻게 보이지 않게 밀어 붙일 수 있어야 하는가?

부록 : 위의 스크린 샷에서 파란색 탐색 모음이있는 보조보기는 SettingsTableViewController.m입니다. 이 코드는 NSLayoutConstraints를 포함하지 않았고 Main.storyboard의 관련 부분도 포함하지 않았습니다. 코멘트의 제안에 따라 : Main.storyboard의 "Add New Contraint"팝업 메뉴에서 수퍼 뷰를 선택하여 "Table View"에 "Equal Widths"제약 조건을 추가 할 수있는 방법을 찾지 못했습니다. ".

enter image description here

그래서 대안으로 나는 SettingsTableViewController.m에서의 viewDidLoad 메서드에 다음 코드를 추가하지만, 아무런 영향을 미치지 않습니다.

self.view.superview addConstraint:[NSLayoutConstraint constraintWithItem:self.view 
                   attribute:NSLayoutAttributeWidth 
                   relatedBy:NSLayoutRelationEqual 
                    toItem:self.view.superview 
                   attribute:NSLayoutAttributeWidth 
                   multiplier:1 
                   constant:0]]; 

답변

1

기본보기의 너비를 줄이지 마십시오. 기본보기를 오른쪽으로 이동해야합니다.

+0

어떻게하면됩니까? 내 코드에서 아무 것도 직접 기본보기의 너비를 설정하거나 변경하지 않습니다. 폭은 UISplitViewController 내에 내장 된 main = detail/secondary view의 결과로 자동 설정됩니다. 어떻게하면 오른쪽으로 이동합니까? – Steve

+0

@Steve, 주보기에 대한 후행 제약 조건 제거 및 너비 기본보기를 수퍼 뷰 (1 : 1)로 설정 –

+0

제안 해 주셔서 감사합니다. 나는 내가 한 일을 설명하기 위해 나의 질문을 업데이트했다. – Steve