【问题标题】:Autorotation issue with UITableViewCell and CALayerUITableViewCell 和 CALayer 的自动旋转问题
【发布时间】:2012-05-07 05:10:36
【问题描述】:

我有一个UITableViewCell 子类,其中backgroundView 设置为我自己的UIView 对象。这个UIView 对象包含三个CALayer 层。我实现了- (void)layoutSubviews,在那里我更新了我所有的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?

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

【问题讨论】:

    标签: ios uiview uitableview core-animation calayer


    【解决方案1】:

    想通了:

    1. 子类CALayer + 向其中添加子层
    2. CALayer- (void)layoutSublayers方法中实现子层的大小调整
    3. 子类UIView + 在其中覆盖+ (Class)layerClass

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

    【讨论】:

    • 我想我和你有同样的问题,我按照这些说明进行操作,但我仍然遇到同样的问题。旋转动画从纵向到横向都可以正常工作。表格单元格都伸展开来,变得更宽。但是,当您返回纵向时,单元格的背景会立即恢复为纵向宽度,而单元格的其余部分会收缩回较小的宽度。你有没有机会分享你的一些代码,看看我是否遗漏了一些微妙的东西?谢谢。
    • @GregG 很抱歉,我没有那个代码了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    • 1970-01-01
    相关资源
    最近更新 更多