2017-12-25 32 views
0

맞춤 탭 막대 iOS

이미지와 같이 맞춤 탭 막대를 만들고 싶습니다. 이 결과를 얻기 위해 UITabBar 서브 클래 싱을 시작하는 방법을 모르겠습니다. 만약 내가 루트 UIViewController을 가지고 있고, interface builder (UIView, 이미지, 원 버튼 등)을 통해 탭 바의 인식을 만들고, UIViewController의 맵에 ContainerView을 추가한다면? 그렇다면이 접근법에 대한 단점은 무엇입니까? 크기 조정 문제 (iPhone 6에서는 좋지만 iPhone X에서는 좋지 않음)가 동적으로 조정되는 탭 막대가 없으므로?

답변

0

UIKit 구성 요소를 UITabBar과 같은 부분으로 분해하면 찾을 수있는 모든 항목이 우리가 모두 사용할 수있는 동일한 UIKit 구성 요소입니다. 우리가 매번 작동한다는 것을 알고 있기 때문에 때때로 애플의 물건을 사용하는 것이 좋습니다. 하지만 때로는 애플의 물건을 사용하는 것이 좋지 않은데, 그 이유는 항상 미리 제작 된 구성 요소에 개입하는 것을 좋아하지 않고 종종 수정할 수있는 바로 그 행동을 숨기기 때문입니다.

당신이하고있는 일을 알고 있거나 배우기를 매우 기꺼이한다면, 나만의 물건 만들기에 대한 두려움이 없도록하는 것이 좋습니다. UIViewUIButton 개의 하위보기가 있거나 다른 UIView 개의 하위보기에 탭 제스처 인식기가 첨부되어 있습니다. 하위보기 컨트롤러가있는 컨테이너보기 컨트롤러 인 마스터보기 컨트롤러가있는 경우 마스터에 탭 막대를 놓고 항상 모든 화면 위에 겹쳐있는 합법적 인 탭 막대가 있습니다 (표시된보기 컨트롤러, 그것은 정확히 우리가 원하는 행동입니다).

그리고 지금까지 아이폰 X는 우려하고 안전한 지역은 단지에 적용 될 때 어떻게 평소 어떤보기 그 때문에 모든 사용자 정의 탭 표시 줄은 다음과 같습니다

if #available(iOS 11.0, *) { 

    tabBar.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor).isActive = true 
    tabBar.widthAnchor.constraint(equalTo: view.safeAreaLayoutGuide.widthAnchor).isActive = true 
    tabBar.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor).isActive = true 

} else { 

    tabBar.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true 
    tabBar.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true 
    tabBar.bottomAnchor.constraint(equalTo: bottomLayoutGuide.topAnchor).isActive = true 

} 
tabBar.heightAnchor.constraint(equalToConstant: 44).isActive = true 

그리고 대한 우려

크기를 조정하면 경우 마스터 뷰 컨트롤러에서 탭 바의 제약 조건 (어쨌든해야 할 것처럼)을 줄이면 가능한 한 모든 방법으로 스트레칭 및 회전합니다.