更改视图的值及其图层的值
Changing a view's values and its layer's values
我正在使用 CABasicAnimation
为 ImageView 设置动画。
我将它的图层向左、向右、向上和向下移动,有时我会将它放大然后将其重置为原始大小等。
我正在对它的 layer
进行所有这些操作,所以我想我可能还需要移动和缩放真实的东西以及它的 layer
但是当我用点击手势测试它时看看它是否真的只是停留在它开始的地方,它不是。因此,就我而言,我不再需要更改其 view
的框架。
更改视图图层的值是否也会更改其视图的值?
A UIView
只不过是 CALayer
的精美包装器 – 在 许多 其他事物中带来 UIResponder
事件和动画便利.
许多 UIView
属性实际上只是基础 CALayer
属性的转发版本,定义纯粹是为了方便。
视图的 frame
和 bounds
属性应始终反映图层等效项。
transform
稍微复杂一些,至于视图它的类型是 CGAffineTransform
– 而在 layer
上它是 CATransform3D
。如果层的变换可以表示为 CGAffineTransform
,那么在层上设置它后,您将能够从视图访问它。如果不能表示,那么它的值是未定义的。
因此,是的,您说在 UIView
上更改 CALayer
时不需要更新 frame
或 transform
是正确的。尽管请注意,这些属性不会反映动画的 'in-flight' 值——为此您需要访问图层的 presentationLayer
。
另请注意,正如@par 和@jrturton 提到的那样,如果图层的变换不是恒等变换,则 frame
未定义,因此您不应使用它。
我正在使用 CABasicAnimation
为 ImageView 设置动画。
我将它的图层向左、向右、向上和向下移动,有时我会将它放大然后将其重置为原始大小等。
我正在对它的 layer
进行所有这些操作,所以我想我可能还需要移动和缩放真实的东西以及它的 layer
但是当我用点击手势测试它时看看它是否真的只是停留在它开始的地方,它不是。因此,就我而言,我不再需要更改其 view
的框架。
更改视图图层的值是否也会更改其视图的值?
A UIView
只不过是 CALayer
的精美包装器 – 在 许多 其他事物中带来 UIResponder
事件和动画便利.
许多 UIView
属性实际上只是基础 CALayer
属性的转发版本,定义纯粹是为了方便。
视图的
frame
和bounds
属性应始终反映图层等效项。transform
稍微复杂一些,至于视图它的类型是CGAffineTransform
– 而在layer
上它是CATransform3D
。如果层的变换可以表示为CGAffineTransform
,那么在层上设置它后,您将能够从视图访问它。如果不能表示,那么它的值是未定义的。
因此,是的,您说在 UIView
上更改 CALayer
时不需要更新 frame
或 transform
是正确的。尽管请注意,这些属性不会反映动画的 'in-flight' 值——为此您需要访问图层的 presentationLayer
。
另请注意,正如@par 和@jrturton 提到的那样,如果图层的变换不是恒等变换,则 frame
未定义,因此您不应使用它。