我采用了一种相当好用的两种图像翻转方法。然而在这个场合,由于目前我以外的原因 - 动画目前只是从" 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 ...)
答案 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帮助解决这个问题。如果有的话,那就是保持脚本清洁的一个教训!