UIView翻转动画

Chr*_*ris 12 iphone objective-c uikit ios

在我的游戏中,我有一个较小的UIViews网格托管在我的主要UIView上.随机地框会变成不同的颜色,此时用户可以触摸它们来获得一个点.当他们触摸盒子时,我想要显示某种动画,理想情况下类似于XCode本身提供的模态水平翻转segue.如何在不实际转换到另一个UIView的情况下进行此动画?

ser*_*gio 26

您可以简单地尝试为此视图变换设置动画(对于垂直翻转):

[UIView animateWithDuration:0.5 delay:0.0 options:UIViewAnimationOptionCurveEaseInOut
                 animations:^(void) {
                     view.transform = CGAffineTransformMakeScale(1, -1);
                 }
                 completion:nil];
Run Code Online (Sandbox Code Playgroud)

或者为了更好地控制,你可以看看iOS-Flip-Transform.

编辑:

对于影子的事情,试试这个:

    view.layer.shadowColor = [UIColor blackColor].CGColor;
    view.layer.shadowOpacity = 0.75;
    view.layer.shadowRadius = 15.0;
    view.layer.shadowOffset = (CGSize){0.0,20.0};

[UIView animateWithDuration:0.5 delay:0.0 options:UIViewAnimationOptionCurveEaseInOut
                 animations:^(void) {
                     view.transform = CGAffineTransformMakeScale(1, -1);
                 }
                 completion:^(BOOL b) {
    view.layer.shadowColor = [UIColor clearColor].CGColor;
    view.layer.shadowOpacity = 0.0;
    view.layer.shadowRadius = 0.0;
    view.layer.shadowOffset = (CGSize){0.0, 0.0};
                 }];
Run Code Online (Sandbox Code Playgroud)

我希望这对你有用.您可以根据需要更改阴影设置.不要忘记导入QuartzCore/QuartzCore.h.


dan*_*anh 14

UIView提供了一个名为的方法

+ (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options completion:(void (^)(BOOL finished))completion
Run Code Online (Sandbox Code Playgroud)

选项包括UIViewAnimationOptionTransitionFlipFromLeft和......Right

  • OP澄清说他没有从一个观点过渡到另一个观点...... (4认同)

Ilk*_*aci 6

对于每个应该翻转的框,您可以使用容器UIView.将两边添加到此容器中.

if (side1Visible) {
    UIViewAnimationOptions options = UIViewAnimationOptionBeginFromCurrentState |     
    UIViewAnimationTransitionFlipFromRight;  

    [UIView transitionWithView:containerView  
                  duration:1.0  
                   options:options  
                animations:^{ side1.hidden = YES; side2.hidden = NO; }  
                completion:NULL];  
} else {
    UIViewAnimationOptions options = UIViewAnimationOptionBeginFromCurrentState |     
    UIViewAnimationTransitionFlipFromLeft;  

    [UIView transitionWithView:containerView  
              duration:1.0  
               options:options  
            animations:^{ side1.hidden = NO; side2.hidden = YES; }  
            completion:NULL]; 
}
Run Code Online (Sandbox Code Playgroud)