2

UIView とそのすべてのコンテンツのスケーリングをブロックしない方法でアニメーション化したいと思います。現在、私はこれを行っています...

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.1];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
            CGAffineTransform transform = CGAffineTransformMakeScale(1.1,1.1);
            self.view.transform = transform;
    [UIView commitAnimations];

しかし、それはブロックしています。私はむしろ次のようなものを使用したい...

[UIView animateWithDuration:0.2
                     animations:^{
                CGAffineTransform transform = CGAffineTransformMakeScale(1.1,1.1);
                self.view.transform = transform;
                     }];

...しかし、animateWithDuration は CALayer/CGAffineTransform 変換では機能しません。何もブロックせずに同じアニメーションを実現するにはどうすればよいですか?

4

1 に答える 1

5

使用してみてください:

[UIView animateWithDuration:0.2
 animations:^{
   CGAffineTransform transform =
     CGAffineTransformScale(CGAffineTransformIdentity, 2.0, 2.0);
 self.view.transform = transform;
 }];

この素晴らしい回答に役立つメモを追加するだけで、ほとんどの場合、ラスター化を有効にしたいので、滑らかに見えます

self.view.layer.shouldRasterize = YES;
[UIView animateWithDuration:0.2
 animations:^{
   CGAffineTransform transform =
     CGAffineTransformScale(CGAffineTransformIdentity, 0.5, 0.5);
 self.view.transform = transform;
 }];
于 2013-05-14T15:38:49.733 に答える