SMWheelControl 0.2.2

SMWheelControl 0.2.2

测试测试
语言语言 Obj-CObjective C
许可证 BSD 3.0
发布最新的发布版本2014年12月

viteinfinite 维护。



  • 作者
  • Cesare Rocchi, Simone Civetta 和 Xebia IT 架构师

SMWheelControl 是一个 iOS 组件,允许用户从 360° 旋转的轮中选择一个项目,它具有平滑的惯性旋转。

代码主要基于 Cesare Rocchi 在 http://www.raywenderlich.com/9864/how-to-create-a-rotating-wheel-control-with-uikit 上发布的教程 “如何使用 UIKit 创建旋转轮控制”。

示例截图

The final result

使用方法

初始化和数据源

使用经典的 - (id)initWithFrame:(CGRect)rect 实例化控件,并添加一个目标,就像您通常对控件所做的那样,例如

    SMWheelControl *wheel = [[SMWheelControl alloc] initWithFrame:CGRectMake(0, 0, 320, 320)];
    [wheel addTarget:self action:@selector(wheelDidChangeValue:) forControlEvents:UIControlEventValueChanged];

然后添加一个数据源

wheel.dataSource = self;
[wheel reloadData];

并实现以下方法(数据源应遵循 SMWheelControlDataSource

- (UIView *)wheel:(SMWheelControl *)wheel viewForSliceAtIndex:(NSUInteger)index
- (NSUInteger)numberOfSlicesInWheel:(SMWheelControl *)wheel
- (CGFloat)snappingAngleForWheel:(SMWheelControl *)wheel // optional

例如

- (NSUInteger)numberOfSlicesInWheel:(SMWheelControl *)wheel
{
    return 10;
}

- (UIView *)wheel:(SMWheelControl *)wheel viewForSliceAtIndex:(NSUInteger)index
{
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 150, 30)];
    label.backgroundColor = [UIColor whiteColor];
    label.text = [NSString stringWithFormat:@" %d", index];
    return label;
}

当轮旋转结束时,如果添加了目标,则它将接收事件 UIControlEventValueChanged,例如

- (void)wheelDidChangeValue:(id)sender
{
    self.valueLabel.text = [NSString stringWithFormat:@"%d", self.wheel.selectedIndex];
}

数据源还可以提供一个对齐角度,即轮应该对齐的角度。这可以通过可选方法 - (CGFloat)snappingAngleForWheel:(SMWheelControl *)wheel 设置

委托

您还可以实现 SMWheelControlDelegate 提供的(希望是自我解释性的)方法,例如

- (void)wheelDidEndDecelerating:(SMWheelControl *)wheel;
- (void)wheel:(SMWheelControl *)wheel didRotateByAngle:(CGFloat)angle;
- (void)wheel:(SMWheelControl *)wheel didTapOnSliceAtIndex:(NSUInteger)index;

作者

该库基于

  • Cesare Rocchi (@_funkyboy)

和目前由

  • Simone Civetta (@viteinfinite)
  • Martin Moizard (@MartinMoizard)

许可证