我正在从渐变图层设置导航栏背景图像,如下所示:
首先,我在Util.swift中声明了一个全局渐变层
let lightBlueToBlueGradientLayer: CAGradientLayer = {
let layer = CAGradientLayer()
layer.colors = [
UIColor(red: 29/255, green: 172/255, blue: 235/255, alpha: 1).cgColor,
UIColor(red: 17/255, green: 116/255, blue: 187/255, alpha: 1).cgColor]
return layer
}()
然后我将导航栏背景图像设置为渐变层
let navBackgroundImageGradient = lightBlueToBlueGradientLayer
func configureNavBar(){
let nav = self.navigationController?.navigationBar
navBackgroundImageGradient.frame = (nav?.bounds)!
navBackgroundImageGradient.startPoint = CGPoint(x: 1.0, y: 0.5)
navBackgroundImageGradient.endPoint = CGPoint(x: 0.0, y: 1.0)
nav?.setBackgroundImage(self.image(fromLayer: navBackgroundImageGradient), for: .default)
nav?.tintColor = .white
}
func image(fromLayer layer: CAGradientLayer) -> UIImage{
UIGraphicsBeginImageContext(layer.frame.size)
layer.render(in: UIGraphicsGetCurrentContext()!)
let outputImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return outputImage!
}
我有一个Iphone 6物理设备,并且已经对其进行了测试,看起来还可以。 但是由于我的项目必须针对不同的iOS设备,所以我想使用模拟器进行测试,并且我注意到了这一点。
很明显,我没有iPhone 8 ...要对iPhone X物理设备进行全面测试,但我注意到在模拟器中,屏幕较小的设备往往会发生这种情况。 (例如,iphone8,iphone 4s等。)
现在我的问题是,这仅仅是模拟器错误还是在真实设备上也会发生? (或者我的代码有问题吗?)
谢谢。
答案 0 :(得分:0)
您需要通过添加状态栏高度来更改导航高度。
let nav = self.navigationController?.navigationBar
nav?.frame.size.height += UIApplication.shared.statusBarFrame.height
让iOS决定提高iPhone(iPhone 5/6/7/8或iPhone X)的高度