08-按钮状态的研究

效果图:

AB20E935-2637-4B63-A540-A0721969E1D2.png

一、分析:

先做中间的Label,设置约束:垂直、水平居中即可

二、拓展 : Label(文字):如何在storyboard / Xib中显示多行文字?

两种方法:
第一种:在xib中设置
(1.)Lines 设为0
(2.)每到要换行时,就按option + enter快捷键
(3.)设置文字居中并更新一下

第二种:用代码

** 三、注意:**

  • 按钮若不设置宽高,会根据图片(backImage)自动调整大小

  • 按钮样式system/ custom会影响按钮点击后的显示

  • Xib添加完控件,建议在左边写好名字:区分控件

  • Xib/storyboard不允许控件里放控件,一般在View或者Scrollview里可以放控件

四、按钮状态研究

(1)按钮一般有四种状态:

  • UIControlStateNormal

    • 1> 除开UIControlStateHighlighted、UIControlStateDisabled、UIControlStateSelected以外的其他情况,都是normal状态
    • 2> 这种状态下的按钮【可以】接收点击事件
  • UIControlStateHighlighted

    • 1>【当按住按钮不松开】或者【highlighted = YES】时就能达到这种状态
  • 2> 这种状态下的按钮【可以】接收点击事件

  • UIControlStateDisabled

    • 1>【button.enabled = NO】时就能达到这种状态
    • 2> 按钮无法点击,这种状态下的按钮【无法】接收点击事件,
  • UIControlStateSelected

    • 1>【button.selected = YES】时就能达到这种状态
    • 2> 按钮可以点击,这种状态下的按钮【可以】接收点击事件

(2)让按钮无法点击的2种方法

1>button.enabled = NO;
【会】进入UIControlStateDisabled状态
2>button.userInteractionEnabled = NO;
【不会】进入UIControlStateDisabled状态,继续保持当前状态

(3)控制disabled和selected状态会出现的问题

控制Disabled状态--->问题:再次点击无反应
控制selected状态--->问题:会出现闪的情况,推荐使用,可以监听点击,作刷新

(4)应用场景一:切换按钮文字 如:百思不得姐的【注册账号】与【已有账号】之间的切换

其实是在NormalSelected之间来回切换
sender.selected = !sender.selected;

(5)应用场景二:如百思不得姐点击当前按钮变红色,上一个按钮变回黑色

效果图:

1.png

正常步骤:
1、搞一属性记录----当前被选中的按钮

2、三步曲:
(1)上一次按钮变灰
(2)当前按钮变红,
(3) 当前按钮变成上一次按钮

缺点:
(1)的颜色要与之前按钮设置的颜色一致,如果之前的按钮颜色改变,三步曲中的按钮颜色也要改变------>不推荐使用

推荐使用 :利用按钮状态来控制按钮颜色的改变

实现代码

/** 当前被选中的按钮 */
@property (nonatomic, weak) XMGTitleButton *selectedTitleButton;

#pragma mark - 监听
- (void)titleClick:(XMGTitleButton *)titleButton
{
    // 控制按钮状态
    self.selectedTitleButton.selected = NO; 
    titleButton.selected = YES;                       
    self.selectedTitleButton = titleButton;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容