启用捏合以放大viewcontroller

时间:2013-08-07 14:08:18

标签: ios

我希望用户能够使用捏缩放我的应用程序,该应用程序使用Storyboard和以编程方式生成的按钮和标签在ViewController中生成View。在视图的属性检查器中,我检查了User Interaction EnabledMultiple Touch。但是没有任何缩放可能会起作用。

创建View重要部分的代码如下。

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSInteger xPipsOrigin = 0;
    NSInteger xPipsStep = 22.0;
    NSString* cards = @"AKQJT98765432";
    NSInteger yPipsOrigin = 100;

    if (UI_USER_INTERFACE_IDIOM()== UIUserInterfaceIdiomPhone){
        xPipsOrigin = 0;
        xPipsStep = 22.0;
        xPipsStep = 34.0;

    }
    else{
        xPipsOrigin = 100;
        xPipsStep = 40.0;
    }
    NSInteger xPipsCurrent = xPipsOrigin;

    self.countCards = 0;

    self.cardList = [NSMutableArray arrayWithCapacity:0];
    yPipsOrigin = 100;
    xPipsCurrent = xPipsOrigin;

    for( int x=0;x<[cards length]; x++ ){
        [cards substringWithRange:NSMakeRange(x,1)];
        UIButton *b= [UIButton buttonWithType:UIButtonTypeRoundedRect];
        xPipsCurrent += xPipsStep;
        [b setTitle:[cards substringWithRange:NSMakeRange(x,1)] forState:UIControlStateNormal];
        [b setTitle:@" " forState:UIControlStateDisabled];
        [b setFrame:CGRectMake(xPipsCurrent, yPipsOrigin, 20, 20)];
        [b setEnabled:YES];
        [b setUserInteractionEnabled:YES];
        [self.view addSubview:b];
        [b addTarget:self action:@selector(spadeButtonPressed:) forControlEvents:UIControlEventTouchUpInside];

    }

    xPipsCurrent = xPipsOrigin + xPipsStep/2;
    for( int x=0;x<[cards length]-1; x++ ){
        xPipsCurrent += xPipsStep;
        UILabel *lab = [[UILabel alloc] initWithFrame:CGRectMake(  0, 0, 20, 20)];
        lab.text = @"\u2660";
        lab.backgroundColor = [UIColor clearColor];
        lab.center = CGPointMake(xPipsCurrent+10, yPipsOrigin+10);
        [self.view addSubview:lab];
    }

}

如何在此应用中启用Pinch放大?

2 个答案:

答案 0 :(得分:4)

如果您想要启用缩放功能来放大UIView,您必须首先将其包装到UIScrollView

答案 1 :(得分:2)

虽然您可以使用User Interaction Enabled并尝试这样做,但可以更轻松地向UIGestureRecogniser添加UIView。这样它就可以为你处理大部分的设置代码,当它检测到一个pinch时会触发一个方法。

Objective-C中的基本示例:

UIPinchGestureRecognizer *pinchGesture = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handlePinchGesture:)];
[self.view addGestureRecognizer:pinchGesture];

- (void)handlePinchGesture:(id)sender
{
     NSLog(@"Recieved pinch");

     UIPinchGestureRecognizer *senderGR  = (UIPinchGestureRecognizer *)sender;
     NSLog(@"Scale is: %f", senderGR.scale);
}

在Swift中:

let pinchGestureRecognizer = UIPinchGestureRecognizer.init(target: self, action: #selector(ViewController.handlePinchGesture(_:)))
self.view.addGestureRecognizer(pinchGestureRecognizer)

func handlePinchGesture(sender:AnyObject) {
    print("Received pinch")
    let senderGR = sender as! UIPinchGestureRecognizer
    print("Scale is \(senderGR.scale)")
}