【问题标题】:UIView Flip Animation IssueUIView 翻转动画问题
【发布时间】:2012-11-25 08:43:52
【问题描述】:

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

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

【问题讨论】:

  • 所有这些代码都在一个方法中吗?如果没有,请展示完整的方法,以便我们了解您的代码的结构。

标签: ios xcode animation uiview flip


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

【讨论】:

  • 感谢您的回复 Tony,我确实尝试过使用 UIViews 但不幸的是 - 结果相同..
  • 也许尝试明确指定框架?我知道为了做动画,他们需要处理那些,可能是因为他们没有明确地在某个地方没有被初始化。
  • 我认为您可能是对的,这个脚本中进行了各种翻译、旋转和图像更改!我将有一个拖网通过
  • 托尼,感谢您的帮助 - 您的示例帮助我意识到我用来启动翻转的方法有问题(我确定我是否披露了这一点,您会指出这一点出去!)。我有一个 UISlider 调用翻转 - 但没有适当的系统阻止它这样做,它不断调用翻转动画 - 后果如所述!我真的应该清理这段代码......
  • 啊啊啊啊啊啊。那讲得通。很高兴你明白了!
【解决方案2】:

解决办法:

我用来启动翻转的方法有问题。我有一个 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;
    }
}

感谢托尼提供的帮助。如果有一个保持脚本干净的教训!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多