首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CAGradientLayer in SwiftUI

CAGradientLayer in SwiftUI
EN

Stack Overflow用户
提问于 2022-08-12 23:01:46
回答 1查看 139关注 0票数 1

我正在将我的项目转换为SwiftUI,并使用带有渐变的背景。我不知道如何将下面的内容转换为SwiftUI视图:

代码语言:javascript
复制
let layer = CAGradientLayer()
layer.colors = [
  UIColor(red: 0.165, green: 0.224, blue: 0.314, alpha: 1).cgColor,
  UIColor(red: 0.112, green: 0.17, blue: 0.26, alpha: 1).cgColor]

layer.locations = [0.45, 1]
layer.startPoint = CGPoint(x: 0.25, y: 0.5)
layer.endPoint = CGPoint(x: 0.75, y: 0.5)
layer.transform = CATransform3DMakeAffineTransform(CGAffineTransform(a: 0, b: 0.46, c: -0.46, d: 0, tx: 0.73, ty: 0.68))
layer.bounds = view.bounds.insetBy(dx: -0.5*view.bounds.size.width, dy: -0.5*view.bounds.size.height)
layer.position = view.center
view.layer.addSublayer(layer)

我尝试了以下几种方法,但结果并不相同:

代码语言:javascript
复制
LinearGradient(gradient: Gradient(colors: [Color("BackgroundNEWTop"), Color("BackgroundNEWBottom")]), startPoint: .top, endPoint: .bottom))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-13 03:12:39

在测试了您的UIKit代码之后,这是我在SwiftUI中复制的最接近的代码。我在这里包含了结果图像,但是您应该先尝试这段代码,因为在线图像看起来可能略有不同。

示例代码和图像如下:

代码语言:javascript
复制
struct SampleView: View {
  let color1 = Color.init(red: 0.112, green: 0.17, blue: 0.26)
  let color2 = Color.init(red: 0.165, green: 0.224, blue: 0.314)
  var body: some View {
    ZStack {
        LinearGradient(colors: [color1, color2],
                       startPoint: UnitPoint(x: 0.75, y: 0.5),
                       endPoint: UnitPoint(x: 0.25, y: 0.5))
    }
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73340461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档