2017-03-03 26 views
1

我已经实现了一个UITabBar,根据UITabBarController观察的属性更改它的高度。UITabBar与内容视图重叠。如何访问内容视图以更新其框架?

当标签栏的高度增加时,我拨打电话sizeToFit,然后拨打setNeedsLayoutlayoutIfNeeded。在willLayoutSubviews之内,我更改了内容视图的框架高度,我认为它是self.selectedViewController.view,但是,更改不会保持不变,并且在某些时候该视图会恢复到屏幕高度。最终的结果是内容视图延伸过标签栏,标签栏与内容重叠。

但是,当我切换选项卡/视图控制器时,内容视图正确调整大小。我该如何纠正这个问题?

回答

0

也许问题是您所呼叫的layoutIfNeeded刷新UI中

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController { 
} 

,而不是在这个方法:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController { 
} 
+0

感谢您的建议,虽然我想你可能已经混为一谈两个想法。我不在代理方法中调用'layoutIfNeeded'。我在其他地方称我正在观察其他一些财产的变化。调用layoutIfNeeded时,使用自定义的'viewWillLayoutSubviews'方法不能正确调整内容视图的大小,但是,选择另一个选项卡项并通过'tabBarController:didSelectViewController'正确调整内容视图的大小 – Steals