如何避免在方向更改后调整 UITableView(旋转)单元格的大小?
Posted
技术标签:
【中文标题】如何避免在方向更改后调整 UITableView(旋转)单元格的大小?【英文标题】:How to avoid the resize of the UITableView (rotated) cells after the orientation change? 【发布时间】:2012-05-30 15:40:57 【问题描述】:我正在通过将其旋转 90 度来实现水平 UITableView
horizontalShopsTableViewController.view.transform = CGAffineTransformMakeRotation(-M_PI/2);
然后将其单元格向后旋转 90 度:
cell.contentView.transform = CGAffineTransformMakeRotation(M_PI/2);
我希望表格具有灵活的宽度。如果我不将其设置为灵活,则方向更改后一切正常。但是,如果我这样做,单元格的内容就会错位并消失。表格视图的“Autoresize Subviews”标志为假。
任何想法可能是导致问题的原因或可以使用哪些替代方法?
【问题讨论】:
【参考方案1】:好的,问题是由于 tableview 的宽度是灵活的,在旋转之后单元格的宽度(实际上是高度)也增加了。我通过继承 UITableView 并覆盖 layoutSubviews 方法克服了这个问题,所以现在看起来像这样:
- (void)layoutSubviews
[super layoutSubviews];
for (UIView* child in [self subviews])
CGRect frame1 = child.frame;
if ([child isKindOfClass:[UITableViewCell class]])
frame1.size.width = 120;
child.frame = frame1;
无论如何,如果我将 Autoresize Subviews 显式设置为 false,我仍然不明白为什么 uitableview 会调整其单元格的大小。
【讨论】:
【参考方案2】:uuuuh...你想达到什么目的?自动调整大小系统当然不尊重视图的任何转换。可能你必须手动调整它的大小。
但是你不能用标准的滚动视图做你想做的事吗!?使用变换来旋转 UI 组件并不是最好的主意,因为您会遇到其他问题。
【讨论】:
我也在考虑滚动视图,但是我想从 uitableview 功能中受益,例如使用 nsfetchedresultscontroller 填充其数据的可能性以上是关于如何避免在方向更改后调整 UITableView(旋转)单元格的大小?的主要内容,如果未能解决你的问题,请参考以下文章
iPad - 带有 UITextField 的 UITableView - 方向改变时自动调整大小问题
方向更改后的 UIView addsubview:告诉视图调整大小