5

アニメーションを実装しようとしています。iPhone ギャラリーに入って画像を押すと、フルスクリーンの画像が表示されます。下に、ゴミ箱ボタンのあるツールバーが表示されます。このボタンを押すと、アニメーションで画像が削除されます。これを実装しようとしましたが、画像の変換を実装する方法、アップルの使用方法がわかりません。これは最高です、私ができることです:

[UIView transitionWithView:self.view duration:0.1 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
        [self.view addSubview:scrollImageView];
    } completion:^(BOOL finished) {
        [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionAllowUserInteraction animations:^{
            CGRect frame = scrollImageView.frame;
            frame.size = CGSizeMake(frame.size.width * 0.75, frame.size.height * 0.75);
            frame.origin = CGPointMake((size.width - frame.size.width) / 2, (size.height - frame.size.height) / 2);
            scrollImageView.frame = frame;
        } completion:^(BOOL finished) {
            [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionAllowUserInteraction animations:^{
                CGRect frame = scrollImageView.frame;
                frame.size = CGSizeMake(frame.size.width * 0.05, frame.size.height * 0.05);
                frame.origin = CGPointMake(size.width, size.height);
                scrollImageView.frame = frame;
                CGAffineTransform transform = scrollImageView.transform;
                CGAffineTransform rotatedTransform = CGAffineTransformRotate(transform, 45 * 3.14 / 180);
                scrollImageView.transform = rotatedTransform;
            } completion:^(BOOL finished) {
                [scrollImageView removeFromSuperview];
            }];
        }];
    }];

前もって感謝します。

更新 私が理解しているように、Core-Animation でこのアニメーションを実行することはできませんが、OpenGL を使用せずに、iPhone ギャラリーのアニメーションに最も似たアニメーションをアドバイスできる人はいますか?

4

4 に答える 4

6

このアニメーションには次の例を使用できます。

UIView *senderView = (UIView*)sender;

CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"transform"];
            anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
            anim.duration = 0.125;
            anim.repeatCount = 1;
            anim.autoreverses = YES;
            anim.removedOnCompletion = YES;
            anim.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(1.2, 1.2, 1.0)];
            //[senderView.layer addAnimation:anim forKey:nil];


UIBezierPath *movePath = [UIBezierPath bezierPath];
            [movePath moveToPoint:icon.center];
            [movePath addQuadCurveToPoint:senderView.center
                             controlPoint:CGPointMake(senderView.center.x, icon.center.y)];

            CAKeyframeAnimation *moveAnim = [CAKeyframeAnimation animationWithKeyPath:@"position"];
            moveAnim.path = movePath.CGPath;
            moveAnim.removedOnCompletion = YES;

            CABasicAnimation *scaleAnim = [CABasicAnimation animationWithKeyPath:@"transform"];
            scaleAnim.fromValue = [NSValue valueWithCATransform3D:CATransform3DIdentity];
            scaleAnim.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.1, 0.1, 1.0)];
            scaleAnim.removedOnCompletion = YES;

            CABasicAnimation *opacityAnim = [CABasicAnimation animationWithKeyPath:@"alpha"];
            opacityAnim.fromValue = [NSNumber numberWithFloat:1.0];
            opacityAnim.toValue = [NSNumber numberWithFloat:0.1];
            opacityAnim.removedOnCompletion = YES;

            CAAnimationGroup *animGroup = [CAAnimationGroup animation];
            animGroup.animations = [NSArray arrayWithObjects:moveAnim, scaleAnim, opacityAnim, nil];
            animGroup.duration = 0.5;
            [icon.layer addAnimation:animGroup forKey:nil];

コードを変更しました。次の変更を実行し、送信者ビューをself.viewとして設定し、必要に応じてアニメーションの終了点(現在はsenderView.center)を変更する必要があります

于 2012-06-21T12:41:35.897 に答える
4

少し遅れていることはわかっています。ただし、BCGenieEffect という名前の Ciechan のソリューションを確認する必要がありますここで見つけることができます。その純粋なコア アニメーションと非常に理解しやすいです。それがあなたが探しているものだと思います。

幸運を

于 2013-03-28T22:07:56.270 に答える
3

At this point the exact animation you are talking about cannot be done using Core Animation or UIKit. You would need to use OpenGL and apply the image as a texture and do your animation in there.

于 2012-06-21T11:07:18.410 に答える
0

「吸う」遷移アニメーションについて話していると思います。

トリガーすることは可能ですが、これはプライベートな移行であり、Apple はアプリを使用すると拒否する場合があります。

このコードは、遷移コード 103 を使用してそれを行う必要があります。

[UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:1.0]; [UIView setAnimationTransition: transitionIndex forView:containerView cache:NO]; [containerView addSubview: newView]; [oldView removeFromSuperview]; [UIView commitAnimations];

または、「suckEffect」と呼ばれるコア イメージ トランジションをネットで検索します。

于 2012-06-22T03:41:54.350 に答える