1.普通的按钮中的字更改颜色的方法:

[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];

这段代码将按钮中的文字的颜色,在一般情况下改成黑色。

2.常见错误:

//第一种错误
[customButton.titleLabel setTextColor:[UIColor blackColor]];
//第二种错误
customButton.titleLabel.textColor = [UIColor blackColor];

通过以上两种方法更改文字颜色无效。
原因:参考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];

效果:

//核心代码2:
[presentButton setTitleColor:[UIColor orangeColor] forState:UIControlStateSelected];

原理:代码2中,设置presentButton只有在selected的状态下,颜色才会变为橙色,所以点击下一个按钮之后,由于前一个按钮状态变为unselected,所以自然就会变为系统默认的黑色了。免去了多余的若干行代码。

UIButton文字颜色无法修改的解决方法和知识拓展相关推荐

  1. 在ie6下文字颜色不兼容的解决方法

    在ie6下文字颜色不兼容的解决方法,我设的导航文字是白色的,在别的浏览器是正常的,只有在ie6下文字显示黑色,经过测试 color: #fff !important; 加!important强制变颜色 ...

  2. “不允许对64位应用程序进行修改”的解决方法 --“Changes to 64-bit applications are not allowed.”

    "不允许对64位应用程序进行修改"的解决方法 --"Changes to 64-bit applications are not allowed." 参考文章: ...

  3. mysql配置文件没有权限更改_MySQL配置文件无法修改的解决方法(Win10)

    帮别人解决的问题,记录一下. 问题描述 MySQL的版本是5.7,操作系统是window10.MySQL安装在 C:\Program Files 下.最近需要在MySQL安装目录下的 my-defau ...

  4. Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)

    Mysql的Root密码忘记,查看或修改的解决方法(图文介绍) 参考文章: (1)Mysql的Root密码忘记,查看或修改的解决方法(图文介绍) (2)https://www.cnblogs.com/ ...

  5. win7中计算机被改为了句号,WIN7中中文输入法快捷键无法修改的解决方法.doc

    WIN7中,中文输入法快捷键无法修改的解决方法 禁止中文输入法全角/半角切换的快捷键的方法 控制面板 è 区域和语言 è 键盘和语言 è 更改按键 è 高级按键设置 è -- 但由于win7系统存在B ...

  6. 计算机有几个无法修改的磁盘,电脑磁盘名称无法修改的解决方法

    用户在使用电脑的过程中难免会遇到一些问题,比如,有些用户发现Win8系统中无法对磁盘名称进行修改,那么,这问题该怎么来解决呢?不单单是Win8系统中,有些用户在Win7系统中也遇到同样问题.现在,小编 ...

  7. div css每行文字显示一半 同时文字字体重叠显示不全解决方法

    CSS DIV布局中出现单行或多行文字的每行文字内容不能显示全,上下行文字有一点点重叠现象,文字字体只显示一半解决方法,在低版本IE特别明显文字字体显示不全,在谷歌浏览器等高版本IE浏览器测试还好些. ...

  8. 服务器正在升级无法修改个性签名,原神无法改名字和修改签名解决方法

    原神改名字的入口关闭了,玩家们暂时无法改名字和修改签名,有不少玩家想要知道为什么会这样,想要改名字应该怎么办,具体的原因和问题的解决方法接下来会给大家分享,玩家们也可以多看看下方的问题分析. 原神无法 ...

  9. ECshop 页面修改及出错处理方法基础知识(第一部分)

    ECshop 页面修改及出错处理方法基础知识(第一部分) (2013-05-20 17:04:32) 转载▼ 1.ecshop,用户注册页面相关说明 用户注册地址:user.php?act=regis ...

最新文章

  1. wxWidgets:wxPickerBase类用法
  2. syslog源码_Gunicorn源码分析01--目录结构
  3. .NET 6 中的HTTP 3支持
  4. 程序员修仙之路--把用户访问记录优化到极致
  5. UOJ#33-[UR #2]树上GCD【长链剖分,根号分治】
  6. autoLayout自动布局
  7. 执行pip安装的程序:command not found
  8. realme X7 Pro至尊版确认:最便宜的曲面屏手机
  9. 新浪微博搜索其实就是人肉索引擎!
  10. NVIDIA显卡怎么更新驱动
  11. Centos 修改主机名称
  12. sof与NIOS II的elf固件合并生成jic文件
  13. BZOJ4316 小C的独立集 【仙人掌】
  14. 高中计算机听课总结,信息技术优质课听课心得体会
  15. 免费开源的箱包制造行业ERP管理系统介绍
  16. Redis五类数据类型简述
  17. 马化腾和张一鸣的灰度思维:普通人追求安全感,高手拥抱不确定性
  18. thinkpad卡在logo界面_win10系统开机卡在开机Thinkpad LoGo画面的恢复教程
  19. 总结二:底部导航栏的实现
  20. oj1075分析和代码

热门文章

  1. JS(JavaScript)详解
  2. 【test】testtest
  3. VI设计中员工制服设计的构思方向
  4. 项目经验之:针对昨日FDO连接SDF文件报错,国外GIS论坛给出了一个思路.帮助我过关.
  5. 如何让android的service一直在后台运行
  6. 苹果系统模拟器_开发者成功在苹果MacBook上通过模拟器正常运行Windows 10X版
  7. bilibili漫游自建服务器,【分享】bilibili太极模块---哔哩漫游
  8. Linux中的tail命令
  9. 献给母亲节的技术大礼包
  10. IIS搭建http服务