2

imageViewをズームイン/ズームアウトしようとしています。

私はそれをうまく管理したので、今はビューにいくつかのボタンを配置しようとしています。ボタンをタップしてその領域をズームします。

どうすればそれを実装できますか?

これが私のコードです

-(void)zoomHere:(UIButton *)sender{

    NSLog(@"zoom in");
    //[self performSelector:@selector()
    //         withObject:nil
    //         afterDelay:1.6f];


    CGAffineTransform transformer = CGAffineTransformScale(imageView.transform, 1.05, 1.05);



    if (transformer.a < 5) {
        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDuration: 0.2];
        imageView.transform = transformer;
        [UIView setAnimationDelegate:self];
        [UIView commitAnimations];
    }


}

ビューが読み込まれました

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIView *buttonView = [[UIView alloc]initWithFrame:CGRectMake(00.0, 20.0, 768, 1004.0)];

    zoomHere = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [zoomHere addTarget:self
               action:@selector(zoomHere:)
     forControlEvents:UIControlEventTouchDown];
    [zoomHere setTitle:@"ZoomIN" forState:UIControlStateNormal];
    zoomHere.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);
    [buttonView addSubview:zoomHere];

    buttonView.multipleTouchEnabled = YES;

    [self.view addSubview:buttonView];


}

それでもズームインしますが、ボタンが画面上にある領域にはズームインしません。

4

1 に答える 1

3

スケール変換を使用する場合は、おそらく次
のように変換変換を使用する必要があります。

CGAffineTransform scale = CGAffineTransformMakeScale(1.05, 1.05);
CGAffineTransform translate = CGAffineTransformMakeTranslation(10, 20);
CGAffineTransform delta = CGAffineTransformConcat(scale, translate);
imageView.transform = CGAffineTransformConcat(imageView.transform, delta);

これは、画像ビューのボタンの位置を知る方法です。

[imageView convertPoint:button.center fromView:self.view]

したがって、ボタンの座標と現在のスケールがわかっている場合は、新しい変換変換を計算できます。
しかし、私は、スクロールビューを使用して、その画像ビューをズームインおよびズームアウトしたいと思います。素敵なバウンスアニメーションやズームアニメーションを作成したり、パンやピンチを作成したりすることもできますが、当然のことながらそれはあなた次第です。

于 2012-10-16T16:24:16.500 に答える