在 Swift 中使用动画调整 CALayer 的大小

Posted

技术标签:

【中文标题】在 Swift 中使用动画调整 CALayer 的大小【英文标题】:Resize a CALayer with animation in Swift 【发布时间】:2015-07-25 20:09:24 【问题描述】:

我已将 CALayer 添加到图像中,执行以下操作:

var menulayer = CALayer()
menulayer.frame = CGRectMake(0.0, 0.0, menuimage.frame.size.width, menuimage.frame.size.height);
            menulayer.backgroundColor = bartint.CGColor
            menulayer.opacity = 1
            menuimage.layer.addSublayer(menulayer)

我想为图层设置动画,使其从左到右显示图像。我试过这个:

            let width = CGFloat(0)

            CATransaction.begin()
            CATransaction.setAnimationDuration(2.0)
            self.menulayer.bounds = CGRectMake(0, 0, width , 50)
            CATransaction.commit()

但是动画从图像的中心开始,我怎样才能让它从图像的左边缘开始?

【问题讨论】:

【参考方案1】:

因此,为图层的原点设置动画以将其向右移动,直到您的图像视图完全显示。您需要设置menuImage.layer.masksToBounds = true,这样当它滚动到图像视图的框架之外时,覆盖层是不可见的。

【讨论】:

非常感谢!任何有兴趣的人都可以在 swift 中使用 menuImage.layer.masksToBounds = true 糟糕。是的,我有时还是会使用 Objective-C 语法。

以上是关于在 Swift 中使用动画调整 CALayer 的大小的主要内容,如果未能解决你的问题,请参考以下文章

带有 CATransaction 的 CALayer 动画在视图调整大小之前表现不同

选择性地覆盖 CALayer 隐式动画

如何在更改其边界的动画期间强制重绘 CALayer

Swift : 为 CALayer 暂停 CABasicAnimation

CATextLayer 的动画截断

在 Swift 中动画自定义 UIView 属性