Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 更改视图';s值及其层';s值_Ios_Objective C_Uiview_Calayer_Cabasicanimation - Fatal编程技术网

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所提到的,如果层的转换不是标识转换,那么
是未定义的,因此不应该使用它

A
UIView
不过是
CALayer
的一个花式包装器,它带来了
UIResponder
事件和动画等诸多便利

许多
UIView
属性实际上只是底层
CALayer
属性的转发版本,定义这些属性纯粹是为了方便

  • 视图的
    框架
    边界
    属性应始终反映层等效物

  • transform
    稍微复杂一点,就视图而言,它属于
    cGraffeTransform
    ——而在
    层上,它是
    CATTransform3D
    。如果层的变换可以表示为
    cGraffeTransform
    ,则在层上设置后,您可以从视图中访问它。如果无法表示,则其值未定义

因此,是的,当在
CALayer上更改
框架时,您不需要更新
UIView
上的
框架
变换
是正确的。尽管请注意,这些属性不会反映动画的“飞行中”值,但为此,您需要访问层的


还请注意,正如@par&@jrturton所提到的,如果层的转换不是标识转换,那么
是未定义的,因此不应该使用它

在视图或其图层上设置了除标识以外的变换后,
frame
bounds
属性不再有效,不应使用。@par-Yup,这绝对是一个很好的选择。谢谢你提醒我<代码>边界
在转换后仍然有效。只有
frame
未定义。@jrturton-Hmm。。。那很有趣。总是假设两者都是未定义的,看看它们之间的联系有多紧密——但只是经过测试,你确实是对的。
边界
完全不受当前
变换的影响。我已经编辑了我的答案。一旦您在视图或其层上设置了除标识之外的变换,
边界
属性不再有效,不应使用。@par-Yup,这绝对是一个很好的建议。谢谢你提醒我<代码>边界
在转换后仍然有效。只有
frame
未定义。@jrturton-Hmm。。。那很有趣。总是假设两者都是未定义的,看看它们之间的联系有多紧密——但只是经过测试,你确实是对的。
边界
完全不受当前
变换的影响。我已经编辑了我的答案。