扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
日常记录工程中遇到的问题~~
我们提供的服务有:成都网站建设、成都做网站、微信公众号开发、网站优化、网站认证、天心ssl等。为上千多家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的天心网站制作公司
先上效果图:
简单解释:
一个进度条view,要求进度条上的文字需要适应进度条的背景颜色和进度的颜色,over。
思路:
添加顺序为:
ProgressView - label1 - view - label2
注意,label2要添加在view上,此时label2就可以根据view的进度显示一部分,然后label1显示的是view没有覆盖到的一部分,label1+label2就可以完整的显示全部要显示的内容了。
注意:
此方法算是一个取巧的方法,另外还有一种通过重新绘制label的方法也可以尝试。此篇只写了第一种方法,第二种方法有同学做过的欢迎来交流~~
因为是工程中用到的,工程中的显示进度view是一个渐变的图片,而且已经封装了下,需要的同学可以直接拿来用。
progressView1.backgroundColor、progressView1.progressImage、progressView1.textColor1、progressView1.textColor2 可以根据需要自己修改。
好了,这样出来的效果就是文章开头的图片效果了。
具体的图层排列给大家看下debug模式下的内容:
大家根据图层排列可以很直接的看到。
重要的地方只有一点,最上层的label2要贴在显示进度的view上,而且要加上这句 label2.layer.masksToBounds = YES; 让其超过父视图的部分不显示。
clipsToBounds:是类View的属性,如果设置为yes,则不显示超出父View的部分
masksToBounds:是类CALayer的属性,如果设置为yes,则不显示超出父View layer的部分
他们是不同的名字,因为UIView和CALayer是不同的,有不同的术语与他们有联系的,但它们在功能上是等价的。如果你拆开clipsToBounds你会看到它只是调用masksToBounds
OK完成了,有什么不对的、更好的地方欢迎交流指正,谢谢 (*^▽^*)
iOS 自定义的一个进度条,根据progress大小关系改变所占比,中间的分隔线是斜线,效果图如下:
可参考源码:
//下面是示例,设置对应的progress(0.0~1.0)
//如果用得地方多,可以考虑自定义一个view封装起来
static UIView *progressView = nil;
- (void)setProgress:(float)progress
{
//最大宽度
CGFloat maxWidth = CGRectGetWidth(self.view.frame);
if (!progressView) {
progressView = [UIView new];
progressView.frame = CGRectMake(0, 0, 0, 2.f);
progressView.backgroundColor = [UIColor greenColor];
[self.view addSubview:progressView];
}
//限大
progress = MIN(progress,1);
//实际宽度
CGFloat realWidth = progress *maxWidth;
[self.view bringSubviewToFront:progressView];
CGRect rect = progressView.frame;
rect.size.width = realWidth;
progressView.frame = rect;
//隐藏、显示
progressView.hidden = progress = 1;
}
如果只加载一个图片应该没有这个需求吧? 加载多个图片的话,你用个计数器,每张加载结束回调时计算一下进度。 进度条可以用ProgressTimer控件每帧update不断的setPercentage. 如果单单长条就简单很多了,直接自己每帧判断下setScale就行了 。
那是正在安装更新,时间5分钟--10分钟不等,此过程大概会重复两次,不用担心,耐心等待它自动完成就会进入系统了
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流