이 복제에 관심이있는 사람은 다음 단계를 따르십시오.
- 새로운 iOS 프로젝트 생성
- 메인 스토리 보드를 열고 기본 / 초기화를 삭제하십시오
UIViewController
UITableViewController
객체 라이브러리에서 새 항목 을 드래그
- 초기 뷰 컨트롤러로 설정
- 테스트 데이터를 테이블에 공급
위의 단계를 수행하면 앱을 실행할 때 Xcode의 확인란을 "{Top, Bottom, Opaque} Bar 아래의 가장자리 확장"으로 조정하여 첫 번째 행이 상태 표시 줄 아래에 나타나지 않게하는 등 아무것도 작동하지 않습니다. 프로그래밍 방식으로이 문제를 해결할 수도 없습니다.
예를 들어, 위 시나리오에서는 다음과 같은 효과 가 없습니다 .
// These do not work
self.edgesForExtendedLayout=UIRectEdgeNone;
self.extendedLayoutIncludesOpaqueBars=NO;
self.automaticallyAdjustsScrollViewInsets=NO;
이 문제는 매우 실망 스러울 수 있으며 특히 Apple의 사전 배선 된 버그로 인해 Apple의 버그라고 생각합니다. UITableViewController
객체 라이브러리에서 입니다.
"매직 숫자 20"과 같은 "매직 숫자"형식을 사용하여이 문제를 해결하려는 모든 사람에게 동의하지 않습니다. 이런 종류의 밀접하게 결합 된 프로그래밍은 분명히 애플이 우리가 원하는 것이 아닙니다.
이 문제에 대한 두 가지 해결책을 발견했습니다.
보존 UITableViewController
의 장면을 :
당신은 유지하려는 경우 UITableViewController
수동으로 다른보기로 배치하지 않고, 스토리 보드에서, 당신은을 포함 할 수 있습니다 UITableViewController
A의 UINavigationController
인스펙터에서 (편집자> 삽입에서> 네비게이션 컨트롤러)의 선택을 취소 "쇼 탐색 막대" . 이를 통해 추가 조정이 필요없는 문제를 해결 UITableViewController
하고 스토리 보드의 장면을 보존 할 수 있습니다 .
AutoLayout을 사용하고 UITableView
다른보기에 포함 (Apple이 우리가 원하는 방식이라고 생각합니다) :
빈을 UIViewController
만들고 드래그하십시오 UITableView
. 그런 다음 Ctrl 키를 누른 UITableView
상태에서 상태 표시 줄을 향해 드래그하십시오 . 마우스가 상태 표시 줄의 맨 아래로 이동하면 "Top Layout Guide"라는 자동 레이아웃 풍선이 나타납니다. 마우스를 놓고 "수직 간격"을 선택하십시오. 레이아웃 시스템에 상태 표시 줄 바로 아래에 배치하도록 지시합니다.
빈 응용 프로그램에서 두 가지 방법을 테스트했으며 모두 작동합니다. 프로젝트에서 작동하도록 추가 조정을 수행해야 할 수도 있습니다.