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]];
결과
반응형