[英]Orientation changes when pop back to the initial viewcontroller using UINavigationController iOS 6
[英]iOS part of viewcontroller goes black when orientation changes
当我在特定方向加载时更改视图控制器方向时,屏幕的一部分在底部变为空白。
重现步骤:
视图控制器的底部变黑。
我能够重现 10 次中的 7 次。
供参考:
我的 Viewcontroller 只有表视图,所有单元格都有自动布局约束。 试图了解它发生的原因,我想修复它。
有关重现问题的更多详细信息:
基本上,只有当您将设备倾斜 position 并推送或弹出视图 controller 时,您才能重现此问题,并且当页面尝试加载时,您必须更改方向然后问题发生。
(双关语……大声笑)换句话说,您必须像在方向盘一样倾斜设备:)。
仅当您将设备用作方向盘时才会发生此问题:)
在您的 viewWillTransition 方法中调用 layoutIfNeeded()
尝试使用此方法重置 TableView 旋转后的布局,
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
tableView.layoutIfNeeded()
}
或者
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
tableView.layoutIfNeeded()
}
我也遇到了同样的问题。
我的观点 controller 只有一个表格视图,当我们倾斜时,我的意思是在导航推送或弹出期间改变方向,这曾经发生过。
尝试在viewDidLayoutSubviews
中设置框架
-(void)viewDidLayoutSubviews{
CGRect screen = [[UIScreen mainScreen] bounds];
CGFloat width = CGRectGetWidth(screen);
CGFloat height = CGRectGetHeight(screen);
CGRect frame = self.tableView.frame;
// To check if there's any mismatch between the sizes of screen and tableview then set the tableview frame same as screen frame.
if (CGRectGetHeight(frame) != height && CGRectGetWidth(frame) != width) {
self.tableView.frame = CGRectMake(0, 0, width, height);
}
}
或尝试在viewWillTransitionToSize
中设置框架
-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator{
[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
CGRect screen = [[UIScreen mainScreen] bounds];
CGFloat width = CGRectGetWidth(screen);
CGFloat height = CGRectGetHeight(screen);
CGRect frame = self.tableView.frame;
if (CGRectGetHeight(frame) != height && CGRectGetWidth(frame) != width) {
self.tableView.frame = CGRectMake(0, 0, width, height);
}
}
供参考:
如果设置框架self.tableView.frame = CGRectMake(0, 0, width, height);
不起作用,那么您可以尝试[self.tableView layoutIfNeeded]
再次设置框架
viewDidLayoutSubviews
在一个视图控制器(推送新视图控制器的父级)中,在viewDidLayoutSubviews设置框架解决了另一个视图控制器中的问题(子视图 controller,一个正在被推送的)在viewWillTransition设置框架解决了问题:) 但我仍然不知道为什么这个问题没有通用的解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.