SLLCircularSlider
为 iOS 应用程序提供的可扩展的环形滑块。
示例
制作此 GIF 的代码位于 ExampleProject/
目录中
安装
在您的应用程序中使用 SLLCircularSlider 的最简单方法是使用 CocoaPods。有关更多信息,请参阅"入门"指南。
Podfile
platform :ios, '8.0'
pod "SLLCircularSlider"
或者,您可以克隆项目并将 SLLCircularSlider/SLLCircularSlider.{h,m} 文件复制到您的项目中。
初始化
将SLLCircularSlider添加到项目中非常简单,只需获取源文件,然后挥动魔法棒即可
- (void)viewDidLoad {
...
CGRect sliderFrame = CGRectMake(110, 150, 100, 100);
SLLCircularSlider* circularSlider = [[SLLCircularSlider alloc] initWithFrame:sliderFrame];
[self.view addSubview:circularSlider];
...
}
之后,就像对任何其他控件一样,您需要使用目标-操作行为订阅更改事件
[slider addTarget:self action:@selector(newValue:) forControlEvents:UIControlEventValueChanged];
选项
SLLCircularSlider被设计得非常容易定制和美化。
###属性
####minimumValue:(float) - 默认: 0.0f
当滑块处于顶部位置时,它将currentValue设置为此值。
您可以设置最小值
circularSlider.minimumValue = 1.0f;
####maximumValue:(float) - 默认 100.0f
使用SLLCircularSlider时,currentValue随顺时针拖动滑块而增加。因此,当滑块正好在顶部位置左侧时,它将接近(但永远达不到)此值。
您可以设置最大值
circularSlider.minimumValue = 100.0f;
####currentValue:(float) - 默认 0.0f
每当滑块位置改变时,此值将改变。它将基于minimumValue和maximumValue属性的一个归一化值。
您可以通过
float val = circularSlider.currentValue;
####lineWidth:(int) - 默认 5
这决定了组成滑块的弧宽度。这将同时设置未填充弧(背景)和表示滑块滑过多少的弧。**目前,更改lineWidth超过几像素将产生不良副作用,主要是对句柄的影响。**
您可以通过
circularSlider.lineWidth = 6;
####handleColor:(UIColor*) - 默认 [UIColor redColor]
句柄是您可以拖动手指的部分。
使用
CGFloat hue = ( arc4random() % 256 / 256.0 );
CGFloat saturation = ( arc4random() % 128 / 256.0 ) + 0.5;
CGFloat brightness = ( arc4random() % 128 / 256.0 ) + 0.5;
circularSlider.handleColor = [UIColor colorWithHue:hue saturation:saturation brightness:brightness alpha:1];
####handleType:(EFHandleType) - 默认 SLLSemiTransparentWhiteCircle
SLLCircularSlider提供了4种类型的句柄
- SLLSemiTransparentWhiteCircle
- SLLSemiTransparentBlackCircle
- SLLDoubleCircleWithOpenCenter
- SLLDoubleCircleWithClosedCenter
- SLLBigCircle
您可以通过
circularSlider.handleType = SLLDoubleCircleWithClosedCenter;
####unfilledColor:(UIColor*) - 默认 [UIColor blackColor]
如果将滑块设置为最小值,将显示此颜色。
您可以修改unfilledColor
circularSlider.unfilledColor = [UIColor purpleColor];
####filledColor:(UIColor*) - 默认 [UIColor redColor]
显示在最小值和currentValue之间的颜色。
您可以通过
circularSlider.unfilledColor = [UIColor purpleColor];
####labelFont:(UIFont*) - 默认 [UIFont systemFontOfSize:10.0f]
如果您决定设置内部标记标签(下面会详细说明),这将决定标签的字体。
您可以通过
circularSlider.labelFont = [UIFont systemFontOfSize:14.0f];
注意这将在您未传递您想添加的标签时没有效果
####snapToLabels:(BOOL) - 默认 NO
如果设置为YES,在完成滑动后,它会跳转到最近的标签,并将当前值设置为在该标签处的值,而不是你拖动的位置。
您可以通过
circularSlider.snapToLabels = YES;
注意这将在您未传递您想添加的标签时没有效果
###函数
####-(void)setInnerMarkingLabels:(NSArray*)labels
您可以传递一个标签数组和它们将显示在滑块的内部。目前没有方法可以指定标签之间的间隔,因此它们将被均匀分布。如果您选择在滑块上包括标签,您将可以选择设置标签的字体,以及是否在值更改后将滑块跳转到最近的标签位置。
第一个标签将出现在1点钟位置(如果它是时钟的话)。
如果您想要使滑块看起来像时钟,您将做以下操作
NSArray* hoursArray = @[@"1", @"2", @"3", @"4", @"5", @"6", @"7", @"8", @"9", @"10", @"11", @"12"];
[circularSlider setInnerMarkingLabels:hoursArray];
闹钟演示设计
闹钟演示设计是基于Dribbble上的Micael Sambora设计的实现版本,可以在以下链接找到:这里。
有关Micael Sambora的更多信息可以在他的个人网站上找到:个人网站。
关于开发者
如果你喜欢这个控件,请在Twitter上关注@leejayschmidt并告知我!
许可(MIT)
版权所有(c)2018 Leejay Schmidt at Skylite Labs,基于EFCircularSlider构建,最初由Eliot Fowler创作(c)2013,原始代码库
特此许可,免费提供给任何获取此软件及其相关文档文件(“软件”)的个人,无需限制地处理该软件(包括但不限于使用、复制、修改、合并、发布、分发、转授许可和/或销售软件副本的权利),并允许向提供软件的个人提供这样做,但前提是
上述版权声明和本许可声明应包含在软件的所有副本或实质性部分中。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、针对特定目的的适用性和非侵权性保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论这些责任是合同、侵权还是其他方式,无论这些责任是否与软件或其使用或其他方式有关。