在您的viewWillTransition方法中,调用layoutIfNeeded()
,
尝试使用此方法在旋转后重置TableView的布局,
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
tableView.layoutIfNeeded()
}
或
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
tableView.layoutIfNeeded()
}
,
我也遇到了同样的问题。
我的视图控制器只有一个表视图,当我们倾斜时,我的意思是在导航推动或弹出期间更改方向曾经发生过。
尝试设置框架
在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,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,height);
}
}
仅供参考:
如果设置框架self.tableView.frame = CGRectMake(0,height);
不起作用,则可以尝试[self.tableView layoutIfNeeded]
,
再次在
中设置框架
viewDidLayoutSubviews
,
在一个视图控制器中(将其推入新视图控制器的父级)在 viewDidLayoutSubviews 上设置框架解决了在另一个视图控制器(在子视图控制器中,被推入的那个)设置框架的问题在 viewWillTransition 处解决了该问题:)但是我仍然不知道为什么没有针对该问题的通用解决方案。
本文链接:https://www.f2er.com/3146138.html