5

こんにちは、私は1つのアプリケーションを開発しています.1つのビューのアニメーションを左から右、右から左に移動し、そのビューに含まれるラベルの値を変更しました.しかし、左または右のボタンをクリックするとそのビューが削除され、新しいビューは古いビューを上書きしています。だから私は上書きしたくありません。新しいビューを追加したいだけです。私のコードは

    -(void)centerAnimation1:(id)sender
     {
         UIView *currentView = daysview;
            theWindow = daysview;
         // set up an animation for the transition between the views
        CATransition *animation = [CATransition animation];
            animation.delegate = self;
        [animation setDuration:0.4];
        [animation setType:kCATransitionMoveIn];

         if(rhtolft)
         {
             [animation setSubtype:kCATransitionFromLeft];
         }
         else
         {
             [animation setSubtype:kCATransitionFromRight];
         }
        [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
        [[theWindow layer] addAnimation:animation forKey:@"SwitchToView1"];
            [currentView removeFromSuperview];
        }


        - (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag{

             if(animate)
             {
                 CATransition *animation = [CATransition animation];
                 animation.delegate = self;
                 [animation setDuration:0.4];
                 [animation setType:kCATransitionMoveIn];
                 if(rhtolft)
                 {
                     [animation setSubtype:kCATransitionFromLeft];
                     rhtolft=NO;
                 }
                 else
                 {
                     [animation setSubtype:kCATransitionFromRight];                
                 }
                 [[theWindow layer] addAnimation:animation forKey:@"SwitchToView1"];
                 animate=NO;
                 [self.view addSubview:daysview];
             }
         }

左ボタンと右ボタンのアクション メソッドで centerAnimation1 メソッドを呼び出すだけです。これを呼び出した後、ラベルの値を変更しました。

4

6 に答える 6

22

これを試して

L から R への最初のクリック

     CGRect basketTopFrame = Yourview.frame;
         basketTopFrame.origin.x = 115;
     [UIView animateWithDuration:0.3 delay:0.0 options:UIViewAnimationOptionCurveEaseIn animations:^{ Yourview.frame = basketTopFrame; } completion:^(BOOL finished){ }];

次に R から L

    CGRect napkinBottomFrame = Yourview.frame;
     napkinBottomFrame.origin.x = 0;
     [UIView animateWithDuration:0.3 delay:0.0 options: UIViewAnimationOptionCurveEaseOut animations:^{ Yourview.frame = napkinBottomFrame; } completion:^(BOOL finished){/*done*/}];
于 2013-05-03T11:04:38.147 に答える
4

以下のコードを使用して、

UIView * testView = [[UIView alloc] initWithFrame:CGRectMake(20.0f, 100.0f, 300.0f, 200.0f)];
[testView setBackgroundColor:[UIColor blueColor]];
[self.view addSubview:testView];

[UIView animateWithDuration:0.3f
                      delay:0.0f
                    options:UIViewAnimationOptionRepeat | UIViewAnimationOptionAutoreverse
                 animations:^{
                     [testView setFrame:CGRectMake(0.0f, 100.0f, 300.0f, 200.0f)];
                 }
                 completion:nil];

[testView release];

以下のリンクを確認してください: http://mobile.tutsplus.com/tutorials/iphone/ios-sdk_uiview-animations/

于 2013-05-03T10:51:00.080 に答える
1

ボタンをクリックすると、UIView が右から左、左から右にスライドします。

Global Declare NSString *string = @"one";

- (void)viewDidLoad
{
    [super viewDidLoad];
    stringslider = @"one";
}

Action Button "click"

-(IBAction)slider:(id)sender{
    if ([stringslider isEqualToString:@"one"]) {
        [UIView animateWithDuration:0.2
                     animations:^{[sliderview setFrame:CGRectMake(205, [sliderview frame].origin.y, 116, 275)];
                     }

                     completion:nil];
        stringslider = @"two";
    }
 else if ([stringslider isEqualToString:@"two"]) {
        [UIView animateWithDuration:0.2
                         animations:^{[sliderview setFrame:CGRectMake(342, [sliderview frame].origin.y, 116, 275)];
                         }
         completion:nil];
        stringslider = @"one";

}
}


easy uiview animation is done.
于 2014-06-03T07:14:44.227 に答える
0

アプリで使用している次のコードを試してください。

CGRect rectLeft = btnLeft.frame;
rectLeft.origin.x = rectLeft.origin.x + rectLeft.size.width;

CGRect rectRight = btnRight.frame;
rectRight.origin.x = rectRight.origin.x - rectRight.size.width;

[UIView animateWithDuration:0.5 animations:^{

    btnLeft.frame = rectLeft;
    btnRight.frame = rectRight;

} completion:nil];
于 2014-11-11T13:55:04.300 に答える