【发布时间】:2018-08-28 04:05:02
【问题描述】:
我正在尝试使用捏合手势(在基本视图上)一次缩放多个 UIView。虽然它看起来很直,但我很难让它正常工作。
假设我有 3 个像这样堆叠的视图
----------------------------------------------
| |
| ------- -------- |
| | | | | |
| | V1 | --------------- | | |
| | | X | v2 | Y | v3 | |
| ------- --------------- | | |
| -------- |
---------------------------------------------
捏紧时,我通过使用缩放属性计算变换来缩放 3 个视图中的每一个
CGAffineTransform v1Transform = CGAffineTransformScale( v1.transform,recognizer.scale, recognizer.scale);
v1.transform = v1Transform
CGAffineTransform v2Transform = CGAffineTransformScale( v2.transform,recognizer.scale, recognizer.scale);
v2.transform = v2Transform
CGAffineTransform v3Transform = CGAffineTransformScale( v3.transform,recognizer.scale, recognizer.scale);
v3.transform = v3Transform
并使用当前比例改变每个视图的中心,像这样
CGPoint v1Center = CGPointMake(v1.center.x * recognizer.scale, node.imgView.center.y * recognizer.scale);
CGPoint v2Center = CGPointMake(v2.center.x * recognizer.scale, node.imgView.center.y * recognizer.scale);
CGPoint v3Center = CGPointMake(v3.center.x * recognizer.scale, node.imgView.center.y * recognizer.scale);
v1.cente = v1Center;
v2.center = v2Center;
v3.center = v3Center;
虽然这会均匀地缩放 3 个视图中的每一个,但我觉得中心点太偏离并且缩放看起来更奇怪。请检查以下问题的屏幕截图
如您所见,尽管比例按预期工作,并且所有 3 个视图一起缩放。中心仍然是一个问题。我希望从所有 3 个视图的实际位置进行缩放,我不希望它们在 gif 中像这样移动。
有办法吗?非常感谢任何帮助
【问题讨论】:
-
不要改变视图中心的位置
标签: ios objective-c uiview transform scale