iOS 标号分段选择(字体选择)

屏幕快照 2017-07-05 下午5.37.48.png

屏幕快照 2017-07-05 下午5.40.42.png

微信或者QQ,大家都见过类似字体大小选择,那么字体选择分段怎么来做呢,微信QQ,可以左右滑动选择,还可以点击到哪选择分段,我们可以考虑用手势写,界面自己画。

那么今天用UISlider 来做一下这个效果。

首先,我们先创建一个UISlider

屏幕快照 2017-07-06 下午3.36.11.png

将颜色清除掉

    [self.slider setMaximumTrackTintColor:[UIColor clearColor]];
    [self.slider setMinimumTrackTintColor:[UIColor clearColor]];

它有分段选择的分段线和下面的直线,我们可以用贝塞尔来画这个线条

UIBezierPath *path = [UIBezierPath bezierPath];
使用UIBezierPath创建多边形---在path下面添加直线条形成多边形,多边形是一些简单的形状,这些形状是由一些直线线条组成,我们可以用moveToPoint: 和 addLineToPoint:方法去构建。
方法moveToPoint:设置我们想要创建形状的起点。从这点开始,我们可以用方法addLineToPoint:去创建一个形状的线段。
我们可以连续的创建line,每一个line的起点都是先前的终点,终点就是指定的点。

moveToPoint 添加起点位置

[path moveToPoint:CGPointMake(0, 0)];
   // lineWith 线条长度
    [path addLineToPoint:CGPointMake(0, 6)];
    
    [path addLineToPoint:CGPointMake(lineWith, 6)];
    
    [path addLineToPoint:CGPointMake(lineWith, 0)];

将绘制路径交于layer 绘制

    CAShapeLayer *shapeLayer = [CAShapeLayer layer];
    
    shapeLayer.frame = CGRectMake(11, 4, lineWith, 6);
    
    shapeLayer.path = path.CGPath;
    
    shapeLayer.strokeColor = [UIColor grayColor].CGColor;
    
    shapeLayer.fillColor = [UIColor clearColor].CGColor;
    
    [self.slider.layer insertSublayer:shapeLayer atIndex:0];

效果如下:


屏幕快照 2017-07-06 下午3.48.56.png

两边的线条和直线有了,那么还有中间的分段线,怎么来做?其实跟之前绘制的一样的,其实就是起点加要绘制的形状的线段

      //循环创建(自己加个循环就好了) offset 计算每个分段的距离
       UIBezierPath *linePath = [UIBezierPath bezierPath];
       [linePath moveToPoint:CGPointMake(offset * i , 0)];
       [linePath addLineToPoint:CGPointMake(offset * i , 6)];
      
        CAShapeLayer *lineLayer = [CAShapeLayer layer];
        lineLayer.path = linePath.CGPath;
        lineLayer.strokeColor = [UIColor grayColor].CGColor;
        lineLayer.fillColor = [UIColor clearColor].CGColor;
        [shapeLayer insertSublayer:lineLayer atIndex:0];

来看效果:

屏幕快照 2017-07-06 下午3.57.10.png

基本上这个线条分段就做好了,下面可以在线条分段上面加label 来展示信息,这里就不介绍怎么加label了,下面我们来做滑动是怎么分段的

给slider 添加方法监听滑动值得变化

    [_slider addTarget:self action:@selector(sliderChangeAction:) forControlEvents:UIControlEventValueChanged];
    
    [_slider addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventTouchUpInside];
    
    [_slider addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventTouchUpOutside];

在这些方法中做滑动值的变化处理,来达到滑动分段是整数的效果

    //四舍五入
    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
    
    [formatter setPositiveFormat:@"0"];
    
    NSString *value =  [formatter stringFromNumber:[NSNumber numberWithFloat:num]];

  [_slider setValue:[[value floatValue] animated:YES];

//这里就不贴方法了,基本计算就是这样,大家可以写成方法,slider 添加的监听方法中做处理。

滑动的效果基本完成,有滑动,点击呢?

添加点击手势
    _tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(actionTapGesture:)];
    [_slider addGestureRecognizer:_tapGesture];

在点击事件里面的处理就跟slider 里面的方法处理基本一样无非就是获取点击的位置判断位置,这里就不说了。

ps:另外加了点击手势之后,可能有时候会出现闪一下的bug,原因是滑动会触发点击手势的方法,那么我们可以在滑动的时候禁止手势点击,松开滑动解开手势点击

基本效果完成,大家可以自己选择封装等,还有选中的时候将选中的选项放大,也可隐藏上面的所有标题信息,滑动到哪显示哪个

给大家一个gif的效果:

截图.gif

有需要demo的 可以留言!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352

推荐阅读更多精彩内容