【发布时间】:2011-05-29 19:15:09
【问题描述】:
是否可以(完全)使用自定义 AnimationTransition 加载 XIB?
我所做的是创建一个“覆盖”屏幕的动画,我想要的是在该动画播放完毕后,我希望它显示新的 XIB。
我似乎找不到任何合适的解决方案...有什么想法吗?
为了更清楚:按一个按钮-->播放动画(封面屏幕)-->加载XIB。
你好!是的,你描述的最后一种方式就是我正在做的方式。我有两个 UIViews(可能已经错了),它们被放置在每一侧的边界之外,(如 x.-160.y.0 和 x.320y.0)
-(IBAction) leftDoor{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1];
[UIView setAnimationDelegate:self];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
closeDoor1.center = CGPointMake( closeDoor1.center.x +160, closeDoor1.center.y);
[UIView commitAnimations];
}
-(IBAction) rightDoor{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1];
[UIView setAnimationDelegate:self];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
closeDoor2.center = CGPointMake( closeDoor2.center.x -160, closeDoor2.center.y);
[UIView commitAnimations];
}
所以,我要做的不是“拆分”当前视图然后打开一个新的 XIB,我正在寻找的效果是“关门”效果,这就是我使用 UIView 的原因(以为我放置上面的图形,比如两个 ImageView)。然后,为了加载新的 XIB ......这是我真正困惑的地方。我尝试的第一种方法是制作三个 IBAction,包括我上面提到的两个,然后将所有三个(多个操作)应用到一个按钮。所以为了切换视图,我做了这样的事情:`-(IBAction) newViewDisplay:(id)sender{
theView *newViewController = [[theView alloc]
initWithNibName:@"theView" bundle:nil];
[self.view addSubview:newViewController.view];
} `
正如你所说,这可能超出了我的想象,但如果我只是得到一些指示,我会步行数英里来完成这项工作。它真的会让我的应用程序焕然一新。非常感谢您花时间回答我的问题,一切顺利/安迪
【问题讨论】:
-
XIB 中有什么?它是视图控制器还是只是视图等?然后你需要加载它。之后,您可以应用动画。
-
它是一个 ViewController。那么,如果我先加载它,我会在代码中声明动画吗?函数内?抱歉,有点困惑...谢谢!
-
是的,你加载它,添加一个动画块,然后将新视图动画到屏幕上。
-
感谢您的回答!我试过了,但它似乎不起作用......我不知道我是否足够清楚,但我想要“动画”(从越界 UIViews 覆盖屏幕,中间的相遇)开始和结束在显示新的 XIB 之前。我不知道这是否可能,但我已经在一些应用程序中看到它......如果你有时间,你能输入一些代码并指出我正确的方向吗?如果您没有时间,仍然非常感谢您的回答。如果您将其发布为答案,我可以接受。谢谢
标签: iphone objective-c uianimation