CAGradientLayer 框架未正确显示

Posted

技术标签:

【中文标题】CAGradientLayer 框架未正确显示【英文标题】:CAGradientLayer frame not displaying properly 【发布时间】:2018-08-06 13:52:32 【问题描述】:

我有以下代码来呈现CAGradientLayer,它应该涵盖整个视图。但是,它在模拟器中显示不正确。我打印了self.view.bounds.widthself.view.bounds.height 的值,它们打印了正确的值。下面也是模拟器截图。

// Add background layer to calendar view
    let gradientLayer = CAGradientLayer()
    gradientLayer.bounds = CGRect(x: 0, y: 0, width: self.view.bounds.width, height: self.view.bounds.height)
    gradientLayer.colors = [lightDarkColor.cgColor, darkColor.cgColor, lightDarkColor.cgColor]
    gradientLayer.startPoint = CGPoint(x: 0.0, y: 0.0)
    gradientLayer.endPoint = CGPoint(x: 1.0, y: 1.0)
    self.view.layer.insertSublayer(gradientLayer, at: 0)

【问题讨论】:

如果注释掉 startPoint 和 endPoint 行会发生什么? @Nick 没有变化,我之前测试过:( @AnnabelleSykes 您尝试在哪里添加渐变层?是指用什么方法? 【参考方案1】:

您需要设置frame 而不是bounds

gradientLayer.frame = self.view.frame // here frame = bounds

【讨论】:

以上是关于CAGradientLayer 框架未正确显示的主要内容,如果未能解决你的问题,请参考以下文章

CAGradientLayer 使用 UIScrollView 滚动

iOS - 将 CAGradientLayer 集中到父 UIView

CAGradientLayer 颜色更改动画未执行

CAGradientLayer 没有正确绘制渐变

IE 11 未正确显示 CSS 填充

什么是 CALayer 和 CAGradientLayer?