gpt4 book ai didi

ios - 在 Swift 中为按钮设置背景渐变

转载 作者:IT王子 更新时间:2023-10-29 05:22:04 24 4
gpt4 key购买 nike

我不知道如何在按钮上设置背景渐变(不使背景渐变成为图像)。这与 Android 有很大不同。

这是我必须定义可返回渐变方案的类:

import UIKit

extension CAGradientLayer {

func backgroundGradientColor() -> CAGradientLayer {
let topColor = UIColor(red: (0/255.0), green: (153/255.0), blue:(51/255.0), alpha: 1)
let bottomColor = UIColor(red: (0/255.0), green: (153/255.0), blue:(255/255.0), alpha: 1)

let gradientColors: [CGColor] = [topColor.CGColor, bottomColor.CGColor]
let gradientLocations: [Float] = [0.0, 1.0]

let gradientLayer: CAGradientLayer = CAGradientLayer()
gradientLayer.colors = gradientColors
gradientLayer.locations = gradientLocations

return gradientLayer

}
}

我可以使用它来设置我的整个 View 的背景:

class ViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()

let background = CAGradientLayer().backgroundGradientColor()
background.frame = self.view.bounds
self.view.layer.insertSublayer(background, atIndex: 0)
}
//...
}

但是我怎样才能访问按钮的 View 并插入子层或类似的东西呢?

最佳答案

您的代码运行良好。您只需要记住每次都设置渐变的框架。最好只让渐变类别也为您设置 View 的框架。

这样你就不会忘记,而且适用性很好。

import UIKit

extension UIView {

func applyGradient(colours: [UIColor]) -> CAGradientLayer {
return self.applyGradient(colours: colours, locations: nil)
}


func applyGradient(colours: [UIColor], locations: [NSNumber]?) -> CAGradientLayer {
let gradient: CAGradientLayer = CAGradientLayer()
gradient.frame = self.bounds
gradient.colors = colours.map { $0.cgColor }
gradient.locations = locations
self.layer.insertSublayer(gradient, at: 0)
return gradient
}
}

class ViewController: UIViewController {

@IBOutlet weak var btn: UIButton!

override func viewDidLoad() {
super.viewDidLoad()

self.btn.applyGradient(colours: [.yellow, .blue])
self.view.applyGradient(colours: [.yellow, .blue, .red], locations: [0.0, 0.5, 1.0])
}


}

按钮是 View 。您可以像将其应用于任何其他 View 一样对其应用渐变。

图片证明: enter image description here

视频证明: https://i.imgur.com/ssDTqPu.mp4

关于ios - 在 Swift 中为按钮设置背景渐变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37903124/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com