测试已测试 | ✗ |
Lang语言 | Obj-CObjective C |
许可证 | MIT |
发布最近发布 | 2015年4月 |
由 PJ Engineering and Business Solutions Pty. Ltd. 维护。
SliceButton 是一个形状类似饼或披萨的按钮,根据 buttons 属性中的数量切割。它支持用户输入并对任何触摸做出响应,通过调用委托方法 sliceButtonTapped:buttonIndex: 来触发有关被触摸的哪个部分(切片)的信息。按钮本身只代表饼或披萨的一半(左半部分或右半部分)。您可以使用两个按钮来形成一个完整的饼/披萨。
应提供一个看起来像饼或披萨形状的图像。该图像应清晰地标明切片。请参考示例项目中提供的 "LeftSlice.png" 图像以获取指导。
@property (nonatomic, strong) UIImage *button_image;
可以提供一个可选的图像。它应该是小的(例如,12x12)并且是圆形的。当用户触摸一个“切片”时,可以将 selected 属性设置为被触摸的“切片”。selected 属性决定了此图像的放置位置。它放置在“selected”切片的中间。
@property (nonatomic, strong) UIImage *dot_image;
这形成了一个围绕“饼”中心的圆形小圆圈。此区域不响应用户输入(触摸)。虽然这完全可选(例如,你可以将该值设置为零),但建议您根据用户平均手指的大小设置 small_radius 的值。
@property int small_radius;
这形成了一个大圆圈,代表“饼”的外边缘。任何触及外边缘之外的用户触摸都会被忽略。应根据提供的 button_image 设置此值。请参考示例项目中提供的 "LeftSlice.png" 图像以获取指导。
@property (nonatomic) int big_radius;
如果将此属性设置为 YES,则按钮只显示饼或披萨的右侧。按钮是否响应用户的特定触摸(基于触摸的位置)受此属性的影响。如果将此属性设置为 NO,则按钮只显示左侧。
@property BOOL orientation_left;
此属性设置按钮应该有多少个切片。应与提供的 button_image 上的切片数量相对应。请参考示例项目中提供的 "LeftSlice.png" 图像以获取指导。
@property int buttons;
这设置了哪个 'slice' 应该被标记为被触摸。值为 -1 表示没有选择。介于 0 和 (按钮 - 1) 属性之间的任何其他值都会在 'pie' 外边缘绘制提供的 dot_image。selected 的值代表从顶部开始的分片计数。最顶部的分片由 selected=0 表示...
@property (nonatomic) int selected; //-1 = none
这表示 dot_image 相对于外边缘绘制进去的距离。值为 0 将 dot_image 的中心放置在外边缘上(由 big_radius 确定)。dot_image_radius_offset 属性值越大,dot_image 越向内部绘制。
@property (nonatomic) float dot_image_radius_offset;
可选的委托将实现 sliceButtonTapped:buttonIndex:,以便当用户触摸 'slice' 时,将触发 sliceButtonTapped:buttonIndex: 方法。方法中的 buttonIndex 值将指示哪个 'slice' 被触摸。它不会自动调整 'selected' 属性。您必须自行这样做。
@property (nonatomic, weak) IBOutlet id <SliceButtonDelegate> delegate;
这仅用于调试目的。当设置为 YES 时,提供的背景图像(button_image)将以清晰标记的形式显示按钮认为的各个分片的位置。按钮使用 CLEAR 标记来确定每个分片的边界,这本身用于确定哪个分片被触摸。使用此属性以确保提供的背景图像与按钮的 CLEAR 标记清晰对齐。它们必须精确对齐。
@property (nonatomic) BOOL debug;
初始化器:初始化器自动将按钮放置在 superview 容器内。您仍然必须使用继承的 frame 属性相应地设置按钮的框架。参见示例项目以了解说明。所有参数都具有自解释性,对应于上面提到的属性。ButtonNumber 参数对应于 button 属性。
- (id)initWithSettingsSuchAsLeftOrientation:(BOOL)orientation_left ButtonNumber:(int)number SmallRadius:(int)small_radius BigRadius:(int)big_radius Image:(UIImage *)image DotImage:(UIImage *)dot_image DotImageRadiusOffset:(float)offset SuperView:(UIView*)superview;
可选的委托可以实现 sliceButtonTapped:buttonIndex:,以便当用户触摸 'slice' 时,将触发 sliceButtonTapped:buttonIndex:。方法中的 buttonIndex 值将指示哪个 'slice' 被触摸。它不会自动调整 selected 属性。您必须自行这样做。参见示例项目以了解说明。
-(void)sliceButtonTapped: (SliceButton *)sliceButton buttonIndex:(int) index;
示例项目将展示如何使用按钮以及响应用户输入。
如果您觉得这个库很有用,请在 github 上 Star 它。您可以自由地 fork 它或提供 pull request。任何错误报告都将受到热烈的欢迎。
PJ Engineering and Business Solutions Pty. Ltd http://www.pjebs.com.au