색상 그라디언트로 프로그래밍 방식으로 UIView 만들기


292

런타임에 그라디언트 색상 배경 ​​(단색에서 투명으로)으로 뷰를 생성하려고합니다. 그렇게하는 방법이 있습니까?


2
이것은 그라데이션 코드를 생성하는 도움이 작은 도구입니다 itunes.apple.com/gb/app/gradient-creator/id1031070259?mt=12
burrGGG

CAGradientLayer를 사용하여 그라디언트 색상 만들기 appcoda.com/cagradientlayer
Max

답변:


694

목표 -C :

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 50)];
CAGradientLayer *gradient = [CAGradientLayer layer];

gradient.frame = view.bounds;
gradient.colors = @[(id)[UIColor whiteColor].CGColor, (id)[UIColor blackColor].CGColor];

[view.layer insertSublayer:gradient atIndex:0];

빠른:

let view = UIView(frame: CGRect(x: 0, y: 0, width: 320, height: 50))
let gradient = CAGradientLayer()

gradient.frame = view.bounds
gradient.colors = [UIColor.white.cgColor, UIColor.black.cgColor]

view.layer.insertSublayer(gradient, at: 0)

정보 : startPoint 및 endPoint를 사용 하여 그라디언트 방향변경하십시오 .

이에 추가 된 다른 뷰가있는 경우 UIView(예로서 UILabel), 당신은 사람들의 배경 색상을 설정하는 것이 좋습니다 UIView'에이야 [UIColor clearColor]그라데이션보기 대신 서브 뷰의 배경색으로 표시됩니다 있도록. 사용 clearColor에 약간의 성능 저하가 있습니다.


13
모든 솔루션 중에서 가장 짧은 코드 양에 대해 +1 난 그냥 내 기존 뷰 컨트롤러에 추가로 2 명 심판 변경 viewself.view그것은 : 마법처럼 일
Ergin

4
이 코드를 추가 할 위치도 관련이 있습니다. 이것을 작동 시키려면 다음 게시물이 필요했습니다. stackoverflow.com/a/20059268/1480518
Garrett Disco

13
이것은 많은 도움이되었습니다! 다른 곳에서 CGColor 부분을 놓쳤다! 감사합니다
Gyfis

48
그래디언트 방향을 변경하려면 'startPoint'및 'endPoint'를 사용하는 것을 잊지 마십시오. 기본값은 (0.5, 0) 및 (0.5,1)-위에서 아래로입니다.
Valentin Shamardin

12
내 UIView의이 자동 레이아웃을 사용하는 경우, 또한 전화를했다 gradient.frame = view.boundsviewDidAppear()과에 didRotateFromInterfaceOrientation()그렇지 않으면 그라데이션이 제대로 크기되지 않습니다.
EricRobertBrewer

70

사용자 정의 클래스를 만들 수 있습니다 GradientView.

스위프트 5

class GradientView: UIView {
    override open class var layerClass: AnyClass {
       return CAGradientLayer.classForCoder()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        let gradientLayer = layer as! CAGradientLayer
        gradientLayer.colors = [UIColor.white.cgColor, UIColor.black.cgColor]
    }
}

스토리 보드에서 클래스 유형을 그라디언트 배경을 가지려는보기로 설정하십시오.

여기에 이미지 설명을 입력하십시오

이것은 다음과 같은 방식으로 더 좋습니다.

  • 의 프레임을 설정할 필요가 없습니다 CLayer
  • NSConstraint평소와 같이 사용UIView
  • 하위 계층을 만들 필요가 없습니다 (메모리 사용이 적음)

1
Swift 3에서 the layerClass는 더 이상 함수가 아니며 속성이므로 stackoverflow.com/questions/28786597/… 속성처럼 재정의해야합니다 . 또한 당신은 구현해야한다 override init(frame: CGRect):이 답변 확인 stackoverflow.com/questions/27374330/...을 . 감사!
LaloLoop

@LaloLoop 님, 댓글 주셔서 감사합니다! 코드를 업데이트했습니다. init(frame:CGRect)그래도 재정의해야한다고 생각하지 않습니다 . 업데이트 된 코드를 테스트했는데 정상적으로 작동합니다.
Yuchen Zhong

@ Yuchen Zhong IB에서 충돌하지만 앱에서 작동합니다. IB에서 @IBDesignable사용 되지 않는 이유 는 무엇입니까?
Alexander Volkov

@AlexanderVolkov 다른 문제가 있습니까? 우리는 스토리 보드에서 이와 같이 사용했지만 아무런 문제가없는 것 같습니다. 스토리 보드를 디버깅하고 충돌하는 줄을 확인할 수 있습니다.
Yuchen Zhong

1
최고의 솔루션!
Baran Emre

40

이것을 시도해보십시오. 그것은 나를 위해 매력처럼 작용했습니다.

목표 C

내가 설정 한 RGB 에 그라데이션 배경 색상 의 UIView

   UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,35)];
   CAGradientLayer *gradient = [CAGradientLayer layer];
   gradient.frame = view.bounds;
   gradient.startPoint = CGPointZero;
   gradient.endPoint = CGPointMake(1, 1);
   gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor colorWithRed:34.0/255.0 green:211/255.0 blue:198/255.0 alpha:1.0] CGColor],(id)[[UIColor colorWithRed:145/255.0 green:72.0/255.0 blue:203/255.0 alpha:1.0] CGColor], nil];
   [view.layer addSublayer:gradient];

여기에 이미지 설명을 입력하십시오

업데이트 : -Swift3 +

코드 :-

 var gradientView = UIView(frame: CGRect(x: 0, y: 0, width: 320, height: 35))
 let gradientLayer:CAGradientLayer = CAGradientLayer()
 gradientLayer.frame.size = self.gradientView.frame.size
 gradientLayer.colors = 
 [UIColor.white.cgColor,UIColor.red.withAlphaComponent(1).cgColor] 
//Use diffrent colors
 gradientView.layer.addSublayer(gradientLayer)

여기에 이미지 설명을 입력하십시오

그라디언트 색상의 시작점과 끝점을 추가 할 수 있습니다.

  gradientLayer.startPoint = CGPoint(x: 0.0, y: 1.0)
  gradientLayer.endPoint = CGPoint(x: 1.0, y: 1.0)

여기에 이미지 설명을 입력하십시오

자세한 내용은 CAGradientLayer Doc을 참조하십시오.

이것이 어떤 사람에게 도움이되기를 바랍니다.


36

이것이 내가 권장하는 접근법입니다.

재사용 성을 높이기 위해 범주를 만들고 CAGradientLayer원하는 그라디언트를 클래스 메서드로 추가합니다. 다음 header과 같이 파일에 지정 하십시오.

#import <QuartzCore/QuartzCore.h>

@interface CAGradientLayer (SJSGradients)

+ (CAGradientLayer *)redGradientLayer;
+ (CAGradientLayer *)blueGradientLayer;
+ (CAGradientLayer *)turquoiseGradientLayer;
+ (CAGradientLayer *)flavescentGradientLayer;
+ (CAGradientLayer *)whiteGradientLayer;
+ (CAGradientLayer *)chocolateGradientLayer;
+ (CAGradientLayer *)tangerineGradientLayer;
+ (CAGradientLayer *)pastelBlueGradientLayer;
+ (CAGradientLayer *)yellowGradientLayer;
+ (CAGradientLayer *)purpleGradientLayer;
+ (CAGradientLayer *)greenGradientLayer;

@end

그런 다음 구현 파일에서 다음 구문으로 각 그라디언트를 지정하십시오.

+ (CAGradientLayer *)flavescentGradientLayer
{
    UIColor *topColor = [UIColor colorWithRed:1 green:0.92 blue:0.56 alpha:1];
    UIColor *bottomColor = [UIColor colorWithRed:0.18 green:0.18 blue:0.18 alpha:1];

    NSArray *gradientColors = [NSArray arrayWithObjects:(id)topColor.CGColor, (id)bottomColor.CGColor, nil];
    NSArray *gradientLocations = [NSArray arrayWithObjects:[NSNumber numberWithInt:0.0],[NSNumber numberWithInt:1.0], nil];

    CAGradientLayer *gradientLayer = [CAGradientLayer layer];
    gradientLayer.colors = gradientColors;
    gradientLayer.locations = gradientLocations;

    return gradientLayer;
}

그런 다음이 범주를 귀하 ViewController또는 다른 필수 항목으로 가져 와서 다음 subclass과 같이 사용하십시오.

CAGradientLayer *backgroundLayer = [CAGradientLayer purpleGradientLayer];
backgroundLayer.frame = self.view.frame;
[self.view.layer insertSublayer:backgroundLayer atIndex:0];

그것을 사용하기 위해 코드를 어디에 두어야합니까? 어떤 수명주기 방법? viewdidappear가 너무 늦게 표시됩니다. viewdidload 및 viewdidappear가 회전하는 동안 작동하지 않습니다. viewdidlayoutsubviews는 회전에 더 효과적이지만 여전히 약간 고르지 않게 보입니다.
Adam Johns

나는 개인적으로 그것을 넣었다viewDidLoad
Sam Fischer

1
에 넣었을 때 viewDidLoad앱이 가로 방향으로 시작된 경우 작동하지 않았습니다. 내 해결책은 다른 방향을 보완하기 위해 배경 레이어 프레임을 view.frame보다 넓게 만드는 것입니다.
Adam Johns

2
viewDidLoad가 작동하면 [backgroundLayer setAutoresizingMask : UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight]를 사용하여 AutoResizingMask도 설정해야합니다.
ekscrypto

21

내 앱 전체에 한 가지 유형의 그라디언트 만 필요했기 때문에 UIView의 하위 클래스를 만들고 고정 색상으로 초기화 할 때 그라디언트 레이어를 사전 구성했습니다. UIView의 이니셜 라이저는 configureGradientLayer -method를 호출하여 CAGradientLayer를 구성합니다.

DDGradientView.h :

#import <UIKit/UIKit.h>

@interface DDGradientView : UIView {

}
@end

DDGradientView.m :

#import "DDGradientView.h"

@implementation DDGradientView

// Change the views layer class to CAGradientLayer class
+ (Class)layerClass
{
    return [CAGradientLayer class];
}

- (instancetype)initWithCoder:(NSCoder *)aDecoder {
    self = [super initWithCoder:aDecoder];
    if(self) {
        [self configureGradientLayer];
    }
    return self;
}

- (instancetype)initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];
    if(self) {
        [self configureGradientLayer];
    }
    return self;
}

// Make custom configuration of your gradient here   
- (void)configureGradientLayer {
    CAGradientLayer *gLayer = (CAGradientLayer *)self.layer;
    gLayer.colors = [NSArray arrayWithObjects:(id)[[UIColor whiteColor] CGColor], (id)[[UIColor lightGrayColor] CGColor], nil];
}
@end

메소드 이름 initGradientLayer은 이니셜 라이저와 유사합니다. 나는 그것이 매우 적합하다고 생각하지 않습니다.
DawnSong

@DawnSong 좋은 점은 'configureGradientLayer'로 변경했습니다.
blauzahn

12

신속한 구현 :

var gradientLayerView: UIView = UIView(frame: CGRectMake(0, 0, view.bounds.width, 50))
var gradient: CAGradientLayer = CAGradientLayer()
gradient.frame = gradientLayerView.bounds
gradient.colors = [UIColor.grayColor().CGColor, UIColor.clearColor().CGColor]
gradientLayerView.layer.insertSublayer(gradient, atIndex: 0)
self.view.layer.insertSublayer(gradientLayerView.layer, atIndex: 0)

11

Swift의 확장 기능과 열거 형을 사용하여 허용되는 답변을 약간 확장했습니다.

내가 할이 만들처럼 스토리 보드를 사용하는 경우 아, 그리고 확실히 호출 gradientBackground(from:to:direction:)viewDidLayoutSubviews()이상이 필요합니다.

스위프트 3

enum GradientDirection {
    case leftToRight
    case rightToLeft
    case topToBottom
    case bottomToTop
}

extension UIView {
    func gradientBackground(from color1: UIColor, to color2: UIColor, direction: GradientDirection) {
        let gradient = CAGradientLayer()
        gradient.frame = self.bounds
        gradient.colors = [color1.cgColor, color2.cgColor]

        switch direction {
        case .leftToRight:
            gradient.startPoint = CGPoint(x: 0.0, y: 0.5)
            gradient.endPoint = CGPoint(x: 1.0, y: 0.5)
        case .rightToLeft:
            gradient.startPoint = CGPoint(x: 1.0, y: 0.5)
            gradient.endPoint = CGPoint(x: 0.0, y: 0.5)
        case .bottomToTop:
            gradient.startPoint = CGPoint(x: 0.5, y: 1.0)
            gradient.endPoint = CGPoint(x: 0.5, y: 0.0)
        default:
            break
        }

        self.layer.insertSublayer(gradient, at: 0)
    }
}

10

나는 이것을 확장으로 신속하게 구현했다.

스위프트 3

extension UIView {
    func addGradientWithColor(color: UIColor) {
        let gradient = CAGradientLayer()
        gradient.frame = self.bounds
        gradient.colors = [UIColor.clear.cgColor, color.cgColor]

        self.layer.insertSublayer(gradient, at: 0)
    }
}

스위프트 2.2

extension UIView {
    func addGradientWithColor(color: UIColor) {
        let gradient = CAGradientLayer()
        gradient.frame = self.bounds
        gradient.colors = [UIColor.clearColor().CGColor, color.CGColor]

        self.layer.insertSublayer(gradient, atIndex: 0)
    }
}

아니요 다음과 같이 모든 뷰에서 그라디언트를 설정할 수 있습니다.

myImageView.addGradientWithColor(UIColor.blue)

Swift3 호출은 다음과 같아야합니다. myImageView.addGradientWithColor (color : UIColor.blue)
mgyky

8

신속한 접근

이 답변은 위의 답변을 기반으로하며 회전 중에 그라디언트가 올바르게 적용되지 않는 문제를 처리하기위한 구현을 제공합니다. 그라디언트 레이어를 정사각형으로 변경하여 모든 방향으로 회전하여 올바른 그라디언트를 만들어이 문제를 해결합니다. 함수 시그니처에는 Swift variadic 인수가 포함되어있어 필요한만큼 CGColorRef (CGColor)를 전달할 수 있습니다 (샘플 사용 참조). UIView에 그라디언트를 적용 할 수 있도록 Swift 확장으로 예제도 제공됩니다.

   func configureGradientBackground(colors:CGColorRef...){

        let gradient: CAGradientLayer = CAGradientLayer()
        let maxWidth = max(self.view.bounds.size.height,self.view.bounds.size.width)
        let squareFrame = CGRect(origin: self.view.bounds.origin, size: CGSizeMake(maxWidth, maxWidth))
        gradient.frame = squareFrame

        gradient.colors = colors
        view.layer.insertSublayer(gradient, atIndex: 0)
    }

쓰다:

viewDidLoad에서 ...

  override func viewDidLoad() {
        super.viewDidLoad()
        configureGradientBackground(UIColor.redColor().CGColor, UIColor.whiteColor().CGColor)
  }

확장 구현

extension CALayer {


    func configureGradientBackground(colors:CGColorRef...){

        let gradient = CAGradientLayer()

        let maxWidth = max(self.bounds.size.height,self.bounds.size.width)
        let squareFrame = CGRect(origin: self.bounds.origin, size: CGSizeMake(maxWidth, maxWidth))
        gradient.frame = squareFrame

        gradient.colors = colors

        self.insertSublayer(gradient, atIndex: 0)
    }

}

확장 사용 사례 예 :

 override func viewDidLoad() {
        super.viewDidLoad()

        self.view.layer.configureGradientBackground(UIColor.purpleColor().CGColor, UIColor.blueColor().CGColor, UIColor.whiteColor().CGColor)
 }

이는 모든 컨트롤이 UIView (또는 하위 클래스)이고 모든 UIView에 CALayer가 있으므로 그라데이션 배경을 모든 UIControl에 적용 할 수 있음을 의미합니다.

스위프트 4

확장 구현

extension CALayer {
    public func configureGradientBackground(_ colors:CGColor...){

        let gradient = CAGradientLayer()

        let maxWidth = max(self.bounds.size.height,self.bounds.size.width)
        let squareFrame = CGRect(origin: self.bounds.origin, size: CGSize(width: maxWidth, height: maxWidth))
        gradient.frame = squareFrame

        gradient.colors = colors

        self.insertSublayer(gradient, at: 0)
    }    
}

확장 사용 사례 예 :

override func viewDidLoad() {
    super.viewDidLoad()

    self.view.layer.configureGradientBackground(UIColor.purple.cgColor, UIColor.blue.cgColor, UIColor.white.cgColor)
}

5

당신이 찾고있는 것은입니다 CAGradientLayer. 모든 UIView계층에는 하위 계층을 추가 할 수있는 것처럼 하위 계층을 추가 할 수있는 계층이 있습니다. 특정 유형 중 하나 CAGradientLayer는를 등급을 매기는 색상의 배열을 제공하는입니다.

한 가지 예는 그라디언트 뷰를위한이 간단한 래퍼입니다.

http://oleb.net/blog/2010/04/obgradientview-a-simple-uiview-wrapper-for-cagradientlayer/

UIView의 모든 레이어 부분에 액세스하려면 QuartZCore 프레임 워크를 포함해야합니다.


4

스위프트 4 :

IB에서 그라디언트를 올바르게 표시합니다.

@IBDesignable public class GradientView: UIView {

    override open class var layerClass: AnyClass {
        return CAGradientLayer.classForCoder()
    }

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

    public override init(frame: CGRect) {
        super.init(frame: frame)
        configureGradientLayer()
    }

    func configureGradientLayer() {
        let gradientLayer = layer as! CAGradientLayer
        gradientLayer.colors = [UIColor(hex: 0x003399).cgColor, UIColor(hex: 0x00297b).cgColor]
    }
}

4
extension UIView {

    func applyGradient(isVertical: Bool, colorArray: [UIColor]) {
        if let sublayers = layer.sublayers {
            sublayers.filter({ $0 is CAGradientLayer }).forEach({ $0.removeFromSuperlayer() })
        }

        let gradientLayer = CAGradientLayer()
        gradientLayer.colors = colorArray.map({ $0.cgColor })
        if isVertical {
            //top to bottom
            gradientLayer.locations = [0.0, 1.0]
        } else {
            //left to right
            gradientLayer.startPoint = CGPoint(x: 0.0, y: 0.5)
            gradientLayer.endPoint = CGPoint(x: 1.0, y: 0.5)
        }

        backgroundColor = .clear
        gradientLayer.frame = bounds
        layer.insertSublayer(gradientLayer, at: 0)
    }

}

용법

someView.applyGradient(isVertical: true, colorArray: [.green, .blue])

3

Yuchen의 버전을 기반으로 한 간단한 빠른보기

class GradientView: UIView {
    override class func layerClass() -> AnyClass { return CAGradientLayer.self }

    lazy var gradientLayer: CAGradientLayer = {
        return self.layer as! CAGradientLayer
    }()

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

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

}

그런 다음 초기화 후 gradientLayer를 사용할 수 있습니다 ...

someView.gradientLayer.colors = [UIColor.whiteColor().CGColor, UIColor.blackColor().CGColor]

3

내 솔루션은 읽기 전용 속성 UIView으로 CAGradientLayer액세스 가능한 하위 클래스 를 만드는 것 입니다. 그래야 원하는 방식으로 그라디언트를 사용자 정의 할 수 있으며 레이아웃 변경을 직접 처리 할 필요가 없습니다. 서브 클래스 구현 :

@interface GradientView : UIView

@property (nonatomic, readonly) CAGradientLayer *gradientLayer;

@end

@implementation GradientView

+ (Class)layerClass
{
    return [CAGradientLayer class];
}

- (CAGradientLayer *)gradientLayer
{
    return (CAGradientLayer *)self.layer;
}

@end

용법:

self.iconBackground = [GradientView new];
[self.background addSubview:self.iconBackground];
self.iconBackground.gradientLayer.colors = @[(id)[UIColor blackColor].CGColor, (id)[UIColor whiteColor].CGColor];
self.iconBackground.gradientLayer.startPoint = CGPointMake(1.0f, 1.0f);
self.iconBackground.gradientLayer.endPoint = CGPointMake(0.0f, 0.0f);

3

위의 솔루션을 호출하여 레이어를 업데이트하는 것이 좋습니다

viewDidLayoutSubviews

뷰가 올바르게 업데이트되도록


2

스위프트 3

보기에 그라디언트 레이어를 추가하려면

  • 뷰 아울렛 바인딩

    @IBOutlet var YOURVIEW : UIView!
  • CAGradientLayer () 정의

    var gradient = CAGradientLayer()
  • viewDidLoad에 작성해야하는 코드는 다음과 같습니다.

    YOURVIEW.layoutIfNeeded()

    gradient.startPoint = CGPoint(x: CGFloat(0), y: CGFloat(1)) gradient.endPoint = CGPoint(x: CGFloat(1), y: CGFloat(0)) gradient.frame = YOURVIEW.bounds gradient.colors = [UIColor.red.cgColor, UIColor.green.cgColor] gradient.colors = [ UIColor(red: 255.0/255.0, green: 56.0/255.0, blue: 224.0/255.0, alpha: 1.0).cgColor,UIColor(red: 86.0/255.0, green: 13.0/255.0, blue: 232.0/255.0, alpha: 1.0).cgColor,UIColor(red: 16.0/255.0, green: 173.0/255.0, blue: 245.0/255.0, alpha: 1.0).cgColor] gradient.locations = [0.0 ,0.6 ,1.0] YOURVIEW.layer.insertSublayer(gradient, at: 0)


1
이 접근 방식을 사용하여 "topview"를 내보기의 IBoutlet 이름으로 변경했습니다. "SearchView"줄을 삭제했습니다.
jessi

좋은 계획-또한 gradient.colors 설정 중 하나를 사용할 수 있습니다. 따라서 명명 된 UI 색상을 사용하여 간단한 gradient.colors를 주석 처리하면 이미지는 동일하지만 다른 것을 주석 처리하면 색상 그라데이션이 빨간색에서 녹색에 의존합니다. 사용자는 둘 중 하나를 수행 할 수 있습니다.
jessi

1

Swift 3.1에서는 UIView에이 확장을 추가했습니다

import Foundation
import UIKit
import CoreGraphics


extension UIView {
    func gradientOfView(withColours: UIColor...) {

        var cgColours = [CGColor]()

        for colour in withColours {
            cgColours.append(colour.cgColor)
        }
        let grad = CAGradientLayer()
        grad.frame = self.bounds
        grad.colors = cgColours
        self.layer.insertSublayer(grad, at: 0)
    }
}

그런 다음 내가 전화

    class OverviewVC: UIViewController {

        override func viewDidLoad() {
            super.viewDidLoad()

            self.view.gradientOfView(withColours: UIColor.red,UIColor.green, UIColor.blue)

        }
}

0

내 코드에서 이것을 구현했습니다.

UIView *view1 = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.view.frame.size.width, 31.0f)];
view1.backgroundColor = [UIColor clearColor];
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = view1.bounds;
UIColor *topColor = [UIColor colorWithRed:132.0/255.0 green:222.0/255.0 blue:109.0/255.0 alpha:1.0];
UIColor *bottomColor = [UIColor colorWithRed:31.0/255.0 green:150.0/255.0 blue:99.0/255.0 alpha:1.0];
gradient.colors = [NSArray arrayWithObjects:(id)[topColor CGColor], (id)[bottomColor CGColor], nil];


[view1.layer insertSublayer:gradient atIndex:0];

이제 뷰에서 그라디언트를 볼 수 있습니다.


0

UIView에 그라디언트 색상을 지정하려면 (swift 4.2)

func makeGradientLayer(`for` object : UIView, startPoint : CGPoint, endPoint : CGPoint, gradientColors : [Any]) -> CAGradientLayer {
        let gradient: CAGradientLayer = CAGradientLayer()
        gradient.colors = gradientColors
        gradient.locations = [0.0 , 1.0]
        gradient.startPoint = startPoint
        gradient.endPoint = endPoint
        gradient.frame = CGRect(x: 0, y: 0, w: object.frame.size.width, h: object.frame.size.height)
        return gradient
    }

사용하는 방법

let start : CGPoint = CGPoint(x: 0.0, y: 1.0)
let end : CGPoint = CGPoint(x: 1.0, y: 1.0)

let gradient: CAGradientLayer = makeGradientLayer(for: cell, startPoint: start, endPoint: end, gradientColors: [
                    UIColor(red:0.92, green:0.07, blue:0.4, alpha:1).cgColor,
                    UIColor(red:0.93, green:0.11, blue:0.14, alpha:1).cgColor
                    ])

self.vwTemp.layer.insertSublayer(gradient, at: 0)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.