2011-08-31 119 views
0

我需要使用UIPinchGestureRecognizer而不使用CGAffineTransform, 来缩放视图,因此如何更改此代码以在没有CGAffineTransform的情况下执行此操作?如何在不使用CGAffineTransform的情况下缩放视图

- (IBAction)zoomma:(UIGestureRecognizer *)sender { 

    CGFloat factor = [(UIPinchGestureRecognizer *)sender scale]; 
    if (factor > 1) { 
     self.sgungaView.transform = CGAffineTransformMakeScale(lastScaleFactor + (factor-1), lastScaleFactor + (factor-1)); 
    } else { 
     self.sgungaView.transform = CGAffineTransformMakeScale(lastScaleFactor * factor, lastScaleFactor * factor); 
    } 

    if (sender.state == UIGestureRecognizerStateEnded) { 
     if (factor > 1) { 
      lastScaleFactor += (factor-1); 
     } else { 
      lastScaleFactor *= factor; 
     } 
    } 
} 

编辑:

不是一个杰作,但这个工程

- (void)zoomma:(UIGestureRecognizer *)sender { 

    CGFloat factor = [(UIPinchGestureRecognizer *)sender scale]; 
    if (factor > 1) { 
     float enlarge = lastScaleFactor + (factor-1); 
     [self.sgungaView setBounds:CGRectMake(0, 0, self.sgungaView.bounds.size.height + enlarge, self.sgungaView.bounds.size.height + enlarge)]; 
    } else { 
     float stringi = lastScaleFactor * factor; 
     [self.sgungaView setBounds:CGRectMake(0, 0, self.sgungaView.bounds.size.height - stringi, self.sgungaView.bounds.size.height - stringi)]; 
    } 

    if (sender.state == UIGestureRecognizerStateEnded) { 
     if (factor > 1) { 
      lastScaleFactor += (factor-1); 
     } else { 
      lastScaleFactor *= factor; 
     } 
    } 
} 

有一个更好的办法?

+2

为什么你不想使用CGAffineTransform? –

+0

我有一个方法,在该视图上应用旋转,我无法对变换进行连接 – Enlil

+1

为什么不能连接2个变换? – msgambel

回答

0

您可以将UIScrollView添加到您的视图并将您的元素(您的视图的元素)添加到UIScrollView。然后,您可以使用UIScrollView中的缩放删除项进行缩放。

这对我很好。

+0

不错的主意,你有一些代码可以分享吗? – Enlil

+0

明天我可以在明天工作 – Retterdesdialogs

+0

这是错误的。您正在为此使用UIScrollView浪费资源。你需要连接变换。 –

相关问题