NKToggleOverlayButton 是一个双状态按钮,当其状态改变时,会显示半透明的覆盖层。这个覆盖层包含可自定义的文本行和图片。
可以通过将动作块分配给 toggleOnBlock
和 toggleOffBlock
属性,来将行为附加到按钮上。或者,您可以使用 addTarget:action:forControlEvents
在控制事件 UIControlEventValueChanged
(当按钮状态切换时)或 UIControlEventTouchUpInside
(当按钮被点击时)上添加目标/动作对。
可以使用 setOnImage:forState:
和 setOffImage:forState:
方法更改按钮的外观,这类似于 UIButton 的 setImage:forState:
方法,或者使用 titleLabel
属性。
覆盖层可以是深色(默认)或浅色。您可以通过以下方式选择样式
button.style = NKOverlayViewStyle[Dark|Light]
希望这一切都是不言而喻的,如果您需要帮助,请打开一个问题或联系我(详细信息见下文)。
示例用法可以在示例项目中找到。如果您正在使用 CocoaPods 0.29(或更高版本),您可以使用 pod try NKToggleOverlayButton
暂时查看项目并进行尝试。
NKToggleOverlayButton *button = [[NKToggleOverlayButton alloc] init];
button.frame = CGRectMake(100, 100, 200, 100);
[button setOnImage:[UIImage imageNamed:@"button-on"] forState:UIControlStateNormal];
[button setOnImage:[UIImage imageNamed:@"button-on-press"] forState:UIControlStateHighlighted];
[button setOffImage:[UIImage imageNamed:@"button-off"] forState:UIControlStateNormal];
[button setOffImage:[UIImage imageNamed:@"button-off-press"] forState:UIControlStateHighlighted];
button.titleLabel.text = @"I'm a button!"
button.overlayOnImage = [UIImage imageNamed:@"tick"];
button.overlayOffImage = [UIImage imageNamed:@"cross"];
button.toggleOnBlock = ^(NKToggleOverlayButton *button) {
// Code to execute when button is toggled on
};
button.toggleOffBlock = ^(NKToggleOverlayButton *button) {
// Code to execute when button is toggled off
};
您可以使用以下方法查询按钮的当前状态:
button.isSelected;
您可以使用以下方法更新按钮的状态(不显示覆盖层或触发 toggleOnBlock
、toggleOffBlock
或任何要调用的目标/动作对):
button.selected = YES;
这很有用,用于设置按钮的初始状态。
您可以程序化设置按钮的状态,并可选择触发动画覆盖层:
[button setSelected:YES animated:YES];
最后,您可以切换按钮的状态(在开和关之间切换),并可选择显示动画覆盖层:
[button toggleSelectedAnimated:YES];
NKToggleOverlayButton
使用 ARC。如果您的项目不使用 ARC,请向此项目的所有文件(在项目设置中,在顶部点击“构建阶段”,然后展开“编译源文件”部分)添加 -fobjc-arc
编译器标志。
在 Twitter 上找我 @neilkimmett,或给我发电子邮件至 neil at kimmett.me
版权所有 (c) 2014 Neil Kimmett
兹授予任何人获得本软件及其相关文档文件(以下简称“软件”)副本的自由,不受限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许向提供软件的个人或实体做出上述行为,但须遵守以下条件:
上述版权声明和本许可声明应包含在软件的所有副本或实质性部分中。
软件按“原样”提供,不提供任何形式的保证,无论是明示的、默示的,包括但不限于对适销性、特定用途的适用性和非侵权的保证。在任何情况下,作者或版权所有者均不对因合同、侵权或其他任何原因产生的任何索赔、损害或其他责任负责,这些索赔、损害或其他责任源于、由或与软件或软件的使用或其他处理有关。