iOS7에서, NavigationController의 Top Bar가 있을 경우, TableView등의 ScrollView에서는 자동으로 내부 Content영역이 Top Bar밑으로 내려오게 됩니다.
TableView의 경우에는 아래로 내리면 첫번째 Row가 Top Bar 밑으로 표시 되고, 그 밑으로 들어가면 화면에서 가리게 됩니다.
그리고, 위로 올리면, Top Bar뒷면으로 Cell들이 올라가게 됩니다.
어떤경우에 문제가 될까요?
TableView의 경우에는 아주 좋은 기능으로, 첫번째 Row가 잘 표시가 됩니다만, ScrollView의 경우에는 조금 달라집니다.
Top bar밑으로 나왔다가 안 나왔다가 하면 문제가 됩니다.
이 기능을 컨트롤 할 수 있는 방법은
Storyboard의 ViewController에서 Adjust Scroll View Insets를 체크하거나,
automaticallyAdjustsScrollViewInsets를 NO 로 설정하여 기능을 뺄 수 있습니다.
이 기능을 빼면, 자동으로 contentInsets.top 이 설정되지 않으므로 가장 위까지 content영역으로 됩니다.
TableViewController에서 automaticallyAdjustsScrollViewInsets를 NO로 설정하게 되면, row 0, 1은 top bar의 뒷면에 위치하게 되어서, 아래로 내리지 않는 이상을 볼 수도 없고, 선택할 수도 없게 됩니다.
이 기능은 iOS7에서만 지원하는 것이므로, iOS6에서 기능 설정을 무시하게 하려면, 함수가 지원하는지 respondsToSelector를 통해서 확인하고 설정하면 되겠습니다.
if ([self respondsToSelector:@selector(setAutomaticallyAdjustsScrollViewInsets:)]) { self.automaticallyAdjustsScrollViewInsets = NO; }
[참고]
- iOS 7 UI Transition Guide : AppearanceCustomization
댓글 없음:
댓글 쓰기