0

我采用了一种在两个图像之间翻转的相当常用的方法。然而在这种情况下,由于目前我无法理解的原因 - 动画目前只是从“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];

(这可能是超出此代码的简单内容..)

4

2 回答 2

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 的孩子,但这可能是个问题。

于 2012-11-24T23:06:27.040 回答
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;
    }
}

感谢托尼在这方面的帮助。如果有一个保持脚本干净的教训!

于 2012-11-25T00:43:52.680 回答