如何避免在方向改变后调整UITableView(旋转)单元格的大小?

时间:2012-05-30 15:40:57

标签: ios ipad uitableview rotation

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

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

然后将其细胞向后旋转90度:

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

我希望桌子具有灵活的宽度。如果我没有将它设置为灵活,那么在方向改变后一切正常。但是,如果我这样做,细胞的内容就会错位并消失。表视图的“Autoresize Subviews”标志为false。

enter image description here

任何想法可能导致什么问题或可以使用哪些替代方案?

2 个答案:

答案 0 :(得分:4)

好吧,问题是因为桌面视图的宽度是灵活的,所以在旋转之后,单元格的宽度(实际上是高度)也增加了。我通过继承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正在调整其单元格大小。

答案 1 :(得分:1)

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

但是你不能用标准的scrollview做你想要的事情!?使用转换来旋转UI组件并不是最好的主意,因为您遇到了其他问题。