如何在调整大小时禁用子calayer的缩放?

时间:2012-04-30 03:31:28

标签: ios calayer scale

我有一个带有图像的子CALayer,它总是在改变大小,但我不想缩放其内容(图像)以适应图层大小。相反,我想要的是始终保持图像大小不变,以便图像一点一点地出现。

无论如何都要实现这种效果?

由于

2 个答案:

答案 0 :(得分:3)

您应该使用遮罩或将图层的内容重力设置为kCAGravityTopLeft(有关更多值,请参阅https://developer.apple.com/library/mac/#documentation/graphicsimaging/reference/CALayer_class/Introduction/Introduction.html)。

默认值为kCAGravityResize,这就是缩放的原因。

答案 1 :(得分:0)

您不应为图层的框架设置动画或进行更改。 CALayer具有属性contentScale

您可以尝试这样的事情

let layer =  CALayer()
layer.frame = yourFrame
layer.contentsRect = CGRect(x: 0, y: 1, width: 1, height: 0)
layer.contentsGravity = .top
let contentsRectAnimation = CABasicAnimation(keyPath: "contentsRect")
contentsRectAnimation.fromValue = layer.contentsRect
contentsRectAnimation.toValue = CGRect(x: 0, y: 0, width: 1, height: 1)
contentsRectAnimation.beginTime = AVCoreAnimationBeginTimeAtZero
contentsRectAnimation.duration = yourDuration
contentsRectAnimation.isRemovedOnCompletion = false
contentsRectAnimation.fillMode = .forwards
layer.add(contentsRectAnimation, forKey: "animation")

这将使动画看起来像图层中的图像从上到下可见