刚刚写了一个button,没有思考的就给它设置title,如下面的方式
loginBtn.titleLabel.text = @"登录";
loginBtn.titleLabel.textColor = [UIColor redColor];
发现这2个属性并没有什么卵用,宛如智障的我还在思索,咋不显示呢。
原来UIButton是要分状态的,因为UIButton继承于UIControl,在设置值的时候需要对象状态,要如下设置
[loginBtn setTitle:@"登录" forState:UIControlStateNormal];
[loginBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
更新title时,都要设置状态的
当通过titleLable设置时,我们可以看下,控制台打印的信息
它的frame是0,隐藏状态,所以就不会显示,看了一下别人的见解,说要设置titleLabel的frame,如下所示,但是然并卵,控制台打印的信息仍然是上面那种情况
loginBtn.titleLabel.frame = CGRectMake(10, 350, 100, 50)
[loginBtn.titleLabel setHidden:NO] ;
所以,我们只能通过setTitle设置
[loginBtn setTitle:@"点击登录" forState:UIControlStateNormal];
[loginBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
setTitle这个方法,实际上就是利用titleLabel设置,我们来看下打印的信息
D72D4DB754F349097A99670F24D6C7CC.png发现通过setTitle设置之后,UIButtonLabel的text改变了。
网友评论