0

本のページのようにフォト ギャラリーをアニメーション化したいと考えています。左側または右側で UIanimationtransitioncurl を使用できる方法はありますか?

これはあなたが私に提案したコードです。viewdidload メソッドで割り当てを行いました。

self.title = @"TransitionsTitle";

// Create the container view which we will use for transition animation (centered horizontally).
CGRect frame = CGRectMake(round((self.view.bounds.size.width - kImageWidth) / 2.0),
                                                    kTopPlacement, kImageWidth, kImageHeight);
self.containerView = [[[UIView alloc] initWithFrame:frame] autorelease];
[self.view addSubview:self.containerView];

// The container view can represent the images for accessibility.
[self.containerView setIsAccessibilityElement:YES];
[self.containerView setAccessibilityLabel:NSLocalizedString(@"ImagesTitle", @"")];

// Create the initial image view.
frame = CGRectMake(0.0, 0.0, kImageWidth, kImageHeight);
self.mainView = [[[UIImageView alloc] initWithFrame:frame] autorelease];
self.mainView.image = [UIImage imageNamed:@"scene1.jpg"];
[self.containerView addSubview:self.mainView];

// Create the alternate image view (to transition between).
CGRect imageFrame = CGRectMake(0.0, 0.0, kImageWidth, kImageHeight);
self.flipToView = [[[UIImageView alloc] initWithFrame:imageFrame] autorelease];
self.flipToView.image = [UIImage imageNamed:@"scene2.jpg"];
CGAffineTransform rotate=CGAffineTransformMakeRotation(3.14/2);
[containerView setTransform:rotate];
[self.view addSubview:containerView];
rotate=CGAffineTransformMakeRotation(-3.14/2);
[mainView setTransform:rotate];
[self.containerView addSubview:mainView];
[self.mainView addSubview:flipToView];

// ボタン アクション イベントに配置しました。

- (IBAction)flipAction:(id)sender{
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:4];
    [UIView setAnimationTransition:([self.mainView superview] ?
                                        UIViewAnimationTransitionCurlDown : UIViewAnimationTransitionCurlDown)
                                        forView:self.containerView cache:YES];
    if ([flipToView superview])
    {
        [self.flipToView removeFromSuperview];
        [self.containerView addSubview:mainView];
    }
    else
    {
        [self.mainView removeFromSuperview];
        [self.containerView addSubview:flipToView];
    }
    [UIView commitAnimations];
}
4

1 に答える 1

1

はい、できます。これは私がそのために使用するコードです、

    self.containerViewParent = [[[UIView alloc] initWithFrame:CGRectMake(what ever you want)] autorelease]; //Create a container parent for the container view.

    self.containerView = [[[UIView alloc] initWithFrame:GRectMake(what ever you want)] autorelease]; //Create a container view for the view you wish to display.

    CGAffineTransform rotate = CGAffineTransformMakeRotation(-3.14/2);
    [containerViewParent setTransform:rotate]; //Rotate the containerViewParent.

    [self.view addSubview:containerViewParent];//Add it to the main view.

    rotate = CGAffineTransformMakeRotation(3.14/2);
    [containerView setTransform:rotate];//Rotate the containerView.

    [self.containerViewParent addSubview:containerView]; //Add it to the self.containerViewParent.
    [self.containerView addSubview:viewToDisplay]; //Add the view you want to display.

そして、トランジションを親ビューに適用し、

    [UIView beginAnimations:@"page transition" context:nil];
    [UIView setAnimationDuration:2.0];
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.containerView cache:YES];
    [UIView commitAnimations];

上下にカールすると左右にカールします。

**ビューを正しく表示するには、ビューのオフセットをいじる必要がありますが、私にとってはうまく機能します。

于 2011-01-24T09:56:01.287 に答える