按下按钮时更改按钮大小

时间:2013-07-23 16:17:42

标签: ios objective-c uibutton

我的问题是如何在手指悬停在按钮上时更改按钮的大小?

很抱歉,如果这个问题已经得到解答,但我没有找到任何结果。 如果已经回答,请将线程作为答案链接:)

我已经用UIView尝试了它,然后用CGRectIntersectsRect监听它是否触摸了按钮。但我认为这是一种更简单的方法。

3 个答案:

答案 0 :(得分:1)

您可以添加观察该事件的方法。我认为,您正在寻找的是UIControlEventTouchDown

- (void)initOrSomething {
    UIButton *button = ...
    [button addTarget:self action:@selector(buttonPress:) forControlEvents:UIControlEventTouchDown];
}

- (void)buttonPress:(UIButton *)button {
    button.frame = CGRectMake(0, 0, 100, 100);
}

如果您将自己添加为目标,则应该可以更改选择器中的框架。

答案 1 :(得分:1)

- (IBAction)buttonPressed:(id)sender {
    CGRect f = self.button2.frame;
    f.origin.x += 10;
    f.size.width += 10; 
    self.button2.frame = f;
}

使用UIControlEvents TouchDown添加此操作。

希望这会有所帮助......

答案 2 :(得分:-1)

- (void)viewDidLoad {
    ...
    UILongPressGestureRecognizer *pressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(buttonPressed:)];
    pressGesture.minimumPressDuration = 0.0;
    pressGesture.delegate = self;
    [_button addGestureRecognizer: pressGesture];
    ...
}


- (void)buttonPressed:(UILongPressGestureRecognizer *)rec {
    switch (rec.state) {
        case UIGestureRecognizerStateBegan:
            [UIView animateWithDuration:0.1 animations: ^{
                 _button.transform = CGAffineTransformMakeScale(0.8, 0.8);
             }];
             break;
        case UIGestureRecognizerStateEnded: 
            [UIView animateWithDuration:0.1 animations: ^{
                 _button.transform = CGAffineTransformIdentity;
             }];
             break;
        default: 
             break;
    }

}

当用户按住按钮时,这基本上会使按钮缩小。当手指抬起时,按钮尺寸会恢复到原始尺寸。