iOS:颜色更改圆形按钮
我正在尝试制作一个按钮来显示/隐藏颜色选择滑块。这是最简单的部分 我不知道该如何做的是使按钮是一个带有轮廓的圆(比如黑色),填充是滑块中显示的颜色。当用户移动滑块时,圆圈的颜色应相应改变 我对iOS开发还不熟悉,所以我可能完全错了。我真的很感激任何想法,即使它们与我这里的完全不同 我开始用一个使用QuartzCore层的子类来处理这个问题,结果是不错的,但是有一些问题/事情困扰着我:iOS:颜色更改圆形按钮,ios,cocoa-touch,uibutton,Ios,Cocoa Touch,Uibutton,我正在尝试制作一个按钮来显示/隐藏颜色选择滑块。这是最简单的部分 我不知道该如何做的是使按钮是一个带有轮廓的圆(比如黑色),填充是滑块中显示的颜色。当用户移动滑块时,圆圈的颜色应相应改变 我对iOS开发还不熟悉,所以我可能完全错了。我真的很感激任何想法,即使它们与我这里的完全不同 我开始用一个使用QuartzCore层的子类来处理这个问题,结果是不错的,但是有一些问题/事情困扰着我: 由于某些原因,我按下按钮时没有突出显示状态 使用圆角来实现圆显然很奇怪 不幸的是,在我绘制图层的时候,按钮还没有
#import "ColorPickerButton.h"
@implementation ColorPickerButton
#pragma mark - UIButton Overrides
+ (ColorPickerButton *)buttonWithType:(UIButtonType)buttonType
{
return [super buttonWithType:UIButtonTypeCustom];
}
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self)
{
r = 0.3;
g = 0.6;
b = 0.9;
[self drawOutline];
[self drawColor];
}
return self;
}
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}
- (void)layoutSubviews
{
_outlineLayer.frame = CGRectInset(self.bounds, 5, 5);
_colorLayer.frame = CGRectInset(self.bounds, 5+_outlineLayer.borderWidth, 5+_outlineLayer.borderWidth);
[super layoutSubviews];
}
#pragma mark - Layer setters
- (void)drawOutline
{
if (!_outlineLayer)
{
_outlineLayer = [CALayer layer];
_outlineLayer.cornerRadius = 20.0;
_outlineLayer.borderWidth = 3;
_outlineLayer.borderColor = [[UIColor colorWithRed:170.0/255.0 green:170.0/255.0 blue:170.0/255.0 alpha:1.0] CGColor];
_outlineLayer.opacity = 0.6;
[self.layer insertSublayer:_outlineLayer atIndex:1];
}
}
- (void)drawColor
{
if (!_colorLayer)
{
_colorLayer = [CALayer layer];
}
_colorLayer.cornerRadius = 16.0;
_colorLayer.backgroundColor = [[UIColor colorWithRed:r green:g blue:b alpha:1.0] CGColor];
_colorLayer.opacity = 1.0;
[self.layer insertSublayer:_colorLayer atIndex:2];
}
- (void)changeColorWithRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue
{
r = red;
g = green;
b = blue;
[self drawColor];
}
@end
我们在应用程序中执行此操作。我们在按钮上使用CALayer并添加圆角,圆角大小为组件宽度的1/2。我们为按钮添加边框,然后设置按钮背景色以获得“填充”颜色。效果很好。同意,尽管这不是创建边框的最佳方法,但您始终可以使用圆角来实现所需的目标。这样做很好的一个原因是,您不会绘制不必要的边框,因为与圆角相比,这是一个相当繁重的操作。