iOS错误整理--自定义按钮,给按钮内部赋值出现的错误

一、练习中为了实现自定义按钮,按钮中的imageView和titleLabel默认是左右排列的。在练习中自定义为上下排列。

*在以下方法中重新布局按钮中的子控件

 - (void)layoutSubviews
{
[super layoutSubviews];
CGFloat buttonH = self.frame.size.height;
CGFloat buttonW = self.frame.size.width;
CGFloat labelH = buttonH - buttonW;
// 布局子控件
self.imageView.frame = CGRectMake(, , buttonW, buttonW);
self.titleLabel.frame = CGRectMake(, buttonW, buttonW, labelH);
}

*子控件布局完成之后,在以下方法设置子控件的颜色,文字,大小之类

注意:按钮的很多属性都是有各种状态的,正常状态,高亮状态等。设置这种属性要加上状态!

设置带有状态的属性,正确代码如下:

 - (instancetype)initWithFrame:(CGRect)frame
{
// 调用父类的initWithFrame方法
if (self = [super initWithFrame:frame]) {
self.titleLabel.textAlignment = NSTextAlignmentCenter;
// 设置titleLabel中的字体颜色
[self setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
// 设置按钮背景图片
[self setBackgroundImage:[UIImage imageNamed:@"add"] forState:UIControlStateNormal];
} ;
return self;
}

错误写法:带有状态的属性不能直接赋值,没有效果

        self.titleLabel.text = @"删除";
self.imageView.image = [UIImage imageNamed:@"add"];
上一篇:<停车卫> 产品需求说明书 version 2.0


下一篇:NPOI插入图片到excel指定单元格