1

我认为我的问题可以最简单地提出: UIView 的内容可以更新/修改/动画......并在视图转换期间显示这些更改吗?如果是这样,如何使它起作用?

我用我的 iOS 应用程序启动时创建的重复 NSTimer 做了一个简单的测试。它大约每 0.05 秒增加一个计数器,并将增加的计数显示到放置在 Interface Builder (IB) 中我的 UIView 上的 UILabel。

除非我在下面提到一种情况,否则 iPhone 屏幕上的内容会以在 NSTimer 精度等可接受的容差范围内不断刷新的速度不断刷新,等等。(嘿,这只是对概念的测试)。

因此问题是:当应用程序启动转换发生时,UILabel 内容没有被刷新。(我的 UIView 出现在屏幕外并放大以填满整个屏幕的初始视图。)

一旦该转换完成,由于 NSTimer 在后台触发,UILabel 内容“跳转”到看起来合理的计数......唯一的事情是,在转换期间内容没有被重绘。我确实尝试了一些类似的东西:[myLabel setNeedsDisplay]; 在每次增量和标签内容更新后,它什么也不做。我猜这个问题更多的是在 UIView 或者 UIViewController 级别?

抱歉,如果我的术语在这里很糟糕,并且希望有一个简单的解决方案,除非我在我正在做的任何搜索中都没有找到它,因为使用了有缺陷或不正确的术语。

另外,我可以发布代码,但很难想象那会是什么。应用程序启动过渡动画不是我们触发或控制的……唯一的其他代码是在过渡期间令人满意地触发的 NSTimer - 它实际上只是 UIView 内容没有重绘或其他什么?

哦,还有一个想法:我不一定希望在过渡期间重绘流畅的 UIView,但我正在考虑一旦我知道这甚至可以工作后我最终想要尝试的东西......即使只是在过渡期间重绘了一些 UIView过渡看起来足够好。当然比过渡结束时看起来像是“流行音乐”要好得多。

4

2 回答 2

0

不知道你说的“应用启动过渡动画不是我们触发或控制的”是什么意思。您是在谈论从 default.png 到您的 rootViewController 的转换吗?

无论哪种方式,我都相信您的标签在动画期间不会更新,因为当动画发生时,它实际上是一个新的“表示层”,而不是您的标签正在更新的实际层。您可能想尝试在您的视图上调用 setNeedsDisplay。除了查看表示层上的文档之外,这可能无济于事,也许您会找到解决方案:“CALayer,presentationLayer”

于 2012-10-19T17:15:24.833 回答
0

视图出现在屏幕上的初始视图是启动图像。它只是一个png,所以它不能被动画化。除了该图像之外,在应用程序完成加载之前,不会有任何内容更新到屏幕上。

于 2012-10-19T19:46:26.803 回答