在 Swift 中制作渐变背景 - 正确的方法

2024-01-31

这是我的渐变背景代码。当我将它应用到我的视图上时,它隐藏了 VC 上的所有内容,就像它在前面一样,而其他所有内容都被推到了后面。如何制作不干扰我的元素的渐变视图?

我在用着@IBDesignable只是为了看看它在 Storyboard 中的样子。

import UIKit

@IBDesignable
class GradientView: UIView {

    private let gradientLayer = CAGradientLayer()

    var color1 = ColorPalette.GrdTop
    var color2 = ColorPalette.GrdBottom

    override init(frame: CGRect) {
        super.init(frame: frame)
        configureGradient()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        configureGradient()
    }

    func configureGradient() {
        gradientLayer.startPoint = CGPoint(x: 0, y: 0)
        gradientLayer.endPoint = CGPoint(x: 1, y: 1)
        updateColors()
        layer.addSublayer(gradientLayer)
    }

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

    private func updateColors() {
        gradientLayer.colors = [color1.CGColor, color2.CGColor]
    }

    override func prepareForInterfaceBuilder() {
        super.prepareForInterfaceBuilder()
        configureGradient()
    }
}

就像它在前面一样,其他一切都被推到后面

因为它is在前面。想想你的这行代码:

layer.addSublayer(gradientLayer)

这会将渐变层置于该层的所有其他子层之前。视图的子视图由其图层的子图层显示,因此渐变图层覆盖该视图的当前子视图。

如果您愿意,您可以将图层一直插入到后面(insertSublayer:atIndex:)。不过,优雅的解决方案是实施the layerClass类方法 https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/#//apple_ref/occ/clm/UIView/layerClass让这个视图返回一个 CAGradientLayer。现在你不必addGradientView 的渐变;相反,你的 GradientViewis渐变,您可以根据需要配置该渐变。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Swift 中制作渐变背景 - 正确的方法 的相关文章

随机推荐

  • 使用 R 绘制二次回归线

    我对 R 很陌生 而且对 R 也很陌生plotly 我正在尝试绘制二次 即二次多项式 回归线 一旦一些价格与年份 以及相同的价格与某些整数列表 可以相同 比方说分数 本例中的数据是 price c 995 675 690 600 612 7
  • 如何强制 r optim 运行更多迭代?

    R Optim 比我想要的更早停止迭代 我使用 method L BFGS B 因为我需要不同参数的不同界限 我知道我可以通过 control gt maxit 设置最大迭代次数 但 optim 没有达到最大值 我想 control gt
  • Emacs - Ubuntu 初始化

    在 ubuntu 上加载 emacs 的行为很奇怪 似乎发生了一些初始化 这些初始化不在 emacs 中 也不在 emacs 报告通过 emacs debug init 加载的任何文件中 我发现了一些与字体相关的调整大小的参考 但这种行为似
  • 依赖注入架构设计——服务类循环引用

    我有以下服务类别 public class JobService private UserService us public JobService UserService us this us us public void addJob J
  • Objective C - 访问 zip 中的文件而不解压 zip

    我正在寻找一种访问 zip 文件中的文件而不提取整个文件的方法 我在互联网上找到的所有 zip 解决方案似乎都提取了整个 zip 有谁知道解决方案吗 Google 有一个基于 minizip 的 Objective C 库 http cod
  • 如何从事件中删除所有事件处理程序?

    我有以下课程 Public Class SimpleClass Public Event SimpleEvent Public Sub SimpleMethod RaiseEvent SimpleEvent End Sub End Clas
  • 如何处理 csv 列表中的单词[重复]

    这个问题已经存在了 我遇到了基于以下程序的问题 Code Download the helper library from https www twilio com docs python install import os from tw
  • 如何使用 python 的 cassandra-driver 将地图类型插入 cassandra

    因为 cassandra 支持地图类型 我想将 python 字典插入 cassandra 中 我试过这个 cql Insert into table name my key name my dict values s s s my key
  • 具有水平滚动功能的 SVG

    我正在尝试用 D3 制作 SVG 图表 https cdnjs cloudflare com ajax libs d3 3 5 17 d3 min js https cdnjs cloudflare com ajax libs d3 3 5
  • jQuery 延迟方法和 ajax beforeSend()

    通过使用 ajax 中的延迟对象 成功回调可以替换为deferred method done 错误回调 acn 替换为deferred method fail 完整回调可以替换为always 通过使用 var jqxhr ajax url
  • Android 和 BouncyCastle 的 IllegalAccessError

    我正在尝试实现时间戳请求 如下所示 http bouncy castle 1462172 n4 nabble com Timestamp request and response td1558231 html http bouncy cas
  • Flask 中 AJAX 身份验证的 CSRF 保护

    我想在网站上使用 AJAX 化登录和注册表单 到目前为止 我一直使用 WTForms 主要是为了它内置的 CSRF 保护 但对于这个项目 我觉得不值得 额外的抽象层 因此令人沮丧 对于一些应该漂亮的东西简单的 所以我遇到了这个片段 http
  • 如何参数化 xunit 类装置?

    xUnit 提供了 共享 类装置的概念 如中所述测试之间共享上下文 https xunit net docs shared context 到目前为止我还没有弄清楚是否有一种方法可以对此类装置进行参数化 例如 如果DatabaseFixtu
  • VB.NET:为 IF 条件内的变量赋值?

    是否有可能为 VB NET 中 IF 条件内的变量赋值 像这样的东西 Dim customer As Customer Nothing If IsNothing customer GetCustomer id Then Return Fal
  • XSLT:如何在不按内容排序的情况下反转输出

    我有一个项目清单
  • 如何在 JavaScript 中使用 zindex

    zindex 的语法是什么 我试过这样 document getElementById iframe div1 style zIndex 2000 document getElementById iframe div1 style z in
  • 当滚动条出现时,如何阻止Bootstrap 3.1.1向左移动内容?

    我正在使用 Bootstrap 3 1 1 当我有一个页面由于内容较多而需要垂直滚动条时 Bootstrap 会将 html 正文移动超过 15px 以便为垂直滚动条腾出空间 这对于 Bootstrap 模式来说是一个大问题 但我相信它在
  • Linux 上 C 语言的原子操作

    我正在尝试将我编写的一些代码从 Mac OS X 移植到 Linux 并且正在努力寻找仅适用于 OSX 的合适替代品OSAtomic h 我找到了海湾合作委员会 sync 系列 但我不确定它是否与我拥有的旧编译器 内核兼容 我需要代码在 G
  • SVG 渐变作为具有绝对位置的折线描边背景

    是否能够设置应用于折线的渐变背景的绝对位置 例如当我设置渐变时
  • 在 Swift 中制作渐变背景 - 正确的方法

    这是我的渐变背景代码 当我将它应用到我的视图上时 它隐藏了 VC 上的所有内容 就像它在前面一样 而其他所有内容都被推到了后面 如何制作不干扰我的元素的渐变视图 我在用着 IBDesignable只是为了看看它在 Storyboard 中的