TRG*_*TRG 11 uiview ios swift swift3
我有一个UIView EmptyCollectionView,当我的UICollectionView为空时我会显示它.我的工作方式是我创建UIView并addSubview在ViewController的viewDidLoad中,然后根据需要更改视图(以及collectionview)的toggle属性.
我想稍微改进一下我现在的核心功能正常工作,我不想在我的空视图中包含的子视图中添加一些微妙的动画,例如imageview在显示屏上显示包含的反弹.
所以我的问题是,检测何时UIView被显示的最佳方法是什么(即viewDidAppear我可以使用哪种类型的回调)?
补充问题:我是新手...添加空视图并切换isHidden属性这是一个很好的方法吗?或者我应该以不同的方式做到这一点?(即我应该根据需要创建和销毁视图,而不是保持它)
谢谢
小智 12
这项工作,我希望它可以帮助你.要隐藏视图:
UIView.animate(withDuration: 0.3/*Animation Duration second*/, animations: {
self.EmptyCollectionView.alpha = 0
}, completion: {
(value: Bool) in
self.EmptyCollectionView.isHidden = true
})
Run Code Online (Sandbox Code Playgroud)
要显示视图:
self.EmptyCollectionView.isHidden = false
UIView.animate(withDuration: 0.3, animations: {
self.EmptyCollectionView.alpha = 1
}, completion: nil)
Run Code Online (Sandbox Code Playgroud)
And*_*Guy 12
我认为最好的方法是扩展UIView
extension UIView {
func fadeIn(_ duration: TimeInterval? = 0.2, onCompletion: (() -> Void)? = nil) {
self.alpha = 0
self.isHidden = false
UIView.animate(withDuration: duration!,
animations: { self.alpha = 1 },
completion: { (value: Bool) in
if let complete = onCompletion { complete() }
}
)
}
func fadeOut(_ duration: TimeInterval? = 0.2, onCompletion: (() -> Void)? = nil) {
UIView.animate(withDuration: duration!,
animations: { self.alpha = 0 },
completion: { (value: Bool) in
self.isHidden = true
if let complete = onCompletion { complete() }
}
)
}
}
Run Code Online (Sandbox Code Playgroud)
所以你只需要调用view.fadeIn()默认的0.2秒动画,或者view.fadeIn(1)让它持续一秒钟.
您甚至可以添加完成事件:
view.fadeOut(0.5, onCompletion: {
print("Animation completed, do whatever you want")
})
Run Code Online (Sandbox Code Playgroud)
Swift 4.2扩展允许在任何UIView类上设置isHidden时允许动画:
extension UIView {
func setIsHidden(_ hidden: Bool, animated: Bool) {
if animated {
if self.isHidden && !hidden {
self.alpha = 0.0
self.isHidden = false
}
UIView.animate(withDuration: 0.25, animations: {
self.alpha = hidden ? 0.0 : 1.0
}) { (complete) in
self.isHidden = hidden
}
} else {
self.isHidden = hidden
}
}
}
Run Code Online (Sandbox Code Playgroud)
您可以将 EmptyCollectionView 的 alpha 属性设置为 0 隐藏或 1 显示
UIView.animate(withDuration: 0.5) {
self.EmptyCollectionView.alpha = 0
}
Run Code Online (Sandbox Code Playgroud)
还要确保isOpaque属性设置为 False 以启用视图的透明度
| 归档时间: |
|
| 查看次数: |
10703 次 |
| 最近记录: |