2011-02-17 180 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") 
    } 
}