2011-02-17 179 views
11

什麼是使用簡單的方法按鈕放大和縮小UIView的最佳方式。放大和縮小UIView

-(void)viewDidLoad 
{ 
UIPinchGestureRecognizer *twoFingerPinch = [[[UIPinchGestureRecognizer alloc] 
              initWithTarget:self 
              action:@selector(twoFingerPinch:)] 
              autorelease]; 

[[self view] addGestureRecognizer:twoFingerPinch]; 
} 

通過這個你已經初始化實例能夠將兩個手指感覺的護理 - : 你只寫了下來:(EI

(IBAction)zoomin:(int)distance 
{ 
method here 
} 
(IBAction)zoomout:(int)distance 
{ 
and here 
} 

回答

25

可以使用兩個手指手勢識別完成在屏幕上(或查看您對應用此方法) 現在定義做什麼,如果你已經認識了兩個手指:

- (void)twoFingerPinch:(UIPinchGestureRecognizer *)recognizer 
{ 
    NSLog(@"Pinch scale: %f", recognizer.scale); 
    CGAffineTransform transform = CGAffineTransformMakeScale(recognizer.scale, recognizer.scale); 
             // you can implement any int/float value in context of what scale you want to zoom in or out 
    self.view.transform = transform; 
} 

ŧ他上面定義的方法是通過UIButton的行動,自動調用不是,但它會解決簡單 您的問題如果嚴格想在IBAction爲使用變焦然後簡單地做到這一點:

-(IBAction)methodCalledOnClickingUIButton:(id)sender 
{ 
    if(sender==zoomInButton) 
    { 
     scaleValue++; 
    } 
    else if(sender==zoomOutButton) 
    { 
     scaleValue--; 
    } 
    CGAffineTransform transform = CGAffineTransformMakeScale(scaleValue,scaleValue); 
    self.view.transform = transform; 
} 

凡scaleValue任何浮點值..您可以根據您的應用需求進行設置! 我希望它能適合你! :)

+1

您的回答很好,但是這並不能流暢地放大:Ie每次停止縮放 - 捏合手勢時,都不保存狀態,它會將Recognizer.scale重置爲0:因此每次停止時都會從最初開始變焦。 。 。 。 – 2013-08-20 12:33:42

1

夫特3,4 +

/縮小//檢測變焦由兩個手指對UIView的,這裏例如偵聽主視圖(視圖

//override func viewDidLoad() { 

    var pinchGesture = UIPinchGestureRecognizer() 
    pinchGesture = UIPinchGestureRecognizer(target: self, action: #selector(pinchedView)) 
    view.isUserInteractionEnabled = true 
    view.addGestureRecognizer(pinchGesture) 

//} 

//監聽

@objc func pinchedView(sender:UIPinchGestureRecognizer){ 
    if(sender.scale > 1){ 
     print ("Zoom out") 
    }else{ 
     print("Zoom in") 
    } 
}