YLProgressBar实战指南:打造3种风格进度条组件的iOS自定义控件实现
作为iOS开发者,你是否曾为App中单调的进度条而困扰?当用户等待文件下载、数据加载或任务处理时,一个设计精美、交互友好的进度条组件能显著提升用户体验。YLProgressBar作为一款功能强大的iOS进度条自定义组件,提供了丰富的样式和动画效果,让开发者能够轻松实现从简约到复杂的进度指示需求。本文将通过"功能解析→场景应用→实现方案→扩展技巧"的四象限结构,带你全面掌握YLProgressBar的使用方法,打造符合App设计语言的进度条组件。
一、功能解析:YLProgressBar核心能力与技术原理
1.1 组件架构与核心类解析
YLProgressBar的核心实现基于UIView扩展,通过分层绘制实现复杂视觉效果。主要包含以下核心类:
- YLProgressBar:主进度条类,负责进度绘制与动画控制
- YLBackgroundView:背景视图组件,提供进度条的底层视觉效果
- 相关枚举类型:定义进度条类型、动画方向、文本显示模式等配置选项
核心绘制逻辑通过-drawRect:方法实现,采用Core Graphics框架进行图形渲染,确保在不同设备上的显示一致性和性能优化。
1.2 进度条类型与视觉特性对比
YLProgressBar提供多种预定义样式,适应不同设计需求:
| 类型 | 视觉特征 | 适用场景 | 性能消耗 |
|---|---|---|---|
| 基础进度条 | 单一颜色填充,无动画效果 | 轻量级加载场景 | 低 |
| 条纹动画进度条 | 动态移动条纹,模拟加载状态 | 文件下载、数据处理 | 中 |
| 渐变色彩进度条 | 多色渐变过渡效果 | 强调型进度展示 | 中高 |
| 分段式进度条 | 多阶段进度指示 | 多步骤任务流程 | 中 |
1.3 核心API与配置项说明
掌握以下关键API是实现自定义进度条的基础:
// 进度设置
@property (nonatomic, assign) CGFloat progress;
- (void)setProgress:(CGFloat)progress animated:(BOOL)animated;
// 视觉样式配置
@property (nonatomic, assign) YLProgressBarType type;
@property (nonatomic, strong) UIColor *progressTintColor;
@property (nonatomic, strong) NSArray *progressTintColors; // 渐变色彩数组
@property (nonatomic, assign) CGFloat cornerRadius;
// 动画控制
@property (nonatomic, assign) BOOL stripesAnimated;
@property (nonatomic, assign) YLProgressBarStripesDirection stripesDirection;
@property (nonatomic, assign) CGFloat stripesAnimationVelocity;
// 文本指示
@property (nonatomic, assign) YLProgressBarIndicatorTextDisplayMode indicatorTextDisplayMode;
💡 实践小贴士:所有视觉属性修改后会立即生效,无需额外调用刷新方法。对于频繁更新的场景,建议使用setProgress:animated:方法以获得平滑过渡效果。
二、场景应用:进度条组件的实际业务场景
2.1 媒体播放进度控制
在视频或音频播放器中,进度条是核心交互组件之一。使用YLProgressBar可以实现具有触感反馈的媒体进度控制:
// 创建媒体播放进度条
YLProgressBar *mediaProgressBar = [[YLProgressBar alloc] initWithFrame:CGRectMake(20, 400, self.view.bounds.size.width - 40, 4)];
mediaProgressBar.type = YLProgressBarTypeFlat;
mediaProgressBar.progressTintColor = [UIColor systemBlueColor];
mediaProgressBar.trackTintColor = [UIColor colorWithWhite:0.3 alpha:0.3];
mediaProgressBar.cornerRadius = 2;
mediaProgressBar.indicatorTextDisplayMode = YLProgressBarIndicatorTextDisplayModeNone;
// 添加拖拽交互
UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handleProgressPan:)];
[mediaProgressBar addGestureRecognizer:panGesture];
[self.view addSubview:mediaProgressBar];
实现拖拽交互的核心处理逻辑:
- (void)handleProgressPan:(UIPanGestureRecognizer *)gesture {
YLProgressBar *progressBar = (YLProgressBar *)gesture.view;
CGPoint location = [gesture locationInView:progressBar];
CGFloat progress = location.x / progressBar.bounds.size.width;
if (progress < 0) progress = 0;
if (progress > 1) progress = 1;
if (gesture.state == UIGestureRecognizerStateBegan ||
gesture.state == UIGestureRecognizerStateChanged) {
progressBar.progress = progress;
// 更新播放时间显示
[self updatePlaybackTime:progress];
} else if (gesture.state == UIGestureRecognizerStateEnded) {
// 通知播放器跳转到指定进度
[self.player seekToTime:CMTimeMakeWithSeconds(progress * self.totalDuration, 1)];
}
}
📌 实践小贴士:媒体进度条建议使用YLProgressBarTypeFlat类型,并设置较小的高度(4-6pt)以符合iOS设计规范。添加手势交互时需注意与系统手势的冲突处理。
2.2 文件下载与上传进度展示
文件传输场景需要清晰展示进度状态,并通过动画效果缓解用户等待焦虑:
// 创建下载进度条
YLProgressBar *downloadProgressBar = [[YLProgressBar alloc] initWithFrame:CGRectMake(20, 200, self.view.bounds.size.width - 40, 8)];
downloadProgressBar.type = YLProgressBarTypeRounded;
downloadProgressBar.progressTintColors = @[[UIColor systemBlueColor], [UIColor systemPurpleColor]];
downloadProgressBar.progressStretch = YES;
downloadProgressBar.trackTintColor = [UIColor colorWithWhite:0.9 alpha:1.0];
downloadProgressBar.stripesAnimated = YES;
downloadProgressBar.stripesColor = [UIColor colorWithWhite:1.0 alpha:0.7];
downloadProgressBar.cornerRadius = 4;
downloadProgressBar.indicatorTextDisplayMode = YLProgressBarIndicatorTextDisplayModeProgress;
[self.view addSubview:downloadProgressBar];
配合NSURLSession实现进度更新:
// 下载进度回调处理
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error {
if (error) {
// 处理错误情况
downloadProgressBar.progressTintColor = [UIColor systemRedColor];
} else {
// 下载完成动画
[UIView animateWithDuration:0.3 animations:^{
downloadProgressBar.transform = CGAffineTransformMakeScale(1.05, 1.05);
} completion:^(BOOL finished) {
[UIView animateWithDuration:0.2 animations:^{
downloadProgressBar.transform = CGAffineTransformIdentity;
}];
}];
}
}
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didSendBodyData:(int64_t)bytesSent totalBytesSent:(int64_t)totalBytesSent totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend {
CGFloat progress = (CGFloat)totalBytesSent / totalBytesExpectedToSend;
[downloadProgressBar setProgress:progress animated:YES];
}
2.3 任务完成度与步骤指示
在多步骤任务流程中,进度条可以直观展示当前完成阶段:
// 创建步骤进度条
YLProgressBar *stepProgressBar = [[YLProgressBar alloc] initWithFrame:CGRectMake(20, 300, self.view.bounds.size.width - 40, 12)];
stepProgressBar.type = YLProgressBarTypeFlat;
stepProgressBar.progressTintColor = [UIColor systemGreenColor];
stepProgressBar.trackTintColor = [UIColor colorWithWhite:0.9 alpha:1.0];
stepProgressBar.progress = 0.0;
stepProgressBar.hideStripes = YES;
stepProgressBar.cornerRadius = 6;
stepProgressBar.indicatorTextDisplayMode = YLProgressBarIndicatorTextDisplayModeFixedRight;
[self.view addSubview:stepProgressBar];
// 步骤标签
NSArray *stepTitles = @[@"准备", @"分析", @"处理", @"完成"];
for (int i = 0; i < stepTitles.count; i++) {
UILabel *label = [[UILabel alloc] init];
label.text = stepTitles[i];
label.font = [UIFont systemFontOfSize:12];
label.textColor = [UIColor darkGrayColor];
label.frame = CGRectMake(20 + (self.view.bounds.size.width - 40) * i / (stepTitles.count - 1), 320, 60, 20);
label.textAlignment = NSTextAlignmentCenter;
[self.view addSubview:label];
}
步骤更新控制:
// 模拟步骤进度更新
- (void)updateStepProgress:(NSInteger)step {
CGFloat progress = (CGFloat)step / 3.0; // 4个步骤,最大值为3
[stepProgressBar setProgress:progress animated:YES];
// 更新步骤标签样式
for (int i = 0; i < self.stepLabels.count; i++) {
UILabel *label = self.stepLabels[i];
label.textColor = (i <= step) ? [UIColor systemGreenColor] : [UIColor darkGrayColor];
label.font = (i == step) ? [UIFont boldSystemFontOfSize:12] : [UIFont systemFontOfSize:12];
}
}
🔧 实践小贴士:多步骤进度条建议配合文字标签使用,增强用户对当前阶段的认知。进度值计算应为(当前步骤-1)/(总步骤-1),确保最后一步时进度达到100%。
三、实现方案:从基础集成到高级定制
3.1 环境配置与基础集成
要在项目中使用YLProgressBar,首先需要完成以下集成步骤:
- 获取源码
git clone https://gitcode.com/gh_mirrors/yl/YLProgressBar
-
添加核心文件到项目
- 将
YLProgressBar.h和YLProgressBar.m文件拖入Xcode项目 - 确保勾选"Copy items if needed"选项
- 在需要使用的文件中导入头文件:
#import "YLProgressBar.h"
- 将
-
基础初始化代码
// 最简单的进度条实现
YLProgressBar *basicProgressBar = [[YLProgressBar alloc] initWithFrame:CGRectMake(20, 100, self.view.bounds.size.width - 40, 8)];
basicProgressBar.progressTintColor = [UIColor systemBlueColor];
basicProgressBar.progress = 0.5; // 设置50%进度
[self.view addSubview:basicProgressBar];
3.2 三种特色进度条完整实现
3.2.1 渐变动态进度条
实现带有色彩渐变和动态效果的进度条:
// 创建渐变动态进度条
YLProgressBar *gradientProgressBar = [[YLProgressBar alloc] initWithFrame:CGRectMake(20, 150, self.view.bounds.size.width - 40, 10)];
gradientProgressBar.type = YLProgressBarTypeRounded;
// 设置渐变颜色
gradientProgressBar.progressTintColors = @[
[UIColor colorWithRed:0.24 green:0.56 blue:0.87 alpha:1.0], // 蓝色
[UIColor colorWithRed:0.30 green:0.75 blue:0.62 alpha:1.0], // 青绿色
[UIColor colorWithRed:0.34 green:0.85 blue:0.39 alpha:1.0] // 绿色
];
gradientProgressBar.progressStretch = YES;
// 配置动画效果
gradientProgressBar.stripesAnimated = YES;
gradientProgressBar.stripesDirection = YLProgressBarStripesDirectionLeft;
gradientProgressBar.stripesAnimationVelocity = 1.2;
gradientProgressBar.stripesWidth = 4;
gradientProgressBar.stripesDelta = 3;
gradientProgressBar.stripesColor = [UIColor colorWithWhite:1.0 alpha:0.3];
// 外观设置
gradientProgressBar.trackTintColor = [UIColor colorWithWhite:0.95 alpha:1.0];
gradientProgressBar.cornerRadius = 5;
gradientProgressBar.indicatorTextDisplayMode = YLProgressBarIndicatorTextDisplayModeProgress;
[self.view addSubview:gradientProgressBar];
// 模拟进度更新
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[gradientProgressBar setProgress:0.7 animated:YES];
});
3.2.2 分段式进度条
实现带有阶段标记的分段进度展示:
// 创建分段式进度条
YLProgressBar *segmentedProgressBar = [[YLProgressBar alloc] initWithFrame:CGRectMake(20, 200, self.view.bounds.size.width - 40, 8)];
segmentedProgressBar.type = YLProgressBarTypeFlat;
segmentedProgressBar.progressTintColor = [UIColor systemOrangeColor];
segmentedProgressBar.trackTintColor = [UIColor colorWithWhite:0.9 alpha:1.0];
segmentedProgressBar.progress = 0.0;
segmentedProgressBar.hideStripes = YES;
segmentedProgressBar.cornerRadius = 0; // 直角样式
segmentedProgressBar.indicatorTextDisplayMode = YLProgressBarIndicatorTextDisplayModeNone;
[self.view addSubview:segmentedProgressBar];
// 添加分段标记
NSInteger segments = 5;
CGFloat segmentWidth = (self.view.bounds.size.width - 40) / segments;
for (int i = 1; i < segments; i++) {
UIView *divider = [[UIView alloc] initWithFrame:CGRectMake(20 + segmentWidth * i, 196, 1, 16)];
divider.backgroundColor = [UIColor colorWithWhite:0.7 alpha:1.0];
[self.view addSubview:divider];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(20 + segmentWidth * i - 15, 210, 30, 20)];
label.text = [NSString stringWithFormat:@"%d%%", i * 20];
label.font = [UIFont systemFontOfSize:11];
label.textColor = [UIColor darkGrayColor];
label.textAlignment = NSTextAlignmentCenter;
[self.view addSubview:label];
}
3.2.3 带指示器的环形进度条
虽然YLProgressBar主要是线性进度条,但通过组合使用可以实现环形效果:
// 创建环形进度条容器
UIView *circleContainer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 120, 120)];
circleContainer.center = CGPointMake(self.view.center.x, 350);
[self.view addSubview:circleContainer];
// 使用YLProgressBar实现环形进度
YLProgressBar *circleProgressBar = [[YLProgressBar alloc] initWithFrame:CGRectMake(0, 0, 120, 120)];
circleProgressBar.type = YLProgressBarTypeRounded;
circleProgressBar.progressTintColor = [UIColor systemPurpleColor];
circleProgressBar.trackTintColor = [UIColor colorWithWhite:0.9 alpha:1.0];
circleProgressBar.progress = 0.75;
circleProgressBar.hideStripes = YES;
circleProgressBar.cornerRadius = 60; // 半径为宽度一半,形成圆形
circleProgressBar.indicatorTextDisplayMode = YLProgressBarIndicatorTextDisplayModeNone;
[circleContainer addSubview:circleProgressBar];
// 添加中心指示器
UILabel *centerLabel = [[UILabel alloc] initWithFrame:circleContainer.bounds];
centerLabel.text = @"75%";
centerLabel.font = [UIFont boldSystemFontOfSize:24];
centerLabel.textColor = [UIColor systemPurpleColor];
centerLabel.textAlignment = NSTextAlignmentCenter;
[circleContainer addSubview:centerLabel];
// 添加内圆覆盖,形成环形
UIView *innerCircle = [[UIView alloc] initWithFrame:CGRectMake(15, 15, 90, 90)];
innerCircle.backgroundColor = [UIColor whiteColor];
innerCircle.layer.cornerRadius = 45;
[circleContainer addSubview:innerCircle];
图:YLProgressBar提供的多种进度条样式展示,包括渐变动态、分段式和环形进度条
3.3 进度条动画与交互优化
为进度条添加丰富的动画效果和交互反馈:
// 自定义进度更新动画
- (void)setCustomProgress:(CGFloat)progress forBar:(YLProgressBar *)bar {
[UIView animateWithDuration:0.5
delay:0
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
bar.progress = progress;
} completion:^(BOOL finished) {
// 动画完成后添加弹性效果
if (progress == 1.0) {
[UIView animateWithDuration:0.2 animations:^{
bar.transform = CGAffineTransformMakeScale(1.05, 1.05);
} completion:^(BOOL finished) {
[UIView animateWithDuration:0.2 animations:^{
bar.transform = CGAffineTransformIdentity;
}];
}];
}
}];
}
// 添加触摸反馈
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)];
[bar addGestureRecognizer:longPress];
- (void)handleLongPress:(UILongPressGestureRecognizer *)gesture {
if (gesture.state == UIGestureRecognizerStateBegan) {
// 触发触觉反馈
UIImpactFeedbackGenerator *generator = [[UIImpactFeedbackGenerator alloc] initWithStyle:UIImpactFeedbackStyleLight];
[generator prepare];
[generator impactOccurred];
// 显示详细进度信息
[self showProgressDetail];
}
}
💡 实践小贴士:动画持续时间建议设置在0.3-0.5秒之间,既能清晰展示变化过程,又不会让用户感到等待过长。添加触觉反馈可以显著提升交互体验。
四、扩展技巧:性能优化与高级应用
4.1 进度条性能优化策略
在高性能要求的场景下,需要对进度条实现进行优化:
- 减少重绘区域
// 重写drawRect:方法,限定绘制区域
- (void)drawRect:(CGRect)rect {
// 仅绘制进度变化的区域
CGRect progressRect = CGRectMake(0, 0, self.bounds.size.width * self.progress, self.bounds.size.height);
[super drawRect:CGRectIntersection(rect, progressRect)];
}
- 控制更新频率
// 限制进度更新频率,避免过度绘制
- (void)updateProgressThrottled:(CGFloat)progress {
static CGFloat lastProgress = 0;
NSTimeInterval now = CACurrentMediaTime();
static NSTimeInterval lastUpdateTime = 0;
// 至少0.1秒或进度变化超过1%才更新
if (fabs(progress - lastProgress) > 0.01 || now - lastUpdateTime > 0.1) {
lastProgress = progress;
lastUpdateTime = now;
self.progressBar.progress = progress;
}
}
- 离屏渲染优化 避免使用可能导致离屏渲染的属性组合:
- 减少使用透明度(alpha < 1.0)
- 谨慎使用cornerRadius + clipsToBounds组合
- 考虑使用光栅化缓存:
layer.shouldRasterize = YES;
4.2 与其他UI组件的组合使用
4.2.1 与UITableView/UICollectionView集成
在列表中展示多个进度条时的优化实现:
// UITableViewCell中使用进度条
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *cellIdentifier = @"ProgressCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
// 创建进度条并添加到cell
YLProgressBar *progressBar = [[YLProgressBar alloc] initWithFrame:CGRectMake(15, 30, cell.contentView.bounds.size.width - 30, 6)];
progressBar.tag = 100;
progressBar.type = YLProgressBarTypeFlat;
progressBar.trackTintColor = [UIColor colorWithWhite:0.9 alpha:1.0];
[cell.contentView addSubview:progressBar];
}
// 配置进度条
YLProgressBar *progressBar = (YLProgressBar *)[cell.contentView viewWithTag:100];
ProgressItem *item = self.progressItems[indexPath.row];
progressBar.progressTintColor = item.color;
progressBar.progress = item.progress;
progressBar.indicatorTextDisplayMode = YLProgressBarIndicatorTextDisplayModeProgress;
return cell;
}
4.2.2 与UIAlertController组合
在对话框中集成进度条显示:
// 创建带进度条的对话框
UIAlertController *progressAlert = [UIAlertController alertControllerWithTitle:@"正在处理"
message:@"\n\n\n"
preferredStyle:UIAlertControllerStyleAlert];
// 添加进度条
YLProgressBar *alertProgressBar = [[YLProgressBar alloc] initWithFrame:CGRectMake(20, 50, 240, 8)];
alertProgressBar.type = YLProgressBarTypeRounded;
alertProgressBar.progressTintColor = [UIColor systemBlueColor];
alertProgressBar.tag = 1001;
[progressAlert.view addSubview:alertProgressBar];
// 添加取消按钮
[progressAlert addAction:[UIAlertAction actionWithTitle:@"取消"
style:UIAlertActionStyleCancel
handler:^(UIAlertAction * _Nonnull action) {
// 取消操作
}]];
// 显示对话框
[self presentViewController:progressAlert animated:YES completion:nil];
// 更新进度
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
YLProgressBar *bar = (YLProgressBar *)[progressAlert.view viewWithTag:1001];
[bar setProgress:0.7 animated:YES];
});
4.3 常见问题排查与解决方案
问题1:进度条动画卡顿或不流畅
可能原因:
- 在主线程进行大量计算
- 进度更新频率过高
- 同时更新多个进度条导致CPU负载过高
解决方案:
// 优化方案:使用后台线程计算进度,主线程更新UI
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// 后台计算进度
CGFloat newProgress = [self calculateProgress];
// 主线程更新UI
dispatch_async(dispatch_get_main_queue(), ^{
[self.progressBar setProgress:newProgress animated:YES];
});
});
// 限制更新频率
static NSTimeInterval lastUpdateTime = 0;
if (CACurrentMediaTime() - lastUpdateTime > 0.03) { // 约30fps
lastUpdateTime = CACurrentMediaTime();
[self.progressBar setProgress:newProgress animated:YES];
}
问题2:进度条颜色显示异常或不生效
可能原因:
- 同时设置了progressTintColor和progressTintColors
- 视图层级问题导致被遮挡
- tintColor继承自父视图
解决方案:
// 确保只设置一种颜色属性
progressBar.progressTintColor = nil; // 清除单一颜色
progressBar.progressTintColors = @[[UIColor redColor], [UIColor blueColor]]; // 设置渐变颜色
// 检查视图层级
NSLog(@"视图层级: %@", [progressBar.superview recursiveDescription]);
// 强制设置tintColor
progressBar.tintColor = [UIColor blackColor];
progressBar.progressTintColor = [UIColor systemBlueColor];
问题3:进度条在UITableView中重用时显示异常
可能原因:
- 单元格重用时未正确重置进度条状态
- 异步更新进度时单元格已被重用
解决方案:
// 在cellForRowAtIndexPath中完全重置进度条状态
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// ...
YLProgressBar *progressBar = (YLProgressBar *)[cell.contentView viewWithTag:100];
// 重置所有属性
progressBar.progress = 0;
progressBar.progressTintColor = nil;
progressBar.progressTintColors = nil;
progressBar.stripesAnimated = NO;
// 重新配置
ProgressItem *item = self.items[indexPath.row];
progressBar.progressTintColor = item.color;
[progressBar setProgress:item.progress animated:NO]; // 非动画方式设置初始进度
return cell;
}
// 使用NSIndexPath关联异步更新
- (void)updateProgressForIndexPath:(NSIndexPath *)indexPath {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
CGFloat progress = [self calculateProgressForItem:indexPath.row];
dispatch_async(dispatch_get_main_queue(), ^{
// 检查单元格是否仍在屏幕上
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
if (cell) {
YLProgressBar *progressBar = (YLProgressBar *)[cell.contentView viewWithTag:100];
[progressBar setProgress:progress animated:YES];
}
});
});
}
📌 实践小贴士:在处理异步更新UI的场景时,始终验证目标视图是否仍然存在且可见,避免对已释放或重用的视图进行操作。
五、未来功能展望
基于YLProgressBar的现有功能,未来可以考虑添加以下增强特性:
-
自定义形状支持:除了线性和环形,支持更多自定义形状的进度条,如圆形、弧形、不规则形状等,满足特殊设计需求。
-
进度动画预设:内置多种动画预设,如弹跳、脉冲、呼吸等效果,简化复杂动画的实现流程。
-
交互反馈扩展:添加更多交互方式,如滑动调整进度、点击暂停/继续等,增强用户控制能力。
-
主题系统:实现主题系统,允许开发者定义一套进度条样式并在应用中统一应用,便于主题切换和品牌一致性维护。
-
性能监控:集成性能监控功能,提供帧率、CPU占用等数据,帮助开发者优化进度条在不同设备上的表现。
YLProgressBar作为一款功能丰富的进度条组件,为iOS开发者提供了灵活且强大的进度指示解决方案。通过本文介绍的功能解析、场景应用、实现方案和扩展技巧,你可以充分利用YLProgressBar的特性,为你的应用打造专业、美观的进度条组件,提升用户体验。无论是简单的加载指示还是复杂的进度交互,YLProgressBar都能满足你的需求,成为你iOS开发工具箱中的得力助手。
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5-w4a8GLM-5-w4a8基于混合专家架构,专为复杂系统工程与长周期智能体任务设计。支持单/多节点部署,适配Atlas 800T A3,采用w4a8量化技术,结合vLLM推理优化,高效平衡性能与精度,助力智能应用开发Jinja00
jiuwenclawJiuwenClaw 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。Python0225- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
AtomGit城市坐标计划AtomGit 城市坐标计划开启!让开源有坐标,让城市有星火。致力于与城市合伙人共同构建并长期运营一个健康、活跃的本地开发者生态。01
AntSK基于.Net9 + AntBlazor + SemanticKernel 和KernelMemory 打造的AI知识库/智能体,支持本地离线AI大模型。可以不联网离线运行。支持aspire观测应用数据CSS02
