UIControl 中的控件状态如何工作?

Posted

技术标签:

【中文标题】UIControl 中的控件状态如何工作?【英文标题】:How does the control state work in UIControl? 【发布时间】:2013-07-10 14:16:13 【问题描述】:

我正在开发一个使用 UIButton 的 ios 项目。我使用了[cardButton setTitle:card.contents forState:UIControlStateSelected|UIControlStateDisabled];,但我并不完全了解机制。我知道这是 emun 和位掩码过程。任何人都可以向我解释一下吗?谢谢。

enum 
   UIControlStateNormal               = 0,
   UIControlStateHighlighted          = 1 << 0,
   UIControlStateDisabled             = 1 << 1,
   UIControlStateSelected             = 1 << 2,
   UIControlStateApplication          = 0x00FF0000,
   UIControlStateReserved             = 0xFF000000
;

【问题讨论】:

【参考方案1】:

一个控件可以有more than one states at a time 例如。 selected 和 highlight 可以共存,依此类推。

因此,您可以为状态组合指定标题和图像。

例如。

UIButton * button;
//initialization code
NSString * title = @"Title";
[button setTitle:title forState:UIControlStateHighlighted | UIControlStateSelected];
title = [button titleForState:UIControlStateHighlighted | UIControlStateSelected];

位掩码用于为每个值组合生成唯一值 - 使用按位或尝试它们,您会得到它。它与能够支付任何整数金额的 1 美元、2 美元、5 美元、10 美元等纸币并没有太大的不同,例如1美元和2美元的钞票可以用来支付3美元、4美元等等,所以你只需要确定数量的钞票。

【讨论】:

所以,forState:UIControlStateHighlighted | UIControlStateSelected 表示为突出显示和选择设置内容。而状态的唯一性就是他们使用位掩码的原因,对吧?

以上是关于UIControl 中的控件状态如何工作?的主要内容,如果未能解决你的问题,请参考以下文章

如何将进度条控件添加到 Matlab gui?

这个 UIControl 叫啥名字?

去除 FOP 内联元素中的空格

UIControl 子类正在接收“touchesCancelled”而不是“touchesEnded”

如何以编程方式获取 UIBarButtonItems 的状态?

数据更改时如何对 UIControl 调整大小做出反应