如何使 UIViews 以淡入方式过渡到可见状态?

Posted

技术标签:

【中文标题】如何使 UIViews 以淡入方式过渡到可见状态?【英文标题】:How to make UIViews transition to visible state in a fade-in fashion? 【发布时间】:2016-01-28 18:13:46 【问题描述】:

这个问题可能看起来令人困惑,所以让我澄清一下。

我正在开发一个内容驱动的应用程序。内容是异步获取的,屏幕上通常有十几个或更多表示内容的元素。图片、文字……等等……都是通过 UIView 子类实现的。

我希望能够设置每个应用级别(通过外观代理或其他方法),一旦视图准备好呈现可见,它应该淡入 而不是在下一次渲染后突然出现。

有人有什么想法吗?是否有一些 CALayer 属性可以轻松实现这一点? 拉直?覆盖隐藏?内部使用 UIView 动画的便捷公共包装函数?

再一次,我知道如何使用 UIView 动画方法在个人层面上做到这一点。我想要的是所有 UIViews 的全局行为变化。

【问题讨论】:

【参考方案1】:

您可以创建一个带有 readyForRendering 属性的 UIView 子类,并在它设置为 true 时执行淡入动画(您已经知道如何操作)。使您现有的 UIView 子类成为此新 UIView 子类的子类,并根据需要设置 readyForRendering。

【讨论】:

【参考方案2】:

这不是可以通过外观代理完成的,但您可以继承 UIView 并覆盖其方法(或使用新方法创建扩展)addSubview() 方法来执行动画。

【讨论】:

我不能子类化..我也需要它来处理库存的 UIKit 控件.. UILabel、UITextField....UIImageView....UIview ......通常的一堆。 然后使用分类方法,比如UIView 上的addSubviewAnimated(),然后确保调用这个新方法而不是addSubview()。如果您想为 Interface Builder 中添加的子视图设置动画,那么这将无济于事。

以上是关于如何使 UIViews 以淡入方式过渡到可见状态?的主要内容,如果未能解决你的问题,请参考以下文章

使背景淡出/淡入

如何过渡,例如淡入淡出,从一个视图控制器到另一个

如何在 Bootstrap 3 Carousel 中更改滑动动画以淡入/淡出过渡

同时为两个不同的元素淡入淡出过渡

加载时淡入淡出过渡到 div [重复]

CSS 过渡淡入