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

标签 ios swift uistoryboard nslayoutconstraint cagradientlayer

在我的 swift 应用程序中,我将渐变应用于我的 View 。我使用以下代码来完成:

@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)
}

在我的 Storyboard中,gradientView 是黑色的:

enter image description here

它的约束是:

enter image description here

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

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

enter image description here

这很好。但是当我在 iphone 6s 上运行它时,我看到:

enter image description here

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

最佳答案

问题是您的 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
}

关于ios - 我的观点在 iphone 5 和 iphone 6 上看起来不同,即使它有限制 - 这里有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40533692/

相关文章:

ios - isHighlighted 和 isSelected didSet 只调用 UICollectionViewCell 而不是 UITableViewCell

swift - 如何在不同场景下显示分数

swift - 如何仅初始化 Swift 类中的部分属性

ios - 在现有项目中添加 Storyboard 支持

ios - 在 Xcode 中,为什么特定的部署目标会破坏我的代码,我应该如何使用它?

ios - 后退按钮没有相应的颜色( objective-c )

ios - 读取 NSFetchedResultsController 的 fetchedObjects 属性时出现 EXC_BAD_ACCESS 错误(仅在模拟器上)

ios - 将以编程方式创建的 UIView 的中心与自动布局 View 的中心对齐

iOS 5 Storyboard评论

ios - 使用 MDCTabBarViewController 时的空白 ViewControllers - Swift 4.2