创建横向的UITableView

时间:2022-03-28 16:28:02

UITableView只支持竖向显示,要实现横向的显示,可以设置tableview的transform属性为CGAffineTransformMakeRotate(-M_PI/2),

即逆时针旋转90°,然后对所有的cell设置transform属性为CGAffineTransformMakeRotate(M_PI/2),即顺时针转90°,这样所有的cell内容即可正确的横向显示。对于设置坐标的技巧,可以在设置完transform属性后,在进行坐标的设置,若在之前设置,坐标会被transform属性旋转而得不到正确的位置。

cell的宽度为heightforrowatindexpath返回值,但是其高度为tableview的宽度(tableview的frame的width),这应该是系统自动设定。所以cell的高度可能非常大,导致contentview显示出现问题。解决的方案可以再cell的layoutsubviews里重新设定cell的frame为指定大小。

如果需要添加tableheaderview等,需要将该view也转π/2才可正确显示,此view的坐标和view上的subview坐标起始位置同cell。而且,调整了tableview的frame以后,如果reloaddata可能会造成headerview宽度变为tableview的宽度导致不能正确显示(与cell非常相似),需要再次调整view的frame才可。详细的情况可以通过tableview的subviews查看该view的frame。
创建横向的UITableView