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. linux shell脚本 传参,在bash shell脚本中传播所有参数
  2. 如何读取指针指向的地址空间呢?
  3. springboot忽略证书_SpringBoot中通过java代码实现忽略SSL证书
  4. 洛谷 [P2756] 飞行员配对方案问题 网络流实现
  5. Centos7安装 mariadb 最新版
  6. 2022 老A卡密验证系统
  7. beetl模板使用场景_BeetlSQL3性能
  8. Unity获取IOS端相机权限的状态
  9. winrar捆绑软件
  10. http://blog.csdn.net/pizi0475/article/details/7768597
  11. 考研英语七附双语阅读:编程玩具——程序员培养从娃娃抓起
  12. 操作系统期末知识点浓缩总结复习
  13. linux 实时监控系统IO状态和IO性能
  14. 免费拥有个人云主机——AWS免费EC2套餐内容
  15. 计算机网络中 89 个常见的概念
  16. 利用万用表查找漏电原因
  17. csapp程序人生大作业
  18. linux安装深度播放器,Ubuntu下安装深度音乐播放器Dmusic
  19. 3D引擎Axiom的选择与学习
  20. CEAC之《职业素养》

热门文章

  1. 乱拔插U盘,导致U盘变成RAW未初始化格式,容量大小为0。
  2. 基于TLE6220GP的开关电磁阀驱动电路
  3. PKCS1_SignatureScheme_PSS
  4. 幂函数与指数函数的近似
  5. 国内免费(开源)CMS系统【大全】
  6. vscode预览html插件,VSCode插件推荐-VSCode内嵌浏览器插件-Browser Preview
  7. 提取视频中的音频 Python只需要三行代码!
  8. 一个电子商务网站的设计及开发环境配置文档
  9. 支付宝当面付php接入源码下载,支付宝当面付(扫码支付)实例源码下载(官方)
  10. 8月16最新青龙京东拉库《目前更新的库》