2011-03-05 128 views
0

嗨,我还没有找到一个答案,所以我想我会问你。可可触摸 - UIAnimation问题

[viewOggetto setFrame:aFrame]; 
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.5]; 
[viewOggetto.view setFrame:CGRectMake(0, 0, 320, 480)]; 
[self.view addSubview:viewOggetto.view]; 
[UIView commitAnimations]; 

这是一个简单的动画视图出现在一个位置,然后进入全屏模式。 我的问题是:我怎样才能使视图的内容也遵循动画? 现在我有视图框架正确动画,但视图内的所有内容都会立即全屏显示。

谢谢。

+0

'aFrame'是一种我不熟悉的方法。你确定你不是指'[viewOggetto setFrame:aFrame];'? –

+0

Oggetto是意大利人吧?你不认为为你的变量设置英文名称而不是混合英语和意大利语会很好吗? –

+0

你对你的第一条评论是正确的,我的意思是[viewOggetto setFrame:aFrame];也是的,Oggetto是一个意大利名字,但它是我正在使用的上下文所必需的。 – Lorenzo

回答

0

但什么viewOggetto究竟是什么?如果它是一个UIView,那么为什么要调用viewOggetto.view?

是一个UIViewController? 您通话双方:

[viewOggetto setFrame:aFrame]; 
[viewOggetto.view setFrame:aFrame]; 

假设它是一个UIViewController,试试这个/ PROVA COSI':

[self.view addSubview:viewOggetto.view]; // you need to have it before to animate it 

// initial state of the animation: 
[viewOggetto.view setFrame:CGRectMake(160, 240, 1, 1)]; // zoom from center 
// viewOggetto.view.alpha = 0; // eventually to add a fadeIn animation 

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.5]; 
// ending state of animation: 
// viewOggetto.view.alpha = 1; // restore to 1 to eventually to add a fadeIn animation 
[viewOggetto.view setFrame:CGRectMake(0, 0, 320, 480)]; 

[UIView commitAnimations]; 

,如果它是一个UIView只是删除 “.view” 在每一个 “viewOggetto.view” 代码

ciao, luca

+0

grazie卢卡。我试过你发布的代码,但没有任何改变。我仍然可以正确动画,但在动画过程中内容不会相应地调整大小。也许问题可能是我正在使用NIB文件初始化viewOggetto? – Lorenzo

2

这不是完全清楚你希望发生的事情,而不是它瞬间出现全屏什么。你的意思是你想让它淡入?在子视图alpha属性设置为0并将其添加到您self.view启动动画之前。然后在动画中将alpha属性设置为1。

+0

没有。我最初设置一个较小的框架:[viewOggetto aFrame];那么我希望视图在0.5秒内全屏显示。但随着我发布的代码,我得到视图的框架行为正确,但视图的内容不遵循这种“缩放”动画,只是全屏。我想知道如何让内容跟随动画。 – Lorenzo

+0

在开始动画之前添加子视图的初始帧。 – Jim

+0

对不起,我写错了我的代码。第一条指令是[viewOggetto setFrame:aFrame];(现在编辑它)。也许现在你明白我的意思了。 – Lorenzo

0

只想补充吉姆的回答。 UIView动画将UIViews从一个上下文动画化到另一个上下文。如果上下文在[UIView beginAnimations:nil context:NULL];之前不存在,则底面效应将发生。如果视图尚未添加到子视图中,则上下文将不存在。

+0

我编辑了代码;第一行应该是[viewOggetto setFrame:aFrame]; – Lorenzo

+0

这不会改变任何东西。如果在您调用beginAnimation时它不在屏幕上,它将无法动画。在您调用beginAnimation – Rudiger

+0

之后,您正在将视图添加到屏幕。实际上动画正在运行。我的问题是只有视图的框架受制于动画。视图中的内容(UILabels等)在动画期间在屏幕上被触发。我想知道如何根据视图的框架对内容进行动画处理。 – Lorenzo