标签栏内有导航控制器.如果我推动该导航控制器,在推送动画期间,仍然可以在导航栏中看到以前的viewController的红色视图,但是只有当我在目标viewController(在右边)将hideBottomBarWhenPushing设置为yes时,才能看到.这是一个简单的例子,它可以在故事板中设置.
这是一个转换的动画.观看导航栏.您可以在后台看到以前的红色视图控制器,部分关闭屏幕,然后在最后消失.
有人解决了这个问题吗?我在做某些不支持的事情吗?这是一个bug吗?我绝对想要保持半透明的条形图,并且在按下时隐藏标签栏,但是我可以通过其他支持半透明标签栏的方式可靠地隐藏标签栏.
解决方法
#1右上角是黑色的
顶部栏右上角的模糊黑色部分是半透明UINavigationbar后面的UIWindow,backgroundColor默认为blackColor.
屏幕截图通过将推送视图的背景设置为clearColor来显示此信息.
作为解决方法,将UIWindow的backgroundColor属性设置为所需的背景颜色会修复此问题,只要您还具有将view设置为.Top的属性edgesForExtendedLayout.
func application(application: UIApplication,didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { window?.backgroundColor = UIColor.whiteColor() return true } class ViewToPushViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() self.edgesForExtendedLayout = UIRectEdge.Top // Or set it from the Attributes Inspector in IB. // See screenshot below. } }
我认为这是一个解决方法,因为我相信修改UIWindow的backgroundColor属性不一定是我们应该做的.也许,未来的iOS版本可以解决这个问题.
#2推动动画结束后,查看内容“向下移动”
如果您有一个底部布局指南和视图“向下移动”的子视图,我还没有找到任何理想的修复.但是,将选项卡栏设置为隐藏有助于某种程度.作为警告和预期,隐藏标签栏也会在推送动画期间立即将其从父视图控制器隐藏(尽管在弹出视图期间动画期间它再次变得可见).
class ViewToPushViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // ... self.tabBarController?.tabBar.hidden = true } }
确保ViewToPushViewController的hidesBottomBarWhenPushed属性在被推送之前设置为true(在界面构建器属性检查器中或在父视图控制器中的prepareForSegue方法中).
确保您还用返回按钮弹出视图时测试动画行为.