UIViewController hidesBottomBarWhenPushed在推/动画动画期间将UIView放在错误的位置

时间:2013-01-24 00:41:07

标签: ios uinavigationcontroller uikit core-animation uitoolbar

我在UIViewController内有两个UINavigationController。最上面的hidesBottomBarWhenPushed设置为YES。当我按下最顶层的UIViewController时,它的UITableView被推到应该高出的20px处(注意推出的视图控制器的顶部到单元格之间的单元高度的差异)。

Push UIViewController, Hide UIToolBar

在下面的屏幕截图中与单元格位置进行比较:

Pushed UIViewController, Hidden UIToolBar

此外,当我弹出最顶层的UIViewController时,它的UITableView被推到应该低于20px的位置(注意UITableView上方的额外深蓝色空间)。

enter image description here

我已尝试将-[UIViewController setHidesBottomBarWhenPushed:YES]次来电转移到-[UIViewController loadView]-[UIViewController viewWillAppear:]-[UIViewController viewDidAppear:]。那些回调都太迟了,因为UIViewController已被推送,因此UIToolbar不会被隐藏。

有没有办法避免这些差距?目前,我正在-[UINavigationController setToolbarHidden:YES animated:NO] UIViewController -[UIViewController viewDidAppear:] -[UINavigationController setToolbarHidden:NO animated:NO] UIViewController -[UIViewController viewDidAppear:] {{1}} {{1}} {{1}} {{1}} {{1}} {{1}}这不太理想。

1 个答案:

答案 0 :(得分:0)

让我们说 A 推动 B 。根据你的描述,听起来B不应该知道无论它呈现什么都有一个工具栏。相反,当A推B时,A知道B不应该有A工具栏。那么为什么你不能在启动B时设置它?

BController *b = [[BController alloc] init];
b.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:b animated:YES];

或者,如果您认为B确实需要控制此行为,则可以将其置于B&#39 {s} init方法中。