【发布时间】: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
})
【问题讨论】:
-
不起作用。如果视图被转换到左上角(缩小和移动)或仅仅移动,我总是得到“1”作为比例因子。
-
关于变换矩阵如何工作的信息是正确的并且与您的问题相关。 developer.apple.com/library/ios/documentation/GraphicsImaging/…
标签: uiview core-animation transform