0
私はプログラムで作成したUIButton
を持っています。実際にはそれはUIButton
でなければならない、私はちょうどイメージの上のある領域をマークする可能性を持つ必要がある。UIButton - 移動とスケール
私はそれが必要な機能 - オブジェクトを移動し、サイズを変更します。これには2つの方法があります:
- (void) objMove:(id) sender withEvent:(UIEvent *) event
{
UIControl *control = sender;
UITouch *t = [[event allTouches] anyObject];
CGPoint pPrev = [t previousLocationInView:control];
CGPoint p = [t locationInView:control];
CGPoint center = control.center;
center.x += p.x - pPrev.x;
center.y += p.y - pPrev.y;
control.center = center;
}
- (void)objScale:(UIPinchGestureRecognizer *)recognizer
{
UIView *pinchView = recognizer.view;
CGRect bounds = pinchView.bounds;
CGPoint pinchCenter = [recognizer locationInView:pinchView];
pinchCenter.x -= CGRectGetMidX(bounds);
pinchCenter.y -= CGRectGetMidY(bounds);
CGAffineTransform transform = pinchView.transform;
transform = CGAffineTransformTranslate(transform, pinchCenter.x, pinchCenter.y);
CGFloat scale = recognizer.scale;
transform = CGAffineTransformScale(transform, scale, scale);
transform = CGAffineTransformTranslate(transform, -pinchCenter.x, -pinchCenter.y);
pinchView.transform = transform;
recognizer.scale = 1.0;
}
スケールが正常に機能します。オブジェクトのサイズを変更するまでは動きがよく見える - オブジェクトを増やすと指よりも動きが遅くなり、逆も同じ場合は元のサイズよりも小さいオブジェクトが指よりも速く動く。なぜこのように機能するのですか?
サイズ変更後にボタンサイズを更新しようとしましたか?彼はそれを移動しようとすると古いサイズに応答している可能性があります。 –
@Ricardo Alves、私はこのようなスムージーを試しました。 'pinchView.frame = CGRectMake(bounds.origin.x、bounds.origin.y、bounds.origin.x + bounds.size.width、bounds.origin.y + bounds.size.height); 'objScale'で、スケールを壊します=( – user5599807