3

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

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

然后将其单元格向后旋转 90 度:

cell.contentView.transform = CGAffineTransformMakeRotation(M_PI/2);

我希望桌子具有灵活的宽度。如果我不将其设置为灵活,则方向更改后一切正常。但是,如果我这样做,单元格的内容就会错位并消失。表格视图的标志“自动调整子视图”为假。

在此处输入图像描述

任何想法可能是导致问题的原因或可以使用哪些替代方案?

4

2 回答 2

4

好的,问题是由于 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 会调整其单元格的大小。

于 2012-05-31T07:28:10.277 回答
1

uuuuh ...你想达到什么目的?自动调整大小系统当然不尊重视图的任何转换。可能您必须手动调整它的大小。

但是你不能用标准的滚动视图做你想做的事吗!?使用转换来旋转 UI 组件并不是最好的主意,因为您会遇到其他问题。

于 2012-05-30T15:55:49.213 回答