gpt4 book ai didi

swift - 为什么我的背景渐变 View 没有加载到我的客户 UINavigationController 类中

转载 作者:行者123 更新时间:2023-11-28 08:12:58 26 4
gpt4 key购买 nike

我正在尝试为我的子类 NavigationController 的背景设置渐变。当我向同一代码添加颜色时,效果很好,但我似乎无法让我的渐变显示出来。我创建了一个 UIView 的子类,它返回一个 CAGradientLayer 作为它的背景 View 。

这是我的子类 UIView:(请注意颜色很奇怪,所以我确定它加载了正确的渐变。

@IBDesignable
class GenericBackgrounView: UIView {

override class var layerClass: AnyClass {
return CAGradientLayer.self
}


///The roundness for the corner
@IBInspectable var cornerRadius: CGFloat = 0.0 {
didSet{
setupGradient()
}
}

func setupGradient() {
//let gradientColors = [bgDarkColor.cgColor, bgDarkColor.blended(withFraction: 0.5, of: bgLightColor).cgColor, bgLightColor.cgColor]
let gradientColors = [UIColor.brown.cgColor, UIColor.red.blended(withFraction: 0.5, of: UIColor.cyan).cgColor, UIColor.yellow.cgColor]
gradientLayer.colors = gradientColors
gradientLayer.locations = ESDefault.backgroundGradientColorLocations
setNeedsDisplay()
}

var gradientLayer: CAGradientLayer {
return self.layer as! CAGradientLayer
}

override func awakeFromNib() {
super.awakeFromNib()
setupGradient()
}
override func prepareForInterfaceBuilder() {
setupGradient()
}

}

这是我的 UINavigationController : 类 GenericNavigationController: UINavigationController {

override func viewDidLoad() {
super.viewDidLoad()
let backView = GenericBackgrounView(frame: self.view.frame)
backView.bounds = self.view.bounds
self.view.backgroundColor = UIColor.clear
self.view.addSubview(backView)
self.view.sendSubview(toBack: backView)

// Do any additional setup after loading the view.
}
}

另请注意,当我将它用于我在界面构建器中添加的任何 View 时,我的 GenericBackgroundView 工作正常。

我做这个已经很长时间了。我想我会建议 Apple 在代码和 Interface Builder 中设置某种 Theming API...以及直接将渐变添加到 Interface Builder 中的能力...

谢谢你的帮助。

最佳答案

与其在 awakeFromNib() 中设置它,不如尝试在 viewDidLayoutSubviews() 中调用它。原因是在 viewDidLayoutSubviews() 中会有正确的 View 框架,而在 awakeFromNib() 中你不知道正确的 View 框架。从 Apple Documentation 开始。

关于swift - 为什么我的背景渐变 View 没有加载到我的客户 UINavigationController 类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43263696/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com