我正在使用UIKit
在Swift中为tvOS开发一个应用程序,我想在两个ViewController之间实现黑色渐变效果,它代表了整个功能,并且不需要添加任何自定义视图或代码到源和目标ViewController。
我正在寻找的东西是这样的:
我确实搜索了很多东西,尝试了很多事情,但是运气不好。两种复杂性使其变得更加困难:
ViewControllers
之一包含在UISearchController
内。我将不胜感激。
答案 0 :(得分:0)
我终于找到了一种不错的方法。这是一个自定义segue类,可以无缝执行过渡。
import UIKit
import Foundation
class StoryboardFadeToBlackSegue: UIStoryboardSegue {
override func perform() {
guard let window = (UIApplication.shared.delegate as? AppDelegate)?.window else {
super.perform()
return
}
let overlay = UIView(frame: window.frame)
overlay.layer.zPosition = 1
overlay.backgroundColor = .black
overlay.alpha = 0.0
window.addSubview(overlay)
UIView.animate(withDuration: 0.5, delay: 0, options: [.curveEaseOut], animations: {
overlay.alpha = 1.0
}, completion: { _ in
self.source.present(self.destination, animated: false, completion: {
UIView.animate(withDuration: 0.6, delay: 0, options: [.curveEaseIn], animations: {
overlay.alpha = 0.0
}, completion: { _ in
overlay.removeFromSuperview()
})
})
})
}
}
要使用它,请在您的Segue的属性检查器中将此类设置为关联的Class。