iOS automatically Adjusts ScrollView Insets 와 translucent 에 대한 상세 한 설명

iOS 개발 도 꽤 되 었 지만 automatically Adjusts Scroll View Insets 와 translucent 를 혼합 하여 사용 하 는 것 에 대해 서 는 잘 모 르 겠 습 니 다.오늘 은 여러분 을 데 리 고 실천 하고 공부 하 겠 습 니 다.궁금 한 점 이 있 으 면 답 해 주세요.
4.567913.다음은 demo 의 주 체 를 말씀 드 리 겠 습 니 다.UITab BarController 에 네 개의 item 이 있 습 니 다.서브 컨트롤 러 는 모두 UINavigation Controller 로 용 기 를 만 듭 니 다.저 는 그 중 하나 에 UITable View 를 추 가 했 습 니 다.frame 과 부모 View 를 설정 한 것 은 지금부터 테스트 를 시작 하 겠 습 니 다.
아무것도 설정 하지 않 음(두 속성 모두 기본 값 사용)
automatically Adjusts ScrollView Insets 는 기본적으로 true 로 열 립 니 다.
navigationController?.navigation Bar.translucent 는 iOS 7 이전에 기본적으로 false 이 고 iOS 7 과 그 다음은 기본 true log 입 니 다.
    private func hideNavigationBar(showBgImage: Bool) {
//        automaticallyAdjustsScrollViewInsets = false    
//        navigationController?.navigationBar.translucent = true
//        navigationController?.tabBarController?.tabBar.translucent = false
    }

컨트롤 러 의 시작 원점 은 네 비게 이 션 바 왼쪽 아래(0,64.0),종점 실제 tabBar 의 오른쪽 위(414.0,687.0)임 을 나타 낸다.이 럴 때 스크롤 보 기 를 보면 tableView 의 높이 가 672.0 이 없 는 것 이 완벽 하 게 어 울 리 는 것 을 발견 할 수 있 습 니 다.tableView 의 높이 는(총 높이-네 비게 이 션 바 높이-tabbar 높이)에 해당 합 니 다.이것 이 바로 automatically Adjusts ScrollView Insets 가 자동 으로 어 울 리 는 효과 입 니 다.
automaticallyAdjustsScrollViewInsets 설정 false
우 리 는 자동 으로 어 울 리 는 것 을 닫 았 다.
window.frame:(0.0, 0.0, 414.0, 736.0)
view.frame:(0.0, 0.0, 414.0, 736.0)
tableView.frame:(0.0, 0.0, 414.0, 736.0)
log:
    private func hideNavigationBar(showBgImage: Bool) {
        automaticallyAdjustsScrollViewInsets = false    
//        navigationController?.navigationBar.translucent = true
//        navigationController?.tabBarController?.tabBar.translucent = false
    }

이들 의 실제 frame 값 은 변 하지 않 았 지만 UI 는 달 랐 다.tableView 가 완벽 하 게 어 울 리 지 않 으 면 cell 전시 가 불완전 하 게 나타 나 고 tableView 의 일부분 은 아래쪽 tabBar 와 중첩 된다.
translucent
손잡이
automatically Adjusts ScrollView Insets 를 false 로 설정
window.frame:(0.0, 0.0, 414.0, 736.0)
view.frame:(0.0, 0.0, 414.0, 736.0)
tableView.frame:(0.0, 0.0, 414.0, 736.0)

log:
private func hideNavigationBar(showBgImage: Bool) {
        automaticallyAdjustsScrollViewInsets = false    
        navigationController?.navigationBar.translucent = true
//        navigationController?.tabBarController?.tabBar.translucent = false
    }
window.frame:(0.0, 0.0, 414.0, 736.0)
view.frame:(0.0, 0.0, 414.0, 736.0)
tableView.frame:(0.0, 0.0, 414.0, 736.0)
log:
    private func hideNavigationBar(showBgImage: Bool) {
        automaticallyAdjustsScrollViewInsets = false
        navigationController?.navigationBar.translucent = true
        navigationController?.tabBarController?.tabBar.translucent = false
    }

translucent 는 iOS 7 이전에 기본 값 은 false 이 고 iOS 7 과 그 다음 에 기본 값 은 true 입 니 다.이 속성 은 두 가지 기능 이 있 습 니 다.1.네 비게 이 션 바(nav,tabbar)를 반투명 상태 로 설정 합 니 다.2.현재 컨트롤 러 루트 용기 의 화면 시작 원점 수정
translucent 는 true 로 반투명 상태 이 고 컨트롤 러 원점 은 이 bar 의 원점 이 되 며 반대로 회복 된다.
automaticallyAdjustsScrollViewInsets
애플 은 iOS 7 을 발표 할 때 컨트롤 러(ViewController)클래스 에 automatically Adjusts ScrollViewInsets 속성 을 기본적으로 true 로 추 가 했 습 니 다.스크롤 보기(UIScrollView 및 하위 클래스)를 자동 으로 맞 춘 다 는 뜻 입 니 다.
window.frame:(0.0, 0.0, 414.0, 736.0)
view.frame:(0.0, 0.0, 414.0, 687.0)
tableView.frame:(0.0, 0.0, 414.0, 687.0)

총결산
이 두 속성 은 모두 가 함께 사용 하지 않 는 것 을 권장 합 니 다.만약 동시에 사용한다 면.
automatically Adjusts ScrollviewInsets 의 우선 순 위 는 translucent 보다 높 습 니 다.

좋은 웹페이지 즐겨찾기