Ios 更改视图';s值及其层';s值
我正在使用Ios 更改视图';s值及其层';s值,ios,objective-c,uiview,calayer,cabasicanimation,Ios,Objective C,Uiview,Calayer,Cabasicanimation,我正在使用CABasicAnimation设置图像视图的动画。 我将它的图层向左、右、上、下移动,有时我会将其放大,然后将其重置为原始大小,等等 我对它的层做了所有这些,所以我想我可能也必须移动和缩放真实的东西以及它的层,但当我用点击手势测试它时,看看它是否真的只是停留在它开始的地方,它不是。因此,就我而言,我不再需要更改其视图的帧 更改视图层的值是否也会更改其视图的值?aUIView只不过是CALayer的一个花式包装器,它带来了UIResponder事件和动画等诸多便利 许多UIView属性
CABasicAnimation
设置图像视图的动画。
我将它的图层向左、右、上、下移动,有时我会将其放大,然后将其重置为原始大小,等等
我对它的层
做了所有这些,所以我想我可能也必须移动和缩放真实的东西以及它的层
,但当我用点击手势测试它时,看看它是否真的只是停留在它开始的地方,它不是。因此,就我而言,我不再需要更改其视图
的帧
更改视图层的值是否也会更改其视图的值?a
UIView
只不过是CALayer
的一个花式包装器,它带来了UIResponder
事件和动画等诸多便利
许多UIView
属性实际上只是底层CALayer
属性的转发版本,定义这些属性纯粹是为了方便
- 视图的
和框架
属性应始终反映层等效物边界
稍微复杂一点,就视图而言,它属于transform
——而在cGraffeTransform
层上,它是
。如果层的变换可以表示为CATTransform3D
,则在层上设置后,您可以从视图中访问它。如果无法表示,则其值未定义cGraffeTransform
CALayer上更改框架时,您不需要更新UIView
上的框架
或变换
是正确的。尽管请注意,这些属性不会反映动画的“飞行中”值,但为此,您需要访问层的
还请注意,正如@par&@jrturton所提到的,如果层的转换不是标识转换,那么帧
是未定义的,因此不应该使用它 AUIView
不过是CALayer
的一个花式包装器,它带来了UIResponder
事件和动画等诸多便利
许多UIView
属性实际上只是底层CALayer
属性的转发版本,定义这些属性纯粹是为了方便
- 视图的
框架
和边界
属性应始终反映层等效物
transform
稍微复杂一点,就视图而言,它属于cGraffeTransform
——而在层上,它是CATTransform3D
。如果层的变换可以表示为cGraffeTransform
,则在层上设置后,您可以从视图中访问它。如果无法表示,则其值未定义
因此,是的,当在CALayer上更改框架时,您不需要更新UIView
上的框架
或变换
是正确的。尽管请注意,这些属性不会反映动画的“飞行中”值,但为此,您需要访问层的
还请注意,正如@par&@jrturton所提到的,如果层的转换不是标识转换,那么帧
是未定义的,因此不应该使用它 在视图或其图层上设置了除标识以外的变换后,frame
和bounds
属性不再有效,不应使用。@par-Yup,这绝对是一个很好的选择。谢谢你提醒我<代码>边界
在转换后仍然有效。只有frame
未定义。@jrturton-Hmm。。。那很有趣。总是假设两者都是未定义的,看看它们之间的联系有多紧密——但只是经过测试,你确实是对的。边界
完全不受当前变换的影响。我已经编辑了我的答案。一旦您在视图或其层上设置了除标识之外的变换,帧
和边界
属性不再有效,不应使用。@par-Yup,这绝对是一个很好的建议。谢谢你提醒我<代码>边界
在转换后仍然有效。只有frame
未定义。@jrturton-Hmm。。。那很有趣。总是假设两者都是未定义的,看看它们之间的联系有多紧密——但只是经过测试,你确实是对的。边界
完全不受当前变换的影响。我已经编辑了我的答案。