DDExpandableButton
是一个单文件 iOS 5.0+ 非 ARC 类(与 ARC 兼容),设计用来像可展开的 UIButton
一样使用;正如在 iOS 摄像头应用程序中用于 闪光灯 按钮所示。
最初灵感来源于 ExpandyButton。
DDExpandableButton 具有以下属性
@property (nonatomic,assign) BOOL expanded;
当前按钮状态(是否展开或收缩)。
@property (nonatomic,assign) BOOL useAnimation;
在按钮状态转换期间使用动画。
@property (nonatomic,assign) BOOL toggleMode;
将按钮用作切换(如摄像头应用程序中的“HDR 开启”/“HDR 关闭”按钮)。
@property (nonatomic,assign) CGFloat timeout;
超时后收缩按钮。如果要禁用超时,请使用 0
。
@property (nonatomic,assign) CGFloat horizontalPadding;
项目之间的水平内边距空间。
@property (nonatomic,assign) CGFloat verticalPadding;
项目上方和下方的垂直内边距空间。
@property (nonatomic,assign) CGFloat borderWidth;
按钮边框的宽度(厚度)。
@property (nonatomic,assign) CGFloat innerBorderWidth;
项目之间内部边界的宽度。
@property (nonatomic,assign) NSUInteger selectedItem;
已选择的项目编号。
@property (nonatomic,retain) UIColor *borderColor;
按钮和内部边框的颜色。
@property (nonatomic,retain) UIColor *textColor;
文本标签的颜色。
@property (nonatomic,retain) UIFont *labelFont;
文本标签的字体。
@property (nonatomic,retain) UIFont *unSelectedLabelFont;
未选择文本标签的字体。如果与 labelFont
无差异,则为 Nil
。
@property (nonatomic,readonly) NSArray *labels;
访问用于绘制标签的 UIView
。
DDExpandableButton 有以下方法
- (id)initWithPoint:(CGPoint)point leftTitle:(id)leftTitle buttons:(NSArray *)buttons;
Init 方法,您可以在其中指定 leftTitle
和 buttons
。
- (void)setSelectedItem:(NSUInteger)selected animated:(BOOL)animated;
animated 版本的 - (void)setSelectedItem:(NSUInteger)selected
。
- (void)setExpanded:(BOOL)expanded animated:(BOOL)animated;
animated 版本的 - (void)setExpanded:(BOOL)expanded
。
- (void)setLeftTitle:(id)leftTitle;
设置左侧标题视图:您可以使用 NSString
、UIImage
或任何 UIView
(但视图必须实现 DDExpandableButtonViewSource
协议)。
- (void)setButtons:(NSArray *)buttons;
设置按钮视图:您可以使用 NSString
、UIImage
或任何 UIView
(但视图必须实现 DDExpandableButtonViewSource
协议)。
- (void)disableTimeout;
如果您想禁用超时缩小。您也可以将 timeout
设置为 0
。
- (void)updateDisplay;
当修改按钮参数时,请使用此方法更新按钮显示。
当您指定标题或不同的按钮时使用的 DDExpandableButtonViewSource
协议,有以下方法
- (CGSize)defaultFrameSize;
返回视图的默认框架大小,用于展开按钮。
- (void)setHighlighted:(BOOL)highlighted;
可选,用于更改选中项的外观。
示例:一个具有四个文本标签和值改变时挂钩的按钮。
NSArray *buttons = [NSArray arrayWithObjects:@"Black", @"Red", @"Green", @"Blue", nil];
DDExpandableButton *colorButton = [[[DDExpandableButton alloc] initWithPoint:CGPointMake(20, 70) leftTitle:@"Color" buttons:buttons] autorelease];
[[self view] addSubview:colorButton];
[colorButton addTarget:self action:@selector(toggleColor:) forControlEvents:UIControlEventValueChanged];
DDExpandableButton 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。