UIButton 그라데이션 배경을 스토리 보드에서 설정
소개
UIButton의 배경에 그라데이션을 붙이는 장면이 있었으므로, Storyboard상에서 외형을 보면서 설정할 수 있으면 좋겠다고 생각 UIButton의 서브 클래스를 만들었습니다.
환경: Xcode10.0, Swift 4
코드
IBDesignable을 붙이면 스토리 보드에서 설정할 수 있으며 설정하려는 변수에는 IBInspectable을 붙입니다.
상부의 색과 하부의 색을 설정, 또 테두리의 색・굵기, 각환도 설정할 수 있도록 하고 있습니다.
import UIKit
@IBDesignable
class BGButton: UIButton {
var gradientLayer = CAGradientLayer()
@IBInspectable var startColor: UIColor = UIColor.white {
didSet {
setGradient()
}
}
@IBInspectable var endColor: UIColor = UIColor.black {
didSet {
setGradient()
}
}
@IBInspectable var cornerRadius: CGFloat = 0 {
didSet {
layer.cornerRadius = cornerRadius
setGradient()
}
}
@IBInspectable var borderWidth: CGFloat = 0 {
didSet {
layer.borderWidth = borderWidth
setGradient()
}
}
@IBInspectable var borderColor: UIColor = UIColor.clear {
didSet {
layer.borderColor = borderColor.cgColor
}
}
@IBInspectable var startPoint: CGPoint = CGPoint(x: 0, y: 0.5) {
didSet {
setGradient()
}
}
@IBInspectable var endPoint: CGPoint = CGPoint(x: 0, y: 1) {
didSet {
setGradient()
}
}
private func setGradient() {
gradientLayer.removeFromSuperlayer()
gradientLayer = CAGradientLayer()
gradientLayer.colors = [startColor.cgColor, endColor.cgColor]
gradientLayer.frame.size = frame.size
gradientLayer.frame.origin = CGPoint.init(x: 0.0, y: 0.0)
gradientLayer.cornerRadius = cornerRadius
gradientLayer.zPosition = -100
gradientLayer.startPoint = startPoint
gradientLayer.endPoint = endPoint
self.layer.insertSublayer(gradientLayer, at: 0)
self.layer.masksToBounds = true
imageView?.layer.zPosition = 0
}
}
사용법
BGButton.swift
등 적절한 파일을 만들어 복사하십시오.상하의 색, 테두리, 둥근, 그라데이션의 방향을 좋아하는 것으로 바꿉니다.
※ 상당히 시간 없이 만들었기 때문에 이상한 곳 있을지도입니다.
있으면 가르쳐주세요.
- 10/25 추가
imageView 설정하면 표시되지 않는 것을 고쳤습니다.
Reference
이 문제에 관하여(UIButton 그라데이션 배경을 스토리 보드에서 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/simorgh3196/items/30fcfe809cb1582f8912텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)