首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当我将按钮状态设置为禁用时,UIButton setTitleColor不工作

当你将UIButton的状态设置为禁用(disabled)时,UIButton的许多属性都会被系统自动调整,包括文本颜色。这是为了提供视觉反馈,让用户知道这个按钮当前是不可交互的。

基础概念

  • UIButton:iOS开发中的一个基础控件,用于响应用户的点击事件。
  • 状态UIButton有多种状态,包括正常(normal)、高亮(highlighted)、选中(selected)、禁用(disabled)等。
  • UIControlState:一个枚举类型,定义了UIButton可以拥有的不同状态。

相关优势

  • 用户界面一致性:系统自动调整禁用按钮的样式,有助于保持应用界面的一致性和易用性。
  • 视觉反馈:用户可以直观地看到哪些按钮是不可交互的。

类型

  • UIButtonTypeSystem:系统默认按钮类型,禁用时会自动调整样式。
  • UIButtonTypeCustom:自定义按钮类型,禁用时不会自动调整样式,需要手动设置。

应用场景

  • 表单验证:当用户未填写必填字段时,提交按钮显示为禁用状态。
  • 数据加载:在数据加载过程中,禁用某些按钮以防止重复操作。

问题原因

当你将按钮设置为禁用状态时,系统会自动调整按钮的文本颜色,这可能会覆盖你之前设置的setTitleColor(_:for:)方法。

解决方法

如果你希望在按钮禁用时仍然显示特定的文本颜色,可以尝试以下方法:

方法一:使用自定义按钮类型

将按钮类型设置为UIButtonTypeCustom,然后手动设置禁用状态下的文本颜色。

代码语言:txt
复制
let button = UIButton(type: .custom)
button.setTitle("Submit", for: .normal)
button.setTitleColor(.blue, for: .normal)
button.setTitleColor(.gray, for: .disabled) // 手动设置禁用状态下的文本颜色
button.isEnabled = false

方法二:使用layer属性

通过修改按钮的layer属性来设置禁用状态下的文本颜色。

代码语言:txt
复制
let button = UIButton(type: .system)
button.setTitle("Submit", for: .normal)
button.setTitleColor(.blue, for: .normal)
button.isEnabled = false

// 使用layer属性设置禁用状态下的文本颜色
button.titleLabel?.layer.backgroundColor = UIColor.gray.cgColor
button.titleLabel?.layer.cornerRadius = 5

参考链接

通过以上方法,你可以在按钮禁用时仍然显示特定的文本颜色。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Quartz2D复习(四) --- 图层CALayer和动画CAAnimation

如果想让图层保持显示动画执行后的状态,那就设置NO,   不过还要设置fillModekCAFillModeForwards   fillMode : 决定当前对象在非activate时间段的行为。...比如动画开始之前或者动画结束之后   beginTime : 可以用来设置动画延迟执行时间,若想延迟2s,就设置CACurrentMediaTime()+2, CACurrentMediaTime()...如果设置了path,那么values将被忽略   keyTimes: 可以为对应的关键帧指定对应的时间点,其取值范围0到1.0, keyTimes中的每个时间值都对应values中的每一帧。...如果没有设置keyTimes,各个关键帧的时间是平分的 12)、CAAnimationGroup --- 动画组   动画组,是CAAnimation的子类,可以保存一组动画对象,CAAnimationGroup...61 UIButton *moveBtn = [UIButton buttonWithType:UIButtonTypeCustom]; 62 [moveBtn setTitleColor

1.4K30
  • UIButton使用方法汇总

    //按钮初始化类方法 UIButton *button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];//这里创建一个圆角矩形的按钮 //按钮初始化实例方法... = 0xFF000000 内部框架预留,可以不管他 }; 注意:  默认情况下,当按钮高亮的情况下,图像的颜色会被画深一点,如果这下面的这个属性设置no,  那么可以去掉这个功能 button1... = NO; //下面的这个属性设置yes的状态下,按钮按下会发光 button1.showsTouchWhenHighlighted = YES; 按下按钮,并且手指离开屏幕的时候触发这个事件...设置UIButton上字体的颜色设置UIButton上字体的颜色,不是用: [btn.titleLabel setTextColor:[UIColorblackColor]]; btn.titleLabel.textColor...=[UIColor redColor]; 而是用: [btn setTitleColor:[UIColor blackColor]forState:UIControlStateNormal];

    1.2K50

    教你制作可移动的导航栏

    titleButton.addTarget(self, action: #selector(scrollViewSelectToIndex), for:.touchUpInside) 完成点击方法里面的内容: 1、每个栏目设置...tag值 2、每个选中的栏目设置背景颜色orange 3、为了人性化,选中的栏目尽可能移到界面中间。...这也是本文重点:根据选中的栏目(按钮),分别为topScroll设置不同的ContentOffset,主要有三种情况:一、选中的栏目是前几个 二、选中的栏目时后几个 三、选中其他栏目 前两种情况没办法偏移到界面中间.../**选择某个项目*/ func selectButton(index:NSInteger){ //把当前的按钮重置原来颜色 self.selectButton?....setTitleColor(UIColor.orange, for: .normal) // rect由rect所在视图转换到目标视图view中,返回在目标视图view中的rect 相对于当前显示窗口

    1.6K60

    【 iOS 应用开发 】 UIKit 控件 ( UIView 属性 | storyboard 设置 | 模拟器 | 拖线关联 | tag | 软键盘操作 | 颜色值 | 代码生成控件 | 动画设置 )

    类型的属性, 会将 Highlighted 状态的图片默认设置成半透明, 这里为了避免这种情况, 需要 Type 属性设置 Custom , 这样就可以自己定制按钮的属性了; 9.设置向上箭头按钮...: 设置向上箭头按钮, 并设置其 默认背景图片, 高亮状态背景图片, 并设置其类型 定制类型, 不要点上去 高亮状态变为半透明; 设置按钮高亮状态下的属性, 注意在 Control 中的...和 Highlighted 两种状态的图片 ; 2.按钮图片设置 : 按钮 的 Default 和 Highlighted 两个状态设置不同的图片 ; 3.绑定方法 : 两个按钮同时绑定到同一个方法上...:@"按下状态" forState:UIControlStateHighlighted]; 高亮状态指定文字; ② 调用 setTitleColor:forState 某种状态指定文字颜色, [button...setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; 普通状态指定文字颜色, [button setTitleColor

    4.8K30

    MNKit - 业务开发中简化属性设置的工具类

    :(UIControlEvents)controlEvents; 所以接下来讲下这个控件怎么设置才能简便使用 //常见方法: UIButton *btn = [[UIButton alloc]init]...; [btn setTitle:@"获取验证码" forState:UIControlStateNormal]; [btn setTitleColor:[UIColor orangeColor] forState...的常见创建方式,设置按钮的标题、字体大小、颜色、背景色、点击事件、添加到父控件等等,基本上每个属性都是要通过[ ] 设置,最麻烦的是经常要通过forState:UIControlStateXXX设置状态...这一行代码即可创建拥有上面代码所需要的按钮的基本属性 UIButton 除了有文字标题展示的样式之外,也有用image 或者 backgroundImage展示的情况 //一句代码设置 - 按钮背景图片...(默认状态) && 父试图 && 响应方法 UIImage *starImage = [UIImage imageNamed:@"Notcollection"]; UIButton *starBtn =

    1.6K80

    36.Swift学习之Associated Object

    在使用 extension 扩展现有类的功能时,使用Associated Object的方式,可以一个值 “关联” 到已有的要扩展的类上。该知识点在 iOS 开发中使用往往能优雅地解决很多问题。...关键API /// 获取关联值 /// - Parameter object: 源对象,一般 self,给谁关联参数,就填入谁 /// - Parameter key: 关键字,相当于一个标识,通过该标识可以拿到值...((UIButton)->Void){ block(button) } } } UIButton 传参 项目开发中,经常会有类似九宫格的菜单按钮,每个按钮的点击时的参数是不一样的...,此时可以有如下几种方案: 创建 9 个按钮,逐一设置 通过 for 创建 9 个 UIButton UIButton设置不同的tag,然后在点击事件里面用 switch case判断 自定义UIButton...("\(i+1)", for: .normal) btn.setTitleColor(.black, for: .normal) btn.frame =

    2.1K20

    iOS开发之微信聊天工具栏的封装

    为了屏幕的适配,适应不同屏幕的手机,所以在封装组件的时候是少不了我们的组件来添加约束。今天博客中的所有代码都是脱离storyboard的,这些代码在别的工程中也是可以使用的。...3 @property (nonatomic, strong) UIButton *voiceChangeButton; 4 5 //发送语音的按钮 6 @property (nonatomic...主要是给录音按钮加了一个LongPress手势,根据手势的状态来做不同的事情。...5.点击最左边的按钮触发的事件(切换文本输入框和录音按钮),代码如下: 1 //切换声音按键和文字输入框 2 -(void)tapVoiceChangeButton:(UIButton *) sender...(在LongPress没有被触发时调用)代码如下: 1 //发送声音按钮回调的方法 2 -(void)tapSendVoiceButton:(UIButton *) sender 3 { 4 NSLog

    2.5K80

    Swift-MVVM 简单演练(三)

    self.present(nav, animated: true, completion: nil) } } 看看自己为了完成某一需求而改的代码,有没有影响到其它地方 时刻提醒自己,当我们兴高采烈的完成了某一处的改动而沾沾自喜的时候...当我们点击登录的按钮的时候,我们期望立刻弹出登录控制器。 但是我们刚才写的代码,真的有影响到这里了。点击登录也是延迟2秒钟才弹出登录界面,给人的感觉总是怪怪的。...自定义 UIButton-文字在左、图片在右(二) 导航栏标题设置成自定义Button 这个没什么技术含量,直接上代码了。...于是我就想到了,如果设置偏移量是各个宽度的一半的话,最开始显示虽然有问题,但是是不是,点击就正常了呢。果不其然。...大概是下面这个样子 而比较理想的状态应该是,文字与图片之间有一定的间距,这样看起来比较舒服。 如果想达到这种状态,我们可能会延续上面的思维,偏移量增大一点。

    2.5K30

    iOS初来乍到,你如何开始第一个封装类?

    封装博大精深,也许用我们初级人的理解大概就是重复用到的功能控件包装起来,既把代码模块化。尽管目光短浅,但这个出发点是对的,可喜的。...下面我以一个小控件例,在封装的过程中逐步讲解。我们先看一下UI设计图。 ? 分析:这是一个拉长了的switch控件,又像一个分段控制器。...它有左右两个按钮,中间的滑块,底层的一个view,我们猜想它肯定是可以滑动,并且点击的。...然后我们调用了一个配置左右按钮的方法,并且设置了self(self就是底层的view)的背景颜色,和圆角。下面我们主要构造setLeftAndRightButton这个方法就可以了。...,并且,我们设置了默认标题,处理了闪烁,加了美观的圆角。

    1.1K40

    iOS开发一款小巧简洁的日历控件 原

    2、我们需要实现的功能 (1)每行7天,对应星期,列数当前月显示完全 (2)今日标红 (3)点击的日期背景填充 (4)提供特殊标记,用于标记计划日,节日等 (5)左右无限翻页,直到世界起源和末日  ...1:0;     //开始创建按钮     /**      *这里的逻辑是有问题的,应该设计成cell的复用机制,而不应该重复耗性能的创建 有时间在优化      */ #warning 可以优化哦 ...UIControlStateNormal];             }             //是否进行自定义标记             /**              *if中的颜色比较 是为了让上月与下月的余日产生...) {         [self.delegate YHBaseCalendarViewSelectAtDateModel:_selectModel];     }      } @end (4)用户交互设计的协议...有易用的下载框架,缓存框架,错误处理框架,皮肤管理框架等,也有支持加载HTML并且异步缓存图片的view,边下边播并做缓存的AVAudioPlayer,以及各种自定义性能很强的view控件,如用block创建的按钮

    3.5K20

    iOS学习——UIPickerView的实现年月选择器

    @property (nonatomic, strong) UIButton *leftBtn; // 右边确定按钮 @property (nonatomic, strong) UIButton *rightBtn...如果直接在蒙层上添加弹出式图作为子视图的话,我们的布局相对会简单很多,这里涉及到一点就是子视图的透明度是和父视图保持一致的,如果直接弹出视图加载到蒙层遮罩视图上,会导致弹出视图的透明度也0.3,所以弹出视图不能直接加在蒙层遮罩视图上...对外暴露类方法也是避免使用者在使用时需要创建对象,比较麻烦,也避免一些不必要的问题。...下面主要就是说一下如何获取年月这样的数据,主要是用到了NSDateComponents 的直接获取一个月前的信息,然后通过NSCalendarNSDateComponents转化为日期Date,最后...- (void) btnPress:(UIButton *)sender{ if (sender.tag == 200) { //导出 按钮 [CJYearMonthSelectedView

    4.2K130

    【 iOS 应用开发 】 UIKit 控件 ( 代码生成控件 | UIView 属性方法 | Storyboard | Bundle | Property List | 动画 | 图片内存优化 )

    设置 文字 , 这里需要根据不同的状态设置显示的文字 , 这里只设置 UIControlStateNormal 状态的文字 [button setTitle:@"生成按钮" forState:UIControlStateNormal...设置 文字颜色 , 这里设置普通状态时的 文字 颜色 [button setTitleColor:[UIColor redColor] forState:UIControlStateNormal...设置 文字 , 这里需要根据不同的状态设置显示的文字 , 这里只设置 UIControlStateNormal 状态的文字 [button setTitle:@"生成按钮" forState:UIControlStateNormal...设置 文字颜色 , 这里设置普通状态时的 文字 颜色 [button setTitleColor:[UIColor redColor] forState:UIControlStateNormal... UIButton 添加到 根 View 中 [self.view addSubview:button]; } // 生成的 按钮 绑定 点击事件 - (void) bindMethod{

    3.8K40

    iOS右滑返回的实现【修订】

    给页面添加右滑返回手势 @implementation NavigationController - (void)viewDidLoad { [super viewDidLoad]; //设置右滑返回手势的代理自身...UINavigationController (QMUI)进行控制右滑返回 QMUI使用分类UINavigationController (QMUI)方式进行控制右滑返回,具体核心代码如下 重写viewDidLoad设置右滑返回手势的代理自身...setNavigationBarHidden:NO animated:NO]; // viewController.hidesBottomBarWhenPushed =YES; //设置左边按钮...)没采用系统的默认的实现,发生当前不可以手势返回,可先检查为什么当前状态,系统不允许你的手势返回,例如是否隐藏了 navigationBar,或者隐藏了系统的返回按钮?...UIControlStateNormal]; [rightBtn setTitle:@"编辑" forState:UIControlStateNormal]; [rightBtn setTitleColor

    1.7K20
    领券