3

私はUIImageViewからアニメーション化する必要がありますsize (0,0) --> (93,75)

私は次のものを持っています

  [UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionTransitionNone
                 animations:^{
                     imgButton.layer.anchorPoint = CGPointMake(imgButton.bounds.size.width/2, imgButton.bounds.size.height/2);
                     CGRect btnFrame = imgButton.frame;
                     btnFrame.size.width = 105;
                     btnFrame.size.height = 85;
                     imgButton.frame = btnFrame;
                 }
                 completion:^(BOOL finished) {
                     [self animageButton2:imgButton];
                 }];

これは機能していますが、私が抱えている唯一の問題は、アニメーションの中心からではなく、UIImageView左上隅からアニメーション化されていることです。

誰か手がかりを得ましたか?

4

4 に答える 4

4

Borrdenの助けを借りて解決しました。これが私の解決策でした。

最初にイメージビューを作成します

UIImageView *imgLineup = [[UIImageView alloc]initWithFrame:CGRectMake(10, y, 93, 75)];
imgLineup.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.0, 0.0);

そして次へ。

[UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseInOut
                     animations:^{
                         imgButton.layer.anchorPoint = CGPointMake(0.5, 0.5);
                         imgButton.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.0, 1.0);

                     }
                     completion:^(BOOL finished) {
                        NSLog(@"done");
                     }];
于 2013-06-28T12:00:08.713 に答える
2

これで試してみてください。インポート#import <QuartzCore/QuartzCore.h>してから、uimageView を self.view の subView に追加しながら、コードの下に配置します

CABasicAnimation *zoomAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
[zoomAnimation setDuration:0.8];
[zoomAnimation setRepeatCount:1];
[zoomAnimation setFromValue:[NSNumber numberWithFloat:0.1]];
[zoomAnimation setToValue:[NSNumber numberWithFloat:1.0]];
[zoomAnimation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[[imageView layer] addAnimation:zoomAnimation forKey:@"zoom"];
于 2013-06-28T11:14:03.753 に答える
0

あなたが達成しようとしているのは、スケール変換、つまり UIView サイズをサイズ(0,0)からサイズ(w,h)にアニメーション化することです。によっても同じ効果が得られCGAffineTransformMakeScaleます。

最初にビューを作成するときに適用しCGAffineTransformMakeScale(0.0,0.0)、次にアニメート サイズを に拡大しCGAffineTransformMakeScale(1.0,1.0)ます。

コード:

// Create the view and apply correct frame
UIView *tagView = [[UIView alloc] initWithFrame:CGRectMake(50, 100, 100, 100)];
tagView.tag = kTag;
//Apply scale transform, to make size(0,0) 
tagView.transform = CGAffineTransformMakeScale(0,0);
[self.view addSubview:tagView];

/// ............

UIView *tagView = [self.view viewWithTag:kTag];
//Now animate the view size scale up
[UIView animateWithDuration:0.5
        delay:0
        options:UIViewAnimationOptionCurveEaseOut
        animations:^{
                        tagView.transform = CGAffineTransformMakeScale(1.0,1.0);
                    }
        completion:NULL
 ];

このアニメーションは、必要に応じてビューの中心点で発生するため、トリッキーな と をいじるanchorPoint必要がなくなります。とframeの関係の詳細については、この回答を参照してください。frameanchorPoint

于 2013-06-28T10:34:59.407 に答える