我有一个UIView
,我向它申请CGAffineTransform
。我希望能够知道视图的框架如果未应用转换。
我正在寻找一个(简单的)解决方案来处理变换是“零变换”(不可逆)的情况。
我认为以下不适用于“零变换”。
CGRect result ;
CGAffineTransform transform = self.transform ;
result = CGRectApplyAffineTransform(self.frame, CGAffineTransformInvert(transform)) ;
return result ;
我需要为动画执行此操作:
transform
“设置为0”。插入视图,但所有元素的框架都像视图不在此处一样。transform
“设置为1”。我的变换是一种比例变换。
答案 0 :(得分:13)
transform
不会影响center
或bounds
。
所以,你可以用这个简单的代码来计算它:
CGPoint center = view.center;
CGSize size = view.bounds.size;
CGRect frameForTransformIdentity = CGRectMake(
center.x - size.width / 2,
center.y - size.height / 2,
size.width,
size.height
);
答案 1 :(得分:0)
Swift 4.1版本:
extension UIView
{
var frameWithoutTransform: CGRect
{
let center = self.center
let size = self.bounds.size
return CGRect(x: center.x - size.width / 2,
y: center.y - size.height / 2,
width: size.width,
height: size.height)
}
}