gpt4 book ai didi

ios - 在 iPhone X 中处理导航栏背景渐变

转载 作者:搜寻专家 更新时间:2023-10-30 23:04:34 24 4
gpt4 key购买 nike

到目前为止,我按以下方式处理导航栏中的渐变_

let gradient = CAGradientLayer()
let sizeLength = UIScreen.main.bounds.size.height * 2
let defaultNavigationBarFrame = CGRect(x: 0, y: 0, width: sizeLength, height: 64)
gradient.frame = defaultNavigationBarFrame
gradient.colors = [UIColor(hex:"92CF1F").cgColor, UIColor(hex:"79AB1B").cgColor]

UINavigationBar.appearance().setBackgroundImage(self.image(fromLayer: gradient), for: .default)
UINavigationBar.appearance().tintColor = UIColor.white
UINavigationBar.appearance().isTranslucent = false
UINavigationBar.appearance().clipsToBounds = false

if DeviceType.IS_IPAD{
UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName : UIFont .systemFont(ofSize: 24, weight: UIFontWeightLight), NSForegroundColorAttributeName: UIColor.white]
}
else
{
UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName : UIFont .systemFont(ofSize: 20, weight: UIFontWeightLight), NSForegroundColorAttributeName: UIColor.white]
}

UISearchBar.appearance().backgroundColor = UIColor.clear

但现在在 iPhone X 中,由于“64”作为渐变的导航栏高度,我遇到了问题,如下所示_

enter image description here

请提出一个可以在每种情况下动态使用的解决方案。

最佳答案

根据 Alisson Barauna 对您问题的回答,我设法通过将 UINavigationBar 扩展更新为如下所示来解决此问题:

extension UINavigationBar {

@objc func setGradientBackground(colors: [UIColor]) {

var updatedFrame = bounds

if UIDevice().userInterfaceIdiom == .phone {
if UIScreen.main.nativeBounds.height == 2436{
updatedFrame.size.height += 44
} else {
updatedFrame.size.height += 20
}
}

let gradientLayer = CAGradientLayer(frame: updatedFrame, colors: colors)
setBackgroundImage(gradientLayer.createGradientImage(), for: UIBarMetrics.default)
}

通过这样做,如果程序检测到正在使用 iPhone X(因为屏幕高度为 2436),高度将被设置为较大的 iPhone X 尺寸 (44)。

关于ios - 在 iPhone X 中处理导航栏背景渐变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46361026/

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