我通过将其旋转90度来实现水平UITableView

horizontalShopsTableViewController.view.transform = CGAffineTransformMakeRotation(-M_PI/2);

然后将其单元旋转回90度:
cell.contentView.transform = CGAffineTransformMakeRotation(M_PI/2);

我希望桌子有弹性的宽度。如果我未将其设置为灵活状态,则更改方向后一切正常。但是,如果这样做,单元格的内容将放错位置并消失。表格视图的标志“Autoresize Subviews”为假。

有什么想法可能引起问题,或者可以使用哪些替代方法?

最佳答案

好的,问题在于,由于表格视图的宽度是灵活的,因此在旋转之后,单元格的宽度(实际上是高度)也增加了。我通过子类化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为什么要调整其单元格的大小。

10-07 19:42
查看更多