我的观点在 iphone 5 和 iphone 6 上看起来不同,即使它有限制 - 这里有什么问题?

my view looks different on iphone 5 and iphone 6 even though it has constraints - what is wrong here?

在我的 swift 应用程序中,我正在对我的视图应用渐变。我使用以下代码来完成:

@IBOutlet weak var gradientView: UIView!

override func viewDidLoad(){
    super.viewDidLoad()

    let layer = CAGradientLayer()
    layer.frame = CGRect(x: 0, y: 0, width: self.gradientView.frame.width, height: self.gradientView.frame.height)
    layer.colors = [UIColor.clear.cgColor, UIColor.white.cgColor]
    gradientView.layer.addSublayer(layer)
}

在我的故事板中,gradientView 是黑色的:

它的约束是:

所以它接触到每一侧的边缘,顶部和底部的白色面板。

当我在 iphone5 模拟器中 运行 它时,我有:

没关系。但是当我 运行 它在 iphone 6 秒时,我看到:

这里有什么问题,因为应用了约束?

问题是您的 gradientView 的框架尚未在 viewDidLoad 中更新。试试这个:

let gradientLayer = CAGradientLayer() 

override func viewDidLoad(){
    super.viewDidLoad()   
    gradientLayer.colors = [UIColor.clear.cgColor, UIColor.white.cgColor]
    gradientView.layer.addSublayer(gradientLayer)
}

override func viewDidLayoutSubviews(){
    super.viewDidLayoutSubviews()
    gradientLayer.frame = gradientView.bounds
}