Swift自定义背景色渐变按钮

想让按钮更有吸引力吗?使用渐变背景的 Button 效果挺不错的,是给用户界面加点新意。在 Swift 中实现这个效果,其实没那么复杂,关键是要用到CAGradientLayer。它能让你轻松实现颜色渐变效果,不需要自己手动每个颜色变化。
你只需要给按钮添加一个渐变的CAGradientLayer,设置渐变的颜色、方向啥的,按钮就有了渐变效果。这里我给你一个代码示例,帮你快速上手:

import UIKit
class GradientButton: UIButton {
  private lazy var gradientLayer: CAGradientLayer = {
    let gradientLayer = CAGradientLayer()
    gradientLayer.colors = [UIColor.red.cgColor, UIColor.blue.cgColor]
    gradientLayer.startPoint = CGPoint(x: 0.5, y: 0)
    gradientLayer.endPoint = CGPoint(x: 0.5, y: 1)
    return gradientLayer
  }()
  override init(frame: CGRect) {
    super.init(frame: frame)
    setupGradient()
  }
  required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    setupGradient()
  }
  private func setupGradient() {
    layer.addSublayer(gradientLayer)
    gradientLayer.frame = bounds
  }
  override func layoutSubviews() {
    super.layoutSubviews()
    gradientLayer.frame = bounds
  }
}
你可以根据自己的需求调整颜色和渐变方向。
此外,别忘了给按钮添加响应事件,确保用户点击时不会出现问题。要是有更复杂的需求,像水平渐变或者动画效果,XMColorButton是个不错的开源项目,可以帮你省不少事。
如果你对 iOS 自定义视图有兴趣,这个渐变按钮是个好的练习,能加深你对CAGradientLayer的理解,同时也能提升 UI 设计能力。
还有,别忘了在实际项目中,按钮背景随时变动,所以记得更新它的 frame 哦。

zip
swift-自定义背景色渐变的Button.zip 预估大小:17个文件
folder
XMColorButton-master 文件夹
file
colorButton.png 43KB
folder
XMColorButton.xcodeproj 文件夹
folder
project.xcworkspace 文件夹
file
contents.xcworkspacedata 158B
folder
xcuserdata 文件夹
folder
zxm.xcuserdatad 文件夹
folder
xcschemes 文件夹
file
xcschememanagement.plist 485B
file
XMColorButton.xcscheme 3KB
file
project.pbxproj 13KB
file
README.md 1KB
folder
XMColorButton 文件夹
file
ViewController.m 2KB
file
XMColorButton.m 3KB
file
Info.plist 1KB
file
main.m 336B
folder
Base.lproj 文件夹
file
LaunchScreen.storyboard 2KB
file
Main.storyboard 2KB
file
ViewController.h 217B
file
AppDelegate.h 279B
folder
Assets.xcassets 文件夹
folder
AppIcon.appiconset 文件夹
file
Contents.json 1KB
file
XMColorButton.h 565B
file
AppDelegate.m 2KB
zip 文件大小:31.51KB