-1

我是 xcode 的新手,但我一直在寻找解决方案,我尝试了许多不同的方法,但都没有奏效。 我正在尝试通过UIButton向其添加动画来翻转到背面。这将在程序加载时发生,因此用户可以坐下来观看一大堆按钮一遍又一遍地翻转。

我遇到的问题是动画似乎发生在屏幕甚至加载之前,因为我可以在程序加载后立即看到不同的视图(以显示按钮已翻转),但我看不到动画正在发生。

我做了什么:

我创建了一个主视图控制器,在控制器内部我有不同的子视图,在这些子视图中,我有UIButtons. 我试图为我的动画添加延迟,但它仍然无法修复它。我不知道是否会出现问题,因为我创建了子视图和按钮,然后在下面- (void)viewDidLoad. 进行动画处理在子视图之间翻转,但我仍然遇到同样的问题。动画仍然在屏幕加载之前发生,而不是在程序运行期间发生。

我将我所做的部分代码附加到这个代码上。

CGRect button20subviewFrame = CGRectMake(242, 370, 70, 83);
UIView *button20subview = [[UIView alloc] initWithFrame:button20subviewFrame];
UIButton *button20 = [UIButton buttonWithType:UIButtonTypeCustom];
[button20 addTarget:self action:@selector(switchToDetailView:) forControlEvents:UIControlEventTouchDown];
[button20 setTitle:@"Button20" forState:UIControlStateNormal];
button20.frame = CGRectMake(0 , 0 , 70 , 83);
UIImage *button20Image = [UIImage imageNamed:@"t1.png"];
[button20 setImage:button20Image forState:UIControlStateNormal];
[button20subview addSubview:button20];
[self.view addSubview:button20subview];

UIButton *button21 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button21 addTarget:self action:@selector(switchToDetailView:) forControlEvents:UIControlEventTouchDown];
button21.frame = CGRectMake(0, 0, 70, 83);
UIImage *button21Image = [UIImage imageNamed:@"t2.png"];
[button21 setImage:button21Image forState:UIControlStateNormal];


//animation part
[UIView animateWithDuration:3 delay:2 options:UIViewAnimationTransitionFlipFromLeft animations:^{
    [button20 removeFromSuperview];
    [button20subview addSubview:button21];
}completion:^(BOOL finished){

}];

任何帮助表示赞赏。

谢谢你。

4

1 回答 1

0

viewDidLoad是问题所在。它在视图完成加载时被调用,也就是在它被放到屏幕上之前。viewDidAppear应该做你正在寻找的东西。

除此之外,您可能需要调用[button20 removeFromSuperview]动画完成处理程序,以确保在动画仍在播放时不会移除按钮的前部。

前任:

[UIView animateWithDuration:3 delay:2 options:UIViewAnimationTransitionFlipFromLeft animations:^{
    [button20subview addSubview:button21];
}completion:^(BOOL finished){
     if(finished){
         [button20 removeFromSuperview];
     }
}];
于 2012-08-06T08:42:10.873 回答