2017-01-25 3 views
0

Xcode 8.2.1, Swift 3에 많은 데이터가있는 UILabels, UIButtons 및 UITextFields가 많은 프로젝트가 있습니다 (본질적으로 양식). 앱은 iPad 전용이며 가로 전용이며 대상은 9.0 이상입니다.Xcode 8.2.1 Autolayout : 자주 사용되는 채워진 UIViewController의 문제

나는 (시간이 많이 걸리는) 구속 조건을 수동으로 할당 해 보았습니다. 스토리 보드에 IDE가 "Missing Constraints 추가"및 "Suggested Constraints로 재설정"되도록했습니다. VC에서 모든 제약 조건을 제거하면 "형식"이 거의 올바르지 만 몇 가지 사항은 여전히 ​​적합하지 않습니다.

viewDidLoad() 또는 다른 위치 지정 관련 코딩에서 아무 것도 수행하지 않습니다. 여기

내 스토리 보드의 스크린 샷입니다 : enter image description here

을 그리고 여기에 제안 제약 아이 패드 에어 2 (아이폰 OS 버전 10.2) 시뮬레이터에서 같은 UIViewController에 있습니다 : Storyboard rendered using reset/suggested constraints

A) 어떻게 하나를해야 간격과 정렬이 필수적인 많은 컨트롤이 필요한 autolayout을 사용 하시겠습니까? b) XCode에서 크기를 특별히 지정하는 단추와 컨트롤의 크기를 조절하는 이유는 무엇입니까? 스토리 보드가 다시 열리면 지금 크기를 유지해야합니다.

의견을 보내주세요. 정신이 마비 된 나는 7.3 이상의 구식 기능에 비해 레이아웃이 더 많은 시간을 낭비하고있다.

+0

글 머리 기호를 무서워하지 말고 섹션을 자체 하위 뷰로 나누어 논리적 섹션을 다른 섹션에 대해 자동 레이아웃 할 수 있습니다. 다른 UI 요소를 추적하는 대신 – Fonix

답변

1

이것은 iPad 앱에서 다소 복잡한 화면을 세분화 한 예입니다.

enter image description here

주 화면 두 용기 뷰 구성된다. 왼쪽의 컨테이너에는 UIableViewContoller가 포함되고 오른쪽에는 UIViewController가 포함됩니다. 그런 다음 UIViewController 자체가 다른 UITableViewController를 포함합니다. 각 컨트롤러는 대리인을 통해 컨테이너 체인을 백업하는 데 필요한 변경 사항을 전달합니다.

이렇게하면 주어진 컨트롤러에 대한 제약 조건이 적기 때문에 각 컨테이너 섹션 내의 레이아웃을 훨씬 잘 제어 할 수 있습니다.

두 번째로, 거기에 쌓아 놓은 모든 뷰에 대한 모든 로직을 제어하는 ​​일부 메가 컨트롤러 클래스가있을 수 있습니다. 자체 컨트롤러로 분리하면 메가 클래스를 UI 클래스의 각 섹션을 제어하는 ​​별도의 클래스로 분리하여보다 읽기 쉽고 캡슐화 된 코드로 만들 수 있습니다.

+0

사슬을 매기지만, 확실히 의미가 있습니다. 필자는 레이아웃에 컨테이너 UIView 몇 개가 있지만,이 단계가 더 진행되었음을 지적해야합니다.이 경로를 시도하고 다시보고하겠습니다. 고마워. –

+0

궁극적으로, 이것이 아마도 "해결해야 할 시간 동안 가장 효과가있을 것"이라고 생각합니다. 제안 해 주셔서 감사합니다. 현재 Autolayout이 없기 때문에 Enterprise App이므로 지원 대상이 좁습니다. 반나절을 컨트롤러에서 서브 뷰로 그룹화하고 도움이되었지만 새로운 것을 추가하는 문제는 말할 것도없이 관리하기 어려운 상태로 남겨 두었습니다. Autolayout은 일부보기에서는 훌륭하게 작동하지만 다른 사람들에게는 지옥입니다. –

+0

최소한 앱이 조금씩 리팩터링 할 때 적어도 아이디어가 장기적으로 도움이되기를 바랍니다.스택 뷰를 사용하는 것이 도움이 될 수있는 유일한 방법이지만 모든 뷰를 사용하면 너무 많은 스택 뷰를 중첩하는 것은 많은 어려움 일 수 있습니다. 행운을 빕니다! – Frankie