私の質問は、指がボタンの上にあるときにボタンのサイズを変更するにはどうすればよいですか?
この質問がすでに回答されている場合は申し訳ありませんが、結果が見つかりませんでした。すでに回答されている場合は、スレッドを回答としてリンクしてください:)
私はすでに UIView で試してから、ボタンに触れると CGRectIntersectsRect でリッスンしました。しかし、これを行うより簡単な方法があると思います。
私の質問は、指がボタンの上にあるときにボタンのサイズを変更するにはどうすればよいですか?
この質問がすでに回答されている場合は申し訳ありませんが、結果が見つかりませんでした。すでに回答されている場合は、スレッドを回答としてリンクしてください:)
私はすでに UIView で試してから、ボタンに触れると CGRectIntersectsRect でリッスンしました。しかし、これを行うより簡単な方法があると思います。
- (IBAction)buttonPressed:(id)sender {
CGRect f = self.button2.frame;
f.origin.x += 10;
f.size.width += 10;
self.button2.frame = f;
}
このアクションを UIControlEventTouchDown に追加します。
お役に立てれば...
そのイベントを監視するメソッドを追加できます。あなたが探しているのは UIControlEventTouchDown だと思います
- (void)initOrSomething {
UIButton *button = ...
[button addTarget:self action:@selector(buttonPress:) forControlEvents:UIControlEventTouchDown];
}
- (void)buttonPress:(UIButton *)button {
button.frame = CGRectMake(0, 0, 100, 100);
}
自分自身をターゲットとして追加すると、セレクターでフレームを変更できるはずです。
- (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;
}
}
これは基本的に、ユーザーがボタンを押している間、ボタンをアニメーション化して縮小します。指を離すと、ボタンのサイズが元のサイズに戻ります。