2011-08-31 60 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浪費資源。你需要連接變換。 –

相關問題