日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

iOS自定義滑桿效果_IOS

作者:ChasingDreamsCoder ? 更新時間: 2022-06-25 編程語言

本文實例為大家分享了iOS自定義滑桿的具體代碼,供大家參考,具體內容如下

先讓我們看看效果:

主要實現的代碼:

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的方法將圖片畫出了,對于性能有點要求,但是現在應該不在乎這點性能了

- (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;
}

通過滑塊的值來使上面的值進行變化,更加的直觀

[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];

對于不同的狀態來進行不同的操作,讓滑桿的用戶體驗度更加的完整

原文鏈接:https://blog.csdn.net/ChasingDreamsCoder/article/details/53074677

欄目分類
最近更新