以编程方式更改UITabBarControllers tabBar属性的类

时间:2017-03-17 07:44:03

标签: ios uitabbarcontroller uitabbar

基本上我想改变标签栏的高度,为此,我找到了多个通过子类化UITabBar工作的解决方案。

然而,为了在选项卡控制器中实际使用该子类,他们(其他SO线程中的人员)似乎告诉我在故事板中更改它(子类)。但我正在使用的应用程序以编程方式创建选项卡控制器,因此我无法更改故事板中的子类。

以下是发布解决方案的SO问题的示例,但是它使用故事板来使用新的标签栏控制器子类。

因此。有没有办法在我的UITabBarController中使用我的子类UITabBar?

例如。让我们假设我从这个帖子changing the height of UITabBar in iOS7/8?

中获取解决方案
@implementation MyTabBar

-(CGSize)sizeThatFits:(CGSize)size
{
    CGSize sizeThatFits = [super sizeThatFits:size];
    sizeThatFits.height = 100;

    return sizeThatFits;
}

@end

现在。如何在我编程的UITabBarController中使用此类(MyTabBar)作为选项卡。

我的第一个想法就是做

之类的事情
self.tabBar = [[MyTabBar alloc] init];

但该财产是只读的。

2 个答案:

答案 0 :(得分:0)

我对Objective-C不确定,但在Swift中您可以通过将tabBar覆盖为computed property来实现此目的:

open class MyTabBarController: UITabBarController {
    open override var tabBar: MyTabBar {
        return MyTabBar()
    }
}

答案 1 :(得分:0)

可以将自定义的UITabBar子类替换为UITabBarController的标签栏,但前提是必须在情节提要中创建标签栏控制器。对于用代码创建的选项卡栏控制器,无法做到这一点。