如何使 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 以淡入方式过渡到可见状态?的主要内容,如果未能解决你的问题,请参考以下文章