簡體   English   中英

如何基於Pan手勢放大/縮小UIView?

[英]How to Zoom in/out an UIView based on Pan gesture?

我想基於UIPanGesture放大/縮小UIView 我不知道如何將translationInView為Scaling參數。 (我知道如何根據捏合手勢放大/縮小)。

我正在試圖弄清楚如何做到這一點,但到目前為止還沒有這樣的運氣。

要進行縮放,您需要UIPinchGestureRecognizer,而不是Pan

- (IBAction)handlePinch:(UIPinchGestureRecognizer *)recognizer {    
    recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale);
    recognizer.scale = 1;    
}

另請查看鏈接。

更新:

從UIPanGestureRecognizer接收觸摸信息的唯一方法是

- (NSUInteger)numberOfTouches;
- (CGPoint)locationOfTouch:(NSUInteger)touchIndex inView:(UIView*)view;

所以也許你可以嘗試這樣的事情:

    CGFloat old_distance = 0.0; // keep it somewhere between touches!

- (void)panGestureRecognized:(UIPanGestureRecognizer *)recognizer {
    if (recognizer.numberOfTouches == 2) {
        CGPoint a = [recognizer locationOfTouch:0 inView:recognizer.view];
        CGPoint b = [recognizer locationOfTouch:1 inView:recognizer.view];
        CGFloat xDist = (a.x - b.x);
        CGFloat yDist = (a.y - b.y);
        CGFloat distance = sqrt((xDist * xDist) + (yDist * yDist));

        CGFloat scale = 1;
        if (old_distance != 0) {
            scale = distance / old_distance;
        }
        old_distance = distance;
        recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, scale, scale);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM