以编程方式更改 UITabBarControllers tabBar 属性的类 [重复]

Posted

技术标签:

【中文标题】以编程方式更改 UITabBarControllers tabBar 属性的类 [重复]【英文标题】:Programmatically change class of UITabBarControllers tabBar property [duplicate] 【发布时间】:2017-03-17 07:44:03 【问题描述】:

基本上我想改变标签栏的高度,为此,我找到了多个通过继承 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];

但该属性是只读的。

【问题讨论】:

@Sneak 抱歉,我添加了更多信息。而且您发布的链接与我遇到的问题无关。 我唯一的问题是——如何以编程方式更改 UITabBarController 上的 tabBar 属性的类。不多也不少。 如果您查看我提供的链接 - 子类化 UITabBar 本身确实有效。但它需要一个故事板。我的问题很简单,如果我可以在没有情节提要要求的情况下做他们所做的事情。 我的问题是是否可以这样做。我目前正在使用您在我的解决方案中描述的方式。但我很好奇它是否有效,因为它感觉比更换框架更干净。因此问题本身。 当然是一个UIView的扩展。子类化它,然后正如我再次所说,子类化一个自定义“UITabBarController”并在您的自定义类中覆盖它作为我提供的链接,使用您的 UITabBar 的子类完成 UITabBarController 已经为您完成的工作并实现所有链接提供的委托方法。但是,正如我所说,当您被交给 UITabBarController 来为您完成这项工作时,我看不出您想要这样做的原因。另外,您的问题是关于高度的。 【参考方案1】:

我不确定Objective-C,但在Swift 中,您可以通过将tabBar 覆盖为computed property 来做到这一点:

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

【讨论】:

这似乎不起作用。还有什么需要做的吗? 不起作用。检查这个答案:***.com/a/57616340/1837715

以上是关于以编程方式更改 UITabBarControllers tabBar 属性的类 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式更改 MediaController 图标

以编程方式更改系统日期

如何以编程方式更改 C# 中的程序集名称

以编程方式更改导航栏标题

如何以编程方式更改 NSTableView 高度

UISegmentedControl 以编程方式更改段数