iOS自定義滑桿效果
本文實(shí)例為大家分享了iOS自定義滑桿的具體代碼,供大家參考,具體內(nèi)容如下
先讓我們看看效果:
主要實(shí)現(xiàn)的代碼:
UIImage *thumbWithLevel(float aLevel) { ? ? float INSET_AMT = 1.5f; ? ? CGRect baseRect = CGRectMake(0, 0, 40, 100); ? ? CGRect thumbRect = CGRectMake(0, 40, 40, 20); ? ?? ? ? UIGraphicsBeginImageContext(baseRect.size); ? ? CGContextRef context = UIGraphicsGetCurrentContext(); ? ?? ? ? [[UIColor darkGrayColor] setFill]; ? ? CGContextAddRect(context, CGRectInset(thumbRect, INSET_AMT, INSET_AMT)); ? ? CGContextFillPath(context); ? ?? ? ? [[UIColor whiteColor] setStroke]; ? ? CGContextSetLineWidth(context, 2); ? ? CGContextAddRect(context, CGRectInset(thumbRect, 2 * INSET_AMT, 2 * INSET_AMT)); ? ? CGRect ellipseRect = CGRectMake(0, 0, 40, 40); ? ? [[UIColor colorWithWhite:aLevel alpha:1] setFill]; ? ? CGContextAddEllipseInRect(context, ellipseRect); ? ? CGContextFillPath(context); ? ?? ? ? NSString *numString = [NSString stringWithFormat:@"%0.2f",aLevel]; ? ? UIColor *textColor = (aLevel > 0.5) ? [UIColor blackColor] : [UIColor whiteColor]; ? ? UIFont *font = [UIFont fontWithName:@"Georgia" size:15]; ? ? NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init]; ? ? style.lineBreakMode = NSLineBreakByCharWrapping; ? ? style.alignment = NSTextAlignmentCenter; ? ? NSDictionary *attr = @{NSFontAttributeName:font,NSParagraphStyleAttributeName:style,NSForegroundColorAttributeName:textColor}; ? ? [numString drawInRect:CGRectInset(ellipseRect, 0, 6) withAttributes:attr]; ? ?? ? ? [[UIColor grayColor] setStroke]; ? ? CGContextSetLineWidth(context, 3); ? ? CGContextAddEllipseInRect(context, CGRectInset(ellipseRect, 2, 2)); ? ? CGContextStrokePath(context); ? ?? ? ? UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext(); ? ? UIGraphicsEndImageContext(); ? ?? ? ? return ?theImage; }
在這里我們通過context的方法將圖片畫出了,對(duì)于性能有點(diǎn)要求,但是現(xiàn)在應(yīng)該不在乎這點(diǎn)性能了
- (void)updateThumb { ? ? if ((self.value < 0.98) && (ABS(self.value - previousValue) < 0.1f)) { ? ? ? ? return; ? ? } ? ?? ? ? UIImage *customImg = thumbWithLevel(self.value); ? ? [self setThumbImage:customImg forState:UIControlStateHighlighted]; ? ? previousValue = self.value; }
通過滑塊的值來使上面的值進(jìn)行變化,更加的直觀
[self setThumbImage:simpleThumb() forState:UIControlStateNormal]; ? [self addTarget:self action:@selector(startDrag:) forControlEvents:UIControlEventTouchDown]; ? [self addTarget:self action:@selector(updateThumb) forControlEvents:UIControlEventValueChanged]; ? [self addTarget:self action:@selector(endDrag:) forControlEvents:UIControlEventTouchUpOutside | UIControlEventTouchUpInside];
對(duì)于不同的狀態(tài)來進(jìn)行不同的操作,讓滑桿的用戶體驗(yàn)度更加的完整
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
iOS程序開發(fā)中設(shè)置UITableView的全屏分隔線的方法(不畫線)
ableView是app開發(fā)中常用到的控件,功能很強(qiáng)大,多用于數(shù)據(jù)的顯示。下面給大家介紹設(shè)置UITableView的全屏分隔線的兩種方法2016-04-04在iOS10系統(tǒng)中微信后退無法發(fā)起ajax請(qǐng)求的問題解決辦法
這篇文章主要介紹了在iOS10系統(tǒng)中微信后退無法發(fā)起ajax請(qǐng)求的問題解決辦法,一般可以通過延時(shí)發(fā)送請(qǐng)求解決,下面通過本文給大家分享下解決辦法,需要的朋友參考下吧2017-01-01Xcode 9下適配iPhoneX導(dǎo)致iOS 10不兼容問題的解決方法
這篇文章主要給大家介紹了關(guān)于Xcode 9下適配iPhoneX導(dǎo)致iOS 10不兼容問題的解決方法,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-04-04IOS開發(fā)Swift?與?OC相互調(diào)用詳解
這篇文章主要為大家介紹了IOS開發(fā)Swift?與?OC相互調(diào)用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08IOS開發(fā)仿微信右側(cè)彈出視圖實(shí)現(xiàn)
這篇文章主要介紹了IOS開發(fā)仿微信右側(cè)彈出視圖實(shí)現(xiàn)的相關(guān)資料,希望通過本文能幫助到大家,讓大家實(shí)現(xiàn)這樣類似的功能,需要的朋友可以參考下2017-10-10iOS應(yīng)用中UICollectionViewCell定制Button
這篇文章主要介紹了iOS應(yīng)用中UICollectionViewCell如何定制Button,設(shè)置每行顯示的按鈕的個(gè)數(shù),自定制按鈕的顯示樣式,感興趣的小伙伴們可以參考一下2016-08-08