1

我有一个UIView被称为角色。在该视图中,用户可以添加几个UIImageView作为子视图。我为捏合、移动和旋转创建了手势方法。手势方法被添加到角色视图中。

对于移动,我使用了手势 translationInView 属性,它工作正常!我的问题是缩放。

缩放个人UIImageViews是可以的,没有问题,但是如何缩放所有这些?

我尝试缩放角色视图,它可以很好地按比例缩放所有子视图,但我不想更改角色视图,因为我将它用作画布来放置UIImageView我的角色。如果我用 a 更改字符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];
        }
}

但这会独立缩放每个视图,并且不会保持它们的相对距离。无论如何,是否可以按比例缩放每个视图?并保持它们的相对距离?

4

1 回答 1

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];
        }
于 2012-05-16T14:53:56.357 回答