CGAffineTransform缩放子视图问题

时间:2015-06-06 21:23:04

标签: ios objective-c swift user-interface

有没有一种简单的方法可以告诉CGAffineTransform不缩放缩放视图的子视图的帧? view.autoResizeMask = false在这种情况下似乎不起作用。唯一有点“工作”的是扭转子视图的转换,比如

for subview in view.subviews {
    (subview as! UIView).transform = CGAffineTransformInvert(view.transform)
}

然而,就计算时间而言,这需要花费10倍的时间并且不灵活。有人知道任何其他更有效的方法,缩放帧的起源,但没有它们的界限吗?

2 个答案:

答案 0 :(得分:0)

据我了解,这就是变换的工作方式。听起来你可能会更好地使用不会缩放超级视图的设计,尽管缩小子视图的解决方案非常聪明。 :)

您至少可以缓存反转变换以节省一些计算:

let inverse = CGAffineTransformInvert( view.transform )
for subview in view.subviews {
   (subview as! UIView).transform = inverse
}

答案 1 :(得分:0)

  

视图以圆圈排列。我有一个捏手势识别器,所以当我捏我缩放圆圈时,视图从中心进一步移动。但是,由于这种缩放,我不希望它们变得更大。

嗯,这是你的问题。你只是懒得进行缩放变换。随着捏合手势的进行,您需要实际放大圆圈并重新定位视图。