NOCircleSelector 1.0.4

NOCircleSelector 1.0.4

测试已测试
语言语言 Obj-CObjective C
许可证 Apache 2
发布日期上次发布2015年7月

Natalia Osiecka 维护。



  • natalia.osiecka

NOCircleSelector

圆形控件,以选择指定数量的值。

结构

有三个种类的对象

  • NOSELCircleSelector,这是一个 UIView,代表控件绘制区域的整个部分。MIN(selector.width, selector.height) / 2 是选择器的半径。
  • NOSELCircleDot,这是一个 UIView,代表单个点。大小和所有属性都可以通过属性进行更改。不要忘记normal UIView属性。控件易于子类化,因此您可以轻松添加自定义视图。要访问它,请使用委托方法或 NOCircleSelector 的 dots 数组。
  • NOSELCircleDotConnection - 一个模型类,代表两个 NOCircleDot 之间的线。您可以通过属性对其进行自定义。要访问它,请使用委托方法或 NOCircleSelector 的 dotConnections 数组。区分点的方法建议使用 NS_ENUM 并设置这些的标签。

可自定义

NOSELCircleSelector (+ 所有 UIView 属性,如 backgroundColor 等)

  • numberOfDots
[_circleSelector setNumberOfDots:4];
  • dotRadius
[_circleSelector setDotRadius:50.f];
  • lineWidth - 为 NOSELCircleDotConnection 设置默认值
[_circleSelector setLineWidth::2.f];
  • lineColor - 为 NOSELCircleDotConnection 设置默认值
[_circleSelector setLineColor:[UIColor redColor]];
  • fillColor
[_circleSelector setFillColor:[UIColor blueColor]];

NOSELCircleDot (+ 所有 UIView 属性,如 backgroundColor 等)

  • lineWidth
[dot setLineWidth:2.f];
  • lineColor
[dot setLineColor:[UIColor redColor]];
  • fillColor
[dot setFillColor:[UIColor greenColor]];
  • textLabel
[dot.textLabel setText@"Hello!"];
  • imageView
[dot.imageView setImage:[UIImage imageNamed:@"girl"]];
  • angle - 度数,代表点在选择器中的当前角度
[dot setAngle:90.f];
  • minAngle - 度数,代表点在选择器中不可越过的最小范围。默认 0。
[dot setMinAngle:0.f];
  • maxAngle - 度数,代表点在选择器中不可越过的最大范围。默认 360。
[dot setMaxAngle:360.f];
  • shouldDrawConnectionBehind - 确定连接线是否应该在点后面绘制。默认 NO。
[dot shouldDrawConnectionBehind:YES];

NOSELCircleDotConnection

  • startDot - 自动设置,如果不需要则不要重载。描述连接的第一个点。
  • endDot - 自动设置,如果不需要则不要重载。描述连接的第二个点。
  • connectionColor
[connection setConnectionColor:[UIColor redColor]];
  • lineWidth
[connection setLineWidth:3.f];
  • dotConnectionBeetweenTag1:tag2: - 便捷方法,用于比较两个点是否连接。
[dot setLineWidth:2.f];

安装

子模块

在您的项目的 git 文件夹中输入

git submodule init
git submodule add --copy link to the repo--
git submodule update

从 NOSELCircleSelector 文件夹中复制所有文件。

只下载并附加

强烈不推荐这样做,因为您将无法看到代码更新。请克隆或下载源代码,复制NOCircleSelector文件夹中的所有文件。

实现

克隆并查看示例以了解更多实现示例。您可以通过Storyboard或使用代码添加视图。

// in your view.h download the library
#import <NOCircleSelector/NOSELCircleSelector.h>
// add a property
@property (nonatomic) NOSELCircleSelector *circleSelector;

// alloc & init the view or setup this via storyboard (eg in view's initWithFrame:)
_circleSelector = [[NOSELCircleSelector alloc] initWithFrame:frame];
[_circleSelector setBackgroundColor:[UIColor clearColor]];
[self addSubview:_circleSelector];
// update the frame (eg in view's layoutSubviews) or use constraints
[_circleSelector setFrame:self.bounds];

// in your controller setup basic view
- (void)viewDidLoad {
    [super viewDidLoad];

    // if you need you can subscribe to delegate to handle events
    [_aView.circleSelector setDelegate:self];
    [_aView.circleSelector setTag:ExampleCircleSelectorBig];
    [_aView.circleSelector setNumberOfDots:3];
    [_aView.circleSelector setDotRadius:30.f];
}

// and handle whichever delegate you need
- (void)circleSelector:(NOSELCircleSelector *)circleSelector changedDots:(NSArray *)dots {
    NOSELCircleDot *dot1 = [dots objectAtIndex:0];
    [dot1 setUserInteractionEnabled:NO];
    [dot1 setAngle:270.f];
    [dot1.imageView setImage:[UIImage imageNamed:@"girl"]];
}
- (void)circleSelector:(NOSELCircleSelector *)circleSelector changedDotConnections:(NSArray *)dotConnections {
    for (NOSELCircleDotConnection *dotConnection in dotConnections) {
        [dotConnection setConnectionColor:[UIColor blueColor]];
        [dotConnection setLineWidth:2.f];
    }
}
- (void)circleSelector:(NOSELCircleSelector *)circleSelector updatedDot:(NOSELCircleDot *)dot {
    [dot.textLabel setText:[NSString stringWithFormat:@"%d", (int)dot.angle]];
}
- (void)circleSelector:(NOSELCircleSelector *)circleSelector beganUpdatingDotPosition:(NOSELCircleDot *)dot {
    [_view.valueLabel setHidden:NO];
}
- (void)circleSelector:(NOSELCircleSelector *)circleSelector endedUpdatingDotPosition:(NOSELCircleDot *)dot {
    [_view.valueLabel setHidden:YES];
}
- (Class)circleSelectorRequestsNOCircleDotClass:(NOSELCircleSelector *)circleSelector {
    return [ExampleCircleDot class];
}

演示

包含2个示例。第一个(左边的)是一个<20行的简单配置。第二个示例处理最小和最大值、线颜色、宽度和等。

NOCircleSelector NOCircleSelector

变更日志

  • 1.0 完整代码重构,添加了前缀,并添加了NOCategories。
  • 0.4 添加了从角度获取值的方法,并重写了从值获取角度的方法,因此它考虑了最小角度+最小值。
  • 0.3 修复了NSInteger valueForDot中的问题 - 现在使用CGFloat以提高精度。添加了快速交换NOCircleDot(代理)的基本类的方法。
  • 0.2 修复了视图重叠的问题,可以触摸,最小/最大角度错误,并添加了向每个点添加图片的选项。
  • 0.1 基础版本 - 多个选择器、模型、触摸处理程序、逻辑。

作者

Natalia Osiecka,[email protected]

许可证

Apache 2.0许可证下提供。有关更多信息,请参阅LICENSE文件。

要求

需要Xcode 6,针对iOS 5.1.1或更高版本。