这出乎意料的难!我想出的最好的方法是子类UITabBarController
化,然后在init
:
super.init(nibName: nil, bundle: nil)
object_setClass(self.tabBar, CustomTabBar.self)
(self.tabBar as? CustomTabBar)?.setup()
不幸的是,您不能在调用之前设置类super.init
(无论如何都不是在 Swift 中),因此当您更改类时,该init
方法已经运行,因此不会在您的自定义子类上调用。为了解决这个问题,我刚刚添加了一个setup()
方法来完成我的所有自定义。
Swift 中的另一个选项是扩展UITabBar
并执行以下操作:
extension UITabBar {
open override func willMove(toSuperview newSuperview: UIView?) {
super.willMove(toSuperview: newSuperview)
/// Customise in here.
}
// Modify the height.
open override func sizeThatFits(_ size: CGSize) -> CGSize {
return CGSize(width: size.width, height: 64.0)
}
}
但是,这会影响 的所有实例UITabBar
,所以我更喜欢第一个选项。