UIButton文字颜色无法修改的解决方法和知识拓展
2017-06-15 16:16
225 查看
1.普通的按钮中的字更改颜色的方法:
1
这段代码将按钮中的文字的颜色,在一般情况下改成黑色。
2.常见错误:
2
3
4
5
1
2
3
4
5
通过以上两种方法更改文字颜色无效。
原因:参考Apple Documentation and API Reference发现
即titleLabel是readonly,但又由于它继承自UILabel,所以虽然有textcolor的getter和setter方法,但执行无效。
同理,buttonName.titleLabel setTextColor等类似的getter和setter方法同样无效(titleLabel is readonly)。如需修改,请直接调用buttonName的对应方法(自行查阅Documentation and API Reference)
3.知识拓展
button有一个readonly attribute叫currentTitle,继承自NSString其功能等同于button.titleLabel.text。作用是提供了对button.titleLabel.text的快速访问。
4.关于setTitleColor方法中的forState参数:
此参数表示在某种特定的state下,button会使用给定的title,如果button处于某种特定的state,而开发者没有指定此state下的title,系统会默认调用UIControlStateNormal下的title,如果UIControlStateNormal下也没有设置title,则会默认使用system value。
下面给出一个例子,表现不同的state的不同作用。
2
1
2
效果:
2
1
2
原理:代码2中,设置presentButton只有在selected的状态下,颜色才会变为橙色,所以点击下一个按钮之后,由于前一个按钮状态变为unselected,所以自然就会变为系统默认的黑色了。免去了多余的若干行代码。
[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];1
1
这段代码将按钮中的文字的颜色,在一般情况下改成黑色。
2.常见错误:
//第一种错误 [customButton.titleLabel setTextColor:[UIColor blackColor]]; //第二种错误 customButton.titleLabel.textColor = [UIColor blackColor];1
2
3
4
5
1
2
3
4
5
通过以上两种方法更改文字颜色无效。
原因:参考Apple Documentation and API Reference发现
即titleLabel是readonly,但又由于它继承自UILabel,所以虽然有textcolor的getter和setter方法,但执行无效。
同理,buttonName.titleLabel setTextColor等类似的getter和setter方法同样无效(titleLabel is readonly)。如需修改,请直接调用buttonName的对应方法(自行查阅Documentation and API Reference)
3.知识拓展
button有一个readonly attribute叫currentTitle,继承自NSString其功能等同于button.titleLabel.text。作用是提供了对button.titleLabel.text的快速访问。
4.关于setTitleColor方法中的forState参数:
此参数表示在某种特定的state下,button会使用给定的title,如果button处于某种特定的state,而开发者没有指定此state下的title,系统会默认调用UIControlStateNormal下的title,如果UIControlStateNormal下也没有设置title,则会默认使用system value。
下面给出一个例子,表现不同的state的不同作用。
//核心代码1: [presentButton setTitleColor:[UIColor orangeColor] forState:UIControlStateNormal];1
2
1
2
效果:
//核心代码2: [presentButton setTitleColor:[UIColor orangeColor] forState:UIControlStateSelected];1
2
1
2
原理:代码2中,设置presentButton只有在selected的状态下,颜色才会变为橙色,所以点击下一个按钮之后,由于前一个按钮状态变为unselected,所以自然就会变为系统默认的黑色了。免去了多余的若干行代码。
相关文章推荐
- UIButton文字颜色无法修改的解决方法和知识拓展
- sql server 2005 修改计算机主机名后 ,无法创建数据库发布的解决方法
- 【控件包含代码块,因此无法修改控件集合。】错误的解决方法
- 无法复制网页文字的解决方法
- 表单元素与提示文字无法对齐的解决方法(input,checkbox文字对齐)
- 网上收集的关于static text文字修改颜色和字体的解决办法
- word锁定:解决Word文档由于文档保护而无法修改、查找、编辑的方法
- sql server 2005 修改计算机主机名后 ,无法创建数据库发布的解决方法
- oracle修改SGA后无法启动的临时解决方法
- 控件包含代码块(即 ),因此无法修改控件集合解决方法!
- oracle修改SGA后无法启动的临时解决方法
- ie 无法下载中文名文件 解决方法 【修改IIS5注册表可以支持中文文件名】
- oracle10g安装完成后修改机器名导致无法启动监听服务的解决方法
- IE7.0主页无法修改的解决方法
- 控件包含代码块(即 ),因此无法修改控件集合解决方法!
- Ubuntu修改IP地址后 ORALCE监听无法启动的解决方法。
- 控件包含代码块(即 ),因此无法修改控件集合解决方法!
- XP搜索包含文字的文件无法进行有效搜索--解决方法
- 无法访问Dropbox的解决方法--修改host 的ip 地址
- 无法显示隐藏文件夹(修改过注册表也无效)的解决方法 附注册表文件