Snapkit 쓰면 편하지만, 그냥 해 보았다.




3가지 방법이 있다. 1번은 interface builder에서 수정하는 방법.

2번은 서브 뷰를 펼치기 전에 호출되는 viewWillLayoutSubviews 를 override 해서 그 안에 tabview 의 height를 변경하는 방법.

extension UITabBar {

        override open func sizeThatFits(_ size: CGSize) -> CGSize {

            print("HJH_sizeThatFits")

            return super.sizeThatFits(size)

        }

}

3번은 UITabBar의 sizeThatFits를 오버라이드 하는 방법이다.

1번은 스킵하고 2번과 3번의 호출은 다음과 같았다.


HJH_sizeThatFits

HJH_sizeThatFits

HJH_sizeThatFits

HJH_sizeThatFits

HJH_sizeThatFits

HJH_sizeThatFits

HJH_sizeThatFits

HJH_sizeThatFits

HJH_sizeThatFits

HJH_sizeThatFits

HJH_sizeThatFits

HJH_viewWillLayoutSubviews()

HJH_sizeThatFits

HJH_viewWillLayoutSubviews()

HJH_sizeThatFits


처음 그릴 때 많이 호출되고 이 후 탭 이동 시 마다 HJH_sizeThatFits이 2번씩 호출된다.


결국 viewWillLayoutSubviews를 override 하는 방법이 현명하겠다.


다음 3개 사이트의 코드가 필요하다.




var myDefaultFontSize:CGFloat = 26.0

switch UIDevice().type {

    case .iPhoneSE,.iPhone5,.iPhone5S: print("default value")

    case .iPhone6,.iPhone7,.iPhone8,.iPhone6S, .iPhoneX  : myDefaultFontSize += 4

    default:break

}


+ Recent posts