【问题标题】:I do I check a UIView's transform value?我要检查 UIView 的转换值吗?
【发布时间】:2016-02-18 23:42:51
【问题描述】:

如何检查特定 UIView 的变换是通过 CGAffineTransformIdentity 设置还是物理移动?

场景:
我可以通过更改其框架或通过转换来定位 UIView。一旦 UIView 通过变换或更改框架定位......我希望通过不同的按钮将其恢复为原始布局。

观察:
1) 如果我更改了 UIView 的框架,我可以通过原始框架值将其恢复。
2) 如果我对 UIView 进行了转换,我可以通过 CGAffineTransformIdentity 将其还原。

那么......我怎么会以编程方式知道差异?
我假设通过测试转换。究竟如何?

附:这纯粹是为了教化。

var transform = CGAffineTransformIdentity

if origFrame != containerView.frame {
   // TODO: Need to determine if reset transform CGAffineTransformIdentity vs moving containerView.
   print("1b) Reset Layout")

} else {
   print("1a) Animate Transform.")
   transform = CGAffineTransformScale(transform, 0.25, 0.25)
   transform = CGAffineTransformTranslate(transform, -400, -600)
}

UIView.animateWithDuration(1.0, animations: {
    self.containerView.transform = transform
})

【问题讨论】:

标签: uiview core-animation transform


【解决方案1】:

要测试 CGAffineTransform 是否相等,请使用函数 CGAffineTransformEqualToTransform。在您的情况下,与 CGAffineTransformIdentity 进行比较。在 ObjectiveC 中:

if (CGAffineTransformEqualToTransform(self.containerView.transform, CGAffineTransformIdentity))
    DoSomething;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 2020-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多