用CALayer实现下载进度条
用CALayer实现下载进度条
效果:
源码:
//
// ViewController.m
// ProgressView
//
// Created by YouXianMing on 14/11/18.
// Copyright (c) 2014年 YouXianMing. All rights reserved.
//#import "ViewController.h"@interface ViewController ()@property (nonatomic, strong) NSTimer *timer;
@property (nonatomic, strong) CALayer *layer;@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];self.view.backgroundColor = [UIColor blackColor];// CALayer_layer = [CALayer layer];_layer.frame = CGRectMake(50, 50, 200, 2);_layer.backgroundColor = [UIColor redColor].CGColor;[self.view.layer addSublayer:_layer];// 定时器_timer = [NSTimer scheduledTimerWithTimeInterval:1.ftarget:selfselector:@selector(timerEvent)userInfo:nilrepeats:YES];
}/*** 定时器*/
- (void)timerEvent {// 显式动画_layer.frame = CGRectMake(50, 50, arc4random()%200, 2);
}@end
封装后的源码:
//
// ProgressView.h
// ProgressView
//
// Created by YouXianMing on 14/11/18.
// Copyright (c) 2014年 YouXianMing. All rights reserved.
//#import <UIKit/UIKit.h>@interface ProgressView : UIView@property (nonatomic, strong) UIColor *progressColor;
@property (nonatomic, assign) CGFloat progress;@end
//
// ProgressView.m
// ProgressView
//
// Created by YouXianMing on 14/11/18.
// Copyright (c) 2014年 YouXianMing. All rights reserved.
//#import "ProgressView.h"@interface ProgressView (){CALayer *_backLayer;CGFloat _frameWidth;CGFloat _layerWidth;
}@end@implementation ProgressView- (instancetype)initWithFrame:(CGRect)frame
{self = [super initWithFrame:frame];if (self) {_backLayer = [CALayer layer];_frameWidth = self.bounds.size.width;_layerWidth = 0;_backLayer.frame = CGRectMake(0, 0, _layerWidth, frame.size.height);[self.layer addSublayer:_backLayer];}return self;
}@synthesize progressColor = _progressColor;
- (void)setProgressColor:(UIColor *)progressColor {_progressColor = progressColor;_backLayer.backgroundColor = _progressColor.CGColor;
}
- (UIColor *)progressColor {return _progressColor;
}@synthesize progress = _progress;
- (void)setProgress:(CGFloat)progress {_progress = progress;CGRect rect = _backLayer.frame;if (_progress <= 0) {rect.size.width = 0;} else if (_progress >= 1) {rect.size.width = _frameWidth;} else {rect.size.width = _progress * _frameWidth;}_backLayer.frame = rect;
}
- (CGFloat)progress {return _progress;
}@end
用CALayer实现下载进度条相关推荐
- python实现http下载文件-Python HTTP下载文件并显示下载进度条功能的实现
下面的Python脚本中利用request下载文件并写入到文件系统,利用progressbar模块显示下载进度条. 其中利用request模块下载文件可以直接下载,不需要使用open方法,例如: im ...
- Python 技术篇-在cmd命令提示行里模拟动态下载进度条实例演示,cmd清除日志、打印动态内容方法
模拟进度条的核心就是用 os.system('cls') 不断的来清除屏幕之前的数据,再打印出新的,给人一种动态的感觉. # -*- coding: UTF8 -*- import os import ...
- python迅雷下载进度_python 之实现断点下载与下载进度条
一.效果图 二.进度条代码 __author__ = 'Yang' import os import time from threading import Thread '''下载进度条''' cla ...
- 仿苹果AppStore 环形下载进度条
以前项目自己写的 ,一个模仿苹果AppStore 下载进度条的winfrom用户控件,GDI绘制.效果如图 1 using System.Drawing; 2 using System.Windows ...
- progressblock 安卓自定义进度条 progressbar 高仿仿QQ下载进度条
progressblock 安卓自定义进度条 progressbar 高仿仿QQ下载进度条 附上我在公司做下载播放项目 主要使用方法 progressBlock = (ProgressBlock) f ...
- C# 设置下载进度条
C# 模拟下载进度条: 提示: 设置:开始值 设置:结束值 全部代码: using System; using System.Collections.Generic; using System.Com ...
- python小功能 模拟下载进度条打印
python小功能 模拟下载进度条打印 #!/usr/bin/env python3 # -*- coding:utf-8 -*-import timedef progress(arg):if arg ...
- Android中下载进度条格式,Android开发如何实现文件下载进度条
释放双眼,带上耳机,听听看~! 今天和小编狗在这里学习下载进度的实现吧,这段代码是网上找的,自己做了些小改,通过模拟器测试.文件下载进度条控制(就是为了高清壁纸加个进度条),自己研究了好久,但是进度条 ...
- js如何让高度和宽度保持一致_如何实现一个下载进度条/播放进度条
技术上没太大难度,有难度的地方是怎么让整个动画比较流畅.一个主要问题是动画的滞后性:当下载进度到某个点的时候,你再用250ms的动画过渡过去,这个时候已经慢了,所以很多人可能因为这个原因或者嫌麻烦,直 ...
- WinForm中 事件 委托 多线程的应用【以一个下载进度条为例】
第一步:首先我们创建一个winfor的项目 第二步:我们建一个窗体 在一个窗体里面 打开一个另外的窗体 另外的窗体有一个按钮 点击后就开始下载 下载完成后 在注册窗体上面 显示下载完成(达到在一个窗体 ...
最新文章
- 详解 CQRS 架构模式
- 【求助】哪个软件负责在屏幕右下角显示类似“caps lock on/off”的? - 技术封存区 - 专门网论坛 -...
- 八、爬虫解析利器 PyQuery 的使用
- 创建数据库python: can‘t open file ‘manage.py‘: [Errno 2] No such file or directory报错
- ES10新特性_字符串扩展方法_trimStart--trimEnd---JavaScript_ECMAScript_ES6-ES11新特性工作笔记058
- Facebook 又搞事,违反竞业协议被起诉,PyTorch 关键技术疑侵权
- 强悍的命令行 —— basename 去掉路径和扩展名 dirname 获取路径
- 温故而知新:new与override的差异以及virtual方法与abstract方法的区别
- 新手教学--(常用的存储过程)
- 区块链、ICO,养肥的是开发者和一群黑客
- 关于iOS实现前台,后台,锁屏或关闭app语音播报
- html节点分析,解析html程序(C#版)——遍历各个节点(mshtml)
- crm客户管理软件的精髓
- FAT文件系统介绍以及FatFs的移植
- 计算机搜索功能在分区里失灵,DiskGenius搜索已丢失分区(重建分区表)
- DMA驱动框架流程编写
- Django+bootstrap启动登录模板页面(Django第三篇)
- vue跳转新页面链接以及url 转码
- 自动化功能测试-Athrun—IOS学习之旅文档
- Windows服务器如何防止黑客入侵的安全设置
热门文章
- 数字证书的基础知识(转)
- 【快学springboot】使用springboot发送邮件
- 推荐一个ajax控件项目 ajax data control
- PHP编程中如何做到有效配置Apache
- 零元学Expression Blend 4 - Chapter 28 ListBox的基本运用与更改预设样式
- 2017-3-2 数据库索引/数据类型/引擎
- python 使用多线程进行压力测试
- LeetCode_125_Python_验证回文串
- java 容器(联系数据结构)
- String.format(“0:D2}“,a)字符串格式化