core-animation - 如何获得转换后的 CALayer 的实际大小?

标签 core-animation calayer catransform3d

我有一个 200x200 pixel CALayer我应用了两个转换的实例:

  • 缩小到 50%
  • 应用了 3D 透视图

  • 现在我想将转换后的图层与另一图层对齐。为此,我需要转换层的大小(宽度和高度)。
    问题是 layer.bounds仍然返回 200x200对于图层,但由于透视变换,实际可见宽度较小,高度大于 200 .表示层的边界返回 0 , 顺便一提。
    有什么方法可以确定转换后 CALayer 的确切大小吗?和屏幕上画的一模一样吗?

    最佳答案

    终于弄明白了:bounds应用变换时保持不变,但改变的是图层的 frame属性(property)。

    解决方法是使用 layer.frame.size而不是 layer.bounds.size .

    这在核心动画编程指南中提到:

    Layers have an implicit frame that is a function of the position, bounds, anchorPoint, and transform properties.

    关于core-animation - 如何获得转换后的 CALayer 的实际大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5537586/

    相关文章:

    ios - 我可以通过从图层的animationForKey :?返回CAAnimationGroup来重用它吗

    objective-c - CALayer 不显示

    ios - 将 UIImage 扭曲成平行四边形

    core-animation - CATransform3D 行/列顺序

    iphone - 具有方向和动画的自定义 UIView layoutSubviews?

    cocoa-touch - 跟踪核心动画动画

    ios - 带指示器的圆形进度条

    objective-c - 死锁 : How do you determine if a call may cause unsafe painting off of the main thread for iOS?

    uiview - 快速转换动画错误?

    objective-c - 如何在两个 CATransform3D 之间手动插值?