同时缩放几个视图

时间:2012-05-14 09:08:09

标签: iphone objective-c ios cocoa uiview

我有一个名为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];
        }
}

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

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];
        }