iOS 標(biāo)號分段選擇(字體選擇)

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

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

微信或者QQ冶伞,大家都見過類似字體大小選擇,那么字體選擇分段怎么來做呢步氏,微信QQ响禽,可以左右滑動選擇,還可以點擊到哪選擇分段荚醒,我們可以考慮用手勢寫芋类,界面自己畫。

那么今天用UISlider 來做一下這個效果界阁。

首先侯繁,我們先創(chuàng)建一個UISlider

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

將顏色清除掉

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

它有分段選擇的分段線和下面的直線,我們可以用貝塞爾來畫這個線條

UIBezierPath *path = [UIBezierPath bezierPath];
使用UIBezierPath創(chuàng)建多邊形---在path下面添加直線條形成多邊形,多邊形是一些簡單的形狀,這些形狀是由一些直線線條組成,我們可以用moveToPoint: 和 addLineToPoint:方法去構(gòu)建泡躯。
方法moveToPoint:設(shè)置我們想要創(chuàng)建形狀的起點贮竟。從這點開始,我們可以用方法addLineToPoint:去創(chuàng)建一個形狀的線段较剃。
我們可以連續(xù)的創(chuàng)建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

兩邊的線條和直線有了惰拱,那么還有中間的分段線,怎么來做啊送?其實跟之前繪制的一樣的偿短,其實就是起點加要繪制的形狀的線段

      //循環(huán)創(chuàng)建(自己加個循環(huán)就好了) 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 添加方法監(jiān)聽滑動值得變化

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

在這些方法中做滑動值的變化處理,來達(dá)到滑動分段是整數(shù)的效果

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

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

//這里就不貼方法了篷朵,基本計算就是這樣纤子,大家可以寫成方法,slider 添加的監(jiān)聽方法中做處理款票。

滑動的效果基本完成控硼,有滑動,點擊呢艾少?

添加點擊手勢
    _tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(actionTapGesture:)];
    [_slider addGestureRecognizer:_tapGesture];

在點擊事件里面的處理就跟slider 里面的方法處理基本一樣無非就是獲取點擊的位置判斷位置卡乾,這里就不說了。

ps:另外加了點擊手勢之后缚够,可能有時候會出現(xiàn)閃一下的bug幔妨,原因是滑動會觸發(fā)點擊手勢的方法,那么我們可以在滑動的時候禁止手勢點擊谍椅,松開滑動解開手勢點擊

基本效果完成误堡,大家可以自己選擇封裝等,還有選中的時候?qū)⑦x中的選項放大雏吭,也可隱藏上面的所有標(biāo)題信息锁施,滑動到哪顯示哪個

給大家一個gif的效果:

截圖.gif

有需要demo的 可以留言!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末杖们,一起剝皮案震驚了整個濱河市悉抵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌摘完,老刑警劉巖姥饰,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異孝治,居然都是意外死亡列粪,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門谈飒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來岂座,“玉大人,你說我怎么就攤上這事步绸〔舯疲” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵瓤介,是天一觀的道長吕喘。 經(jīng)常有香客問我,道長刑桑,這世上最難降的妖魔是什么氯质? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮祠斧,結(jié)果婚禮上闻察,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好辕漂,可當(dāng)我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布呢灶。 她就那樣靜靜地躺著,像睡著了一般钉嘹。 火紅的嫁衣襯著肌膚如雪鸯乃。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天跋涣,我揣著相機與錄音缨睡,去河邊找鬼。 笑死陈辱,一個胖子當(dāng)著我的面吹牛奖年,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播沛贪,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼陋守,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了鹏浅?” 一聲冷哼從身側(cè)響起嗅义,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎隐砸,沒想到半個月后之碗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡季希,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年褪那,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片式塌。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡博敬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出峰尝,到底是詐尸還是另有隱情偏窝,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布武学,位于F島的核電站祭往,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏火窒。R本人自食惡果不足惜硼补,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望熏矿。 院中可真熱鬧已骇,春花似錦离钝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至乱豆,卻和暖如春奖恰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背宛裕。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留论泛,地道東北人揩尸。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像屁奏,于是被迫代替她去往敵國和親岩榆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容