【发布时间】:2016-07-01 05:28:57
【问题描述】:
如何为ios中的按钮赋予水平渐变颜色?
我试图在水平方向上将按钮渐变颜色设为蓝色,但没有正确输出。
【问题讨论】:
标签: ios uikit gradient uicolor
如何为ios中的按钮赋予水平渐变颜色?
我试图在水平方向上将按钮渐变颜色设为蓝色,但没有正确输出。
【问题讨论】:
标签: ios uikit gradient uicolor
我不确定,但试试这个代码
CAGradientLayer *btnGradient = [CAGradientLayer layer];
btnGradient.frame = btn.bounds;
btnGradient.colors = [NSArray arrayWithObjects:
(id)[[UIColor colorWithRed:102.0f / 255.0f green:102.0f / 255.0f blue:102.0f / 255.0f alpha:1.0f] CGColor],
(id)[[UIColor colorWithRed:51.0f / 255.0f green:51.0f / 255.0f blue:51.0f / 255.0f alpha:1.0f] CGColor],
nil];
[yourbtn.layer insertSublayer:btnGradient atIndex:0];
【讨论】:
这会让你为你的按钮插入一个水平渐变,第一种颜色在左边,第二种颜色在右边:
extension UIView {
func insertHorizontalGradient(_ color1: UIColor, _ color2: UIColor) {
let gradient = CAGradientLayer()
gradient.colors = [color1.cgColor, color2.cgColor]
gradient.transform = CATransform3DMakeRotation(CGFloat.pi / 2, 0, 0, 1)
gradient.frame = bounds
layer.insertSublayer(gradient, at: 0)
}
}
您可能希望保留对图层的引用以调整其框架的大小,否则请确保仅在按钮框架确定后才调用它。
【讨论】:
你可以试试下面的代码:
{
UIColor *transBgColor = [UIColor colorWithWhite:1.0 alpha:0.0];
UIColor *black = [UIColor blackColor];
CAGradientLayer *maskLayer = [CAGradientLayer layer];
maskLayer.opacity = 0.8;
maskLayer.colors = [NSArray arrayWithObjects:(id)black.CGColor,
(id)transBgColor.CGColor, (id)transBgColor.CGColor, (id)black.CGColor, nil];
// Horizontal - commenting these two lines will make the gradient vertical
maskLayer.startPoint = CGPointMake(0.0, 0.5);
maskLayer.endPoint = CGPointMake(1.0, 0.5);
NSNumber *gradTopStart = [NSNumber numberWithFloat:0.0];
NSNumber *gradTopEnd = [NSNumber numberWithFloat:0.4];
NSNumber *gradBottomStart = [NSNumber numberWithFloat:0.6];
NSNumber *gradBottomEnd = [NSNumber numberWithFloat:1.0];
maskLayer.locations = @[gradTopStart, gradTopEnd, gradBottomStart, gradBottomEnd];
maskLayer.bounds = container.bounds;
maskLayer.anchorPoint = CGPointZero;
[container.layer addSublayer:maskLayer];
}
【讨论】: