1

我有一个设置为我自己的对象的UITableViewCell子类。该对象包含三层。我实现了我更新所有图层的地方。问题是自转。backgroundViewUIViewUIViewCALayer- (void)layoutSubviewsCALayer

当我从横向模式旋转到纵向模式时,会出现以下外观问题:

在动画过程中,我所有的CALayer图层都像纵向模式一样窄。

看来这个人是对的:

layoutSubviews方向更改期间调用时,视图的边界已经设置为旋转结束时的边界。

来源:如何在使用单步旋转时实现平滑动画/如何在旋转开始时获得新的帧大小?

那么,我应该在哪里更新我的图层以实现正确的自动旋转?视图已经在旋转它们,所以我想不需要做任何自定义动画,只需调整大小。正确的?

4

1 回答 1

2

Figured it out:

  1. subclass CALayer + add sublayers into it
  2. implement resizing of sublayers in CALayer's - (void)layoutSublayers method
  3. subclass UIView + override + (Class)layerClass in it:

    + (Class)layerClass {
        return [SubclassedCALayer class];
    }
    
  4. set the subclassed UIView as backgroundView of UITableViewCell

于 2012-04-30T20:08:12.810 回答