UIView Flip动画问题

时间:2012-11-24 22:52:45

标签: ios xcode animation uiview flip

我采用了一种相当好用的两种图像翻转方法。然而在这个场合,由于目前我以外的原因 - 动画目前只是从" newView"到" newView。"

任何有助于指出我的方式错误的帮助将不胜感激。代码如下:

UIImageView *oldView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"dark_wood.png"]];
UIImageView *newView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"light_wood.png"]];
[container addSubview:oldView];

[UIView transitionWithView:container
                  duration:2
                   options:UIViewAnimationOptionTransitionFlipFromLeft
                animations:^{ [oldView removeFromSuperview]; [container addSubview:newView]; }
                completion:nil];

(它可能是超出此代码的v.simple ...)

2 个答案:

答案 0 :(得分:1)

它们可能是UIImageViews但是这里有一些示例代码可供我使用。这是一个视图控制器,视图的加载方法看起来像这样

[super viewDidLoad];
view1 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
view1.backgroundColor = [UIColor yellowColor];
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(0, 0, 50, 50);
[button addTarget:self action:@selector(thusFar:) forControlEvents:UIControlEventTouchUpInside];
[view1 addSubview:button];
[self.view addSubview:view1];

这是按钮

调用的方法
-(void)thusFar:(id)sender
{

    UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
    view2.backgroundColor = [UIColor brownColor];
    [UIView transitionWithView:self.view duration:5 options:UIViewAnimationOptionTransitionFlipFromLeft animations:^{ [view1 removeFromSuperview]; [self.view addSubview:view2]; } completion:nil];
}

这对我有用。继续使用此代码作为示例。但我看到的唯一不同的是你使用的是UIImageViews而不是UIViews。现在我知道UIImageView是UIView的孩子,但这可能是个问题。

答案 1 :(得分:0)

解决方案:

我用来启动翻转的方法是错误的。我有一个UISlider调用翻转 - 但没有一个系统阻止它这样做,它不断调用翻转动画 - 具有描述的后果!

代码中的解决方案如下:

创建BOOL以停止UISlider重复调用动画:

BOOL playing;

UISlider的IBAction:

- (IBAction)slider:(id)sender {
    if (!playing) {
        [UIView transitionWithView:self.view
                      duration:3
                       options:UIViewAnimationOptionTransitionFlipFromLeft
                    animations:^{ [view1 removeFromSuperview]; [self.view addSubview:view2]; }
                    completion:nil];
        playing = YES;
    }
}

感谢Tony帮助解决这个问题。如果有的话,那就是保持脚本清洁的一个教训!