Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 使用hidesBottomBarWhenPushed时的iOS7奇怪动画_Objective C_Ios7_Uiviewcontroller_Uitableview_Pushviewcontroller - Fatal编程技术网

Objective c 使用hidesBottomBarWhenPushed时的iOS7奇怪动画

Objective c 使用hidesBottomBarWhenPushed时的iOS7奇怪动画,objective-c,ios7,uiviewcontroller,uitableview,pushviewcontroller,Objective C,Ios7,Uiviewcontroller,Uitableview,Pushviewcontroller,当按下另一个视图控制器时,我得到了一个非常奇怪的动画行为,该视图控制器的底部栏在按下时隐藏了HidesBottomBar。我发现的第一条线索是: 此奇怪的动画阴影仅在hidesBottomBarWhenPushed为true时出现。 我怎样才能解决这个问题 如果在视图的第二个视图中,控制器将出现 [self.navigationController setToolbarHidden:YES animated:NO]; 解决了我的问题: self.tabBarController.tabBar.

当按下另一个视图控制器时,我得到了一个非常奇怪的动画行为,该视图控制器的底部栏在按下时隐藏了HidesBottomBar。我发现的第一条线索是:

此奇怪的动画阴影仅在hidesBottomBarWhenPushed为true时出现。
我怎样才能解决这个问题

如果在
视图的第二个视图中,控制器将出现

[self.navigationController setToolbarHidden:YES animated:NO];
解决了我的问题:

self.tabBarController.tabBar.hidden=YES;

在第二个视图中,控制器就是要走的路。

关闭故事板中导航栏的
半透明属性。

在保持透明度的同时,一种优雅的方法是将其添加到根
UIViewController

- (void)viewWillAppear:(BOOL)animated {
    [UIView animateWithDuration:0.35f animations:^{
        self.tabBarController.tabBar.alpha = 1.0f;
    }];
}

- (void)viewWillDisappear:(BOOL)animated {
    [UIView animateWithDuration:0.35f animations:^{
        self.tabBarController.tabBar.alpha = 0.0f;
    }];
}

这样,您将在选项卡栏中获得一个漂亮的淡入/淡出动画。

利奥·纳坦是正确的。产生这种模糊效果的原因是,整个选项卡栏控制器正在导航控制器下方设置动画,默认情况下,该视图后面是一个黑色窗口。我将UIWindow背景颜色更改为白色,这解决了问题


hidesBottomBarWhenPushed似乎与UITabBars(iOS 7/8)配合得很好。

在我的例子中,我在每个选项卡中都有
TabBarViewController
UINavigationController
,面临类似的问题。我曾经

nextScreen.hidesBottomBarWhenPushed = true
pushViewToCentralNavigationController(nextScreen)
nextScreen
UITableViewController
子类和应用的自动布局时,它工作正常。但是,当nextScreen为
UIViewController
时,它不能正常工作。我发现它取决于
nextScreen
自动布局约束

所以我用这个代码更新了我的当前屏幕-

override func viewWillDisappear(animated: Bool) {

        super.viewWillDisappear(animated)

        self.tabBarController?.tabBar.hidden = true

    }

有关更多详细信息-

动画中有什么奇怪之处?你是说右边的闪烁吗?是的,黑色阴影在右上角闪烁。这是因为推送的视图控制器上的“扩展边”处于禁用状态。这就是我的应用程序中出现的情况。扩展边是“在顶部栏下,在底部栏下”。这是默认设置。试图将其关闭,但仍然存在相同的问题。现在无法通过链接访问视频。你介意把它放回去吗?这篇文章对我来说非常有价值,因为我也遇到了同样的问题,这篇文章似乎是我唯一能找到人们谈论它的地方。因为它是一个选项卡栏,而不是工具栏。然后
self.tabBarController.tabBar.hidden=YES?@IleaCristian这将产生另一个问题,底部将有一个空白。我猜您指的是这样一个事实:滚动视图(tableview)插图的设置方式可以很好地显示内容,但它也有机会进入半透明视图(导航栏/选项卡栏等)下方。在iOS7中,有一个新的viewcontroller属性来阻止这种情况发生。只需将self.automaticallyadjustsscrollviewsinsets设置为NO。但是,tableview也将位于导航栏下。解决方案是使用一些新的iOS7属性为表视图设置自定义contentInset:self.topLayoutGuide.length和self.bottomLayoutGuide.length。长度是条的高度。问题是,
self.bottomLayoutGuide.length
在某些情况下返回错误,当条被
tabBar.hidden=YES隐藏时。尝试旋转视图控制器,旋转是什么意思?这似乎真的很好。这是我的工作答案,在搜索了几个小时后。我从来没有想过要改变UIWindow的颜色。。。明亮的我必须留下评论说,6年后,这个bug仍然存在于iOS 13上,这个解决方法可以为我节省几个小时。顺便说一句,要支持暗模式,
window.backgroundColor
应该是
UIColor.systemBackground
。这是一个很棒的答案,因为您不必为正在显示或推送的其他视图控制器保持选项卡栏的可见性。