我有一个名为UIView
的角色。在该视图中,用户可以添加多个UIImageView
作为子视图。
我为捏合,移动和旋转创建了手势方法。手势方法已添加到角色视图中。
为了移动我正在使用手势translationInView属性,它工作正常! 我的问题是剥落。
缩放个人UIImageViews
没问题,没有问题,但如何扩展所有问题?
我尝试缩放角色视图,它可以按比例精确缩放所有子视图,但我不想更改角色视图,因为我将它用作画布来放置UIImageView
来构建我的角色。如果我用CGAffineTransformScale
更改角色,我添加的所有新ImageView都会达到相同的比例。
我尝试了这个,但它不起作用:
if ([gesture state] == UIGestureRecognizerStateBegan || [gesture state] == UIGestureRecognizerStateChanged) {
CGFloat customScale = gesture.scale;
for (UIImageView *singleView in [self.devoCharacter subviews]) {
singleView.frame = CGRectMake(singleView.frame.origin.x / customScale, singleView.frame.origin.y /customScale, singleView.frame.size.width /customScale , singleView.frame.size.height /customScale);
[gesture setScale:1];
}
}
我想以这种方式缩小每个视图的大小及其相对距离,但整个事物从坐标原点扩展。
然后我尝试了这个:
if ([gesture state] == UIGestureRecognizerStateBegan || [gesture state] == UIGestureRecognizerStateChanged) {
CGFloat customScale = gesture.scale;
for (UIImageView *singleView in [self.devoCharacter subviews]) {
singleView.transform = CGAffineTransformScale(singleView.transform, customScale, customScale);
[gesture setScale:1];
}
}
但是这会独立地缩放每个视图,并且不会保持它们的相对距离。 无论如何只是按比例缩放每个视图?并保持相对距离?
答案 0 :(得分:1)
好的,我知道怎么做了。缩放每个视图,然后按比例缩放其中心。这解决了我的问题:
for (Part *singleView in [self.canvas subviews]) {
singleView.transform = CGAffineTransformScale(singleView.transform, customScale, customScale);
singleView.center = CGPointMake(singleView.center.x * customScale, singleView.center.y * customScale);
[gesture setScale:1];
}