2012-04-26 66 views
1

我有一个UITableViewCell子类,backgroundView设置为我自己的UIView对象。这个UIView对象包含三个CALayer层。我实施了- (void)layoutSubviews,在那里我更新了我所有的CALayer层。问题是自动旋转。UITableViewCell和CALayer的自转问题

当我从横向到纵向模式旋转,有这个表面问题:

在动画,我所有的CALayer层在纵向模式窄。

看来这家伙是正确的:

layoutSubviews的方向变化时被调用,视图的界限已经被设置为他们将在旋转的结论是什么。

来源:How to achieve smooth animation when using single-step rotation/How do I get the new frame size at the start of rotation?

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

回答

2

想通了:

  1. 子类CALayer +添加的子层到它
  2. 实施CALayer- (void)layoutSublayers方法的子层的尺寸调整
  3. 子类UIView +重写+ (Class)layerClass在它:

    + (Class)layerClass { 
        return [SubclassedCALayer class]; 
    } 
    
  4. 设置子类UIView作为UITableViewCell

+0

backgroundView我想我有同样的问题,你让我跟着这些指示,但我仍然有同样的问题。旋转动画从纵向到横向都能正常工作。表格单元全部伸出,变宽。但是,当您返回肖像时,单元格的背景将立即恢复为纵向宽度,而单元格的其余部分会缩小为较小的宽度。有没有可能分享一些你的代码,看看我是否有些微妙的东西?谢谢。 – 2014-05-13 16:13:18

+0

@GregG对不起,但我没有这个代码了。 – 2014-05-14 09:20:11