iOS/Swift + Objective-c

[objective-c] UIView 그라데이션 넣기 (CAGradientLayer)

안경 쓴 귀니 2021. 8. 1. 13:02
반응형

UIView에 gradient 넣는 방법

일반적으로 두 가지 색상으로 가로 또는 세로 그라데이션을 넣는 방법이다.

 

가로 그라데이션과 세로 그라데이션 적용 방법

Utils.m

+(void)setVerticalGradient:(id)viewId topColor:(UIColor*)topColor bottomColor:(UIColor*)bottomColor {
    [self setGradient:viewId isVertical:YES firstColor:topColor secondColor:bottomColor];
}

+(void)setHorizontalGradient:(id)viewId leftColor:(UIColor*)leftColor rightColor:(UIColor*)rightColor {
    [self setGradient:viewId isVertical:NO firstColor:leftColor secondColor:rightColor];
}

/// 그라데이션 넣기
/// @param viewId 뷰
/// @param isVertical YES : 세로 그라데이션, NO : 가로 그라데이션
/// @param firstColor 위 또는 왼쪽 색상
/// @param secondColor 아래 또는 오른쪽 색상
+(void)setGradient:(id)viewId isVertical:(BOOL)isVertical firstColor:(UIColor*)firstColor secondColor:(UIColor*)secondColor {
    UIView *view = (UIView*)viewId;
    CAGradientLayer *gradientLayer = [CAGradientLayer layer];
    gradientLayer.frame = view.layer.bounds;

    gradientLayer.colors = [NSArray arrayWithObjects:
                            (id)firstColor.CGColor,
                            (id)secondColor.CGColor,
                            nil];
    if (isVertical) {
        gradientLayer.startPoint = CGPointMake(0.0, 0.0);
        gradientLayer.endPoint = CGPointMake(0.0, 1.0);
    } else {
        gradientLayer.startPoint = CGPointMake(0.0, 0.0);
        gradientLayer.endPoint = CGPointMake(1.0, 0.0);
    }
    [view.layer insertSublayer:gradientLayer atIndex:0];
}

 

적용 방법

// 가로 그라데이션
[Utils setHorizontalGradient:_btn1 leftColor:[UIColor redColor] rightColor:[UIColor blueColor]];

// 세로 그라데이션
[Utils setVerticalGradient:_btn2 topColor:[UIColor redColor] bottomColor:[UIColor blueColor]];

 

결과

반응형