所以我有一个应用程序,我正在尝试优化所有方向。但是我遇到了表格视图和自动旋转的问题。这是它在Portrait中的样子:
现在,当我旋转设备时,它看起来像这样:
但是,当我触摸桌子时,它会自行修复并看起来像这样:
那么,如何在旋转视图时自动实现,而不是等待用户点击桌面?谢谢!
我尝试使用以下代码但没有成功:
-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation) fromInterfaceOrientation {
[self.tableView reloadData];
}
答案 0 :(得分:1)
所以问题不在于表格,而在于我正在使用的遮罩层。看起来CALayers不支持自动调整,所以我使用以下代码:
-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation) fromInterfaceOrientation {
maskLayer.frame = self.maskView.bounds;
}
旋转时没有动画。完成旋转,然后激活面具。这很奇怪,但它对我有用。如果有人有更好的解决方案,我会删除我的答案并将其交给其他人。
答案 1 :(得分:0)
我不知道这是否与你的外观完全相同(我无法从你的照片中看出来)。细胞在桌子底部渐渐变成黑色。此代码位于UIViewController中,并将表视图添加为子视图。表格视图为蓝色背景颜色。这完全适用于轮换。
-(void)viewWillLayoutSubviews {
self.maskGradient.frame = self.view.bounds;
}
- (void)viewDidLoad {
[super viewDidLoad];
self.maskGradient = [CAGradientLayer layer];
self.maskGradient.frame = self.view.bounds;
self.maskGradient.colors = @[(id)[[UIColor colorWithRed:0 green:0 blue:0 alpha:1] CGColor],(id)[[UIColor colorWithRed:0 green:0 blue:0 alpha:1] CGColor],(id)[[UIColor colorWithRed:0 green:0 blue:0 alpha:.2] CGColor]];
self.maskGradient.locations = @[@0.0f,@0.9f,@1.00f];
self.view.layer.mask = self.maskGradient;
// other code to populate the table
[self.tableView reloadData];
}
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
cell.backgroundColor = [UIColor clearColor];
}
答案 2 :(得分:0)
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return YES;
//return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
返回是需要自动转移。