以编程方式更改 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 属性的类 [重复]的主要内容,如果未能解决你的问题,请参考以下文章