iOS 可设计的按钮背景颜色不起作用
iOS Designable Button Background color don't work
我使用以下代码创建了一个自定义 UIButton:
@implementation HGButton
- (instancetype)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame]) {
[self initVariables];
[self customInit];
}
return self;
}
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
[self initVariables];
[self customInit];
}
return self;
}
- (void)drawRect:(CGRect)rect
{
[self customInit];
}
- (void)setNeedsLayout
{
[super setNeedsLayout];
[self setNeedsDisplay];
}
- (void)prepareForInterfaceBuilder
{
[self customInit];
}
-(void) initVariables
{
self.fillColor = [UIColor lightGrayColor];
self.borderWidth = 2;
self.cornerRadious = 10;
}
- (void)customInit
{
[self setBackgroundColor:self.fillColor];
self.layer.cornerRadius = self.cornerRadious;
self.layer.borderWidth = self.borderWidth;
if (self.cornerRadious > 0) {
self.layer.masksToBounds = YES;
}
}
这是一个非常简单的代码。将我的按钮添加到情节提要中的视图时,它看起来很完美。
但是当我播放应用程序时,按钮背景颜色始终为浅灰色。
当我按下按钮时,它的背景颜色会更改为情节提要中选择的颜色。
这是为什么?哪里出错了?
因为当 self.fillcolor
已通过故事板更改时,您没有更新背景颜色。
假设你有这个
@property (nonatomic, copy) IBInspectable UIColor *fillcolor;
在您的 class
中添加以下代码
- (void)setFillColor:(UIColor *)fillColor {
if (fillColor != _fillColor) {
_fillColor = fillColor;
[self customInit];
}
}
希望对您有所帮助。
干杯。
你应该写一个'set method'来监控fillColor。
- (void)setFillColor:(UIColor *)fillColor
{
_fillColor = fillColor;
self.backgroundColor = fillColor;
}
将此添加到您的 class
- (void)setFillColor:(UIColor *)fillColor {
self.backgroundColor = fillColor;
}
我使用以下代码创建了一个自定义 UIButton:
@implementation HGButton
- (instancetype)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame]) {
[self initVariables];
[self customInit];
}
return self;
}
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
[self initVariables];
[self customInit];
}
return self;
}
- (void)drawRect:(CGRect)rect
{
[self customInit];
}
- (void)setNeedsLayout
{
[super setNeedsLayout];
[self setNeedsDisplay];
}
- (void)prepareForInterfaceBuilder
{
[self customInit];
}
-(void) initVariables
{
self.fillColor = [UIColor lightGrayColor];
self.borderWidth = 2;
self.cornerRadious = 10;
}
- (void)customInit
{
[self setBackgroundColor:self.fillColor];
self.layer.cornerRadius = self.cornerRadious;
self.layer.borderWidth = self.borderWidth;
if (self.cornerRadious > 0) {
self.layer.masksToBounds = YES;
}
}
这是一个非常简单的代码。将我的按钮添加到情节提要中的视图时,它看起来很完美。 但是当我播放应用程序时,按钮背景颜色始终为浅灰色。 当我按下按钮时,它的背景颜色会更改为情节提要中选择的颜色。
这是为什么?哪里出错了?
因为当 self.fillcolor
已通过故事板更改时,您没有更新背景颜色。
假设你有这个
@property (nonatomic, copy) IBInspectable UIColor *fillcolor;
在您的 class
中添加以下代码- (void)setFillColor:(UIColor *)fillColor {
if (fillColor != _fillColor) {
_fillColor = fillColor;
[self customInit];
}
}
希望对您有所帮助。
干杯。
你应该写一个'set method'来监控fillColor。
- (void)setFillColor:(UIColor *)fillColor
{
_fillColor = fillColor;
self.backgroundColor = fillColor;
}
将此添加到您的 class
- (void)setFillColor:(UIColor *)fillColor {
self.backgroundColor = fillColor;
}