缩放UIView的大小

14

如何使用简单的方法按钮对UIView进行缩放,哪种方法是最好的?(例如)

(IBAction)zoomin:(int)distance
{
method here
}
(IBAction)zoomout:(int)distance
{
and here
}
2个回答

29

可以使用双手势识别来完成:

您只需要编写:

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

[[self view] addGestureRecognizer:twoFingerPinch];
}

通过这样操作,您已经初始化了一个实例,该实例将处理屏幕上(或在其上应用此方法的视图)的两个手指触摸事件。现在,定义一下如果识别到这两个手指时要执行什么操作:

- (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是任何浮点值,您可以根据应用程序的需求进行设置!希望这对您有所帮助!:)


2
你的回答很好,但是它不能平滑缩放:即每次停止缩放 - 捏合手势时,没有状态被保存并且它会将recognizer.scale重置为0:因此每次手势停止时都会导致缩放从最开始重新开始... - Taskinul Haque
我想要缩放,但是高度/宽度不能增加,但视图应该会缩放。这是可能的吗? - Shahbaz Akram

1

Swift 3, 4+

使用两个手指检测 UIView 的缩放。以下是一个在主视图上监听的示例:

override func viewDidLoad() {    
     var pinchGesture = UIPinchGestureRecognizer(target: self, action: #selector(pinchedView))
     view.isUserInteractionEnabled = true
     view.addGestureRecognizer(pinchGesture)    
}

// Listener

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接