標題: iOS開發之使用CALayer封裝下載進度條 [打印本頁]
作者: niujia 時間: 2015-7-18 00:34
標題: iOS開發之使用CALayer封裝下載進度條
效果圖

代碼
//
// XRProgressView.h
// 使用CALayer封裝下載進度條
//
// Created by 寒竹子 on 15/6/14.
// Copyright (c) 2015年 寒竹子. All rights reserved.
//
/**
* 下載進度條封裝
*/
#import <UIKit/UIKit.h>
@interface XRProgressView : UIView
@property (nonatomic, assign) CGFloat progress;
@property (nonatomic, strong) UIColor * progressColor;
@end
//
// XRProgressView.m
// 使用CALayer封裝下載進度條
//
// Created by 寒竹子 on 15/6/14.
// Copyright (c) 2015年 寒竹子. All rights reserved.
//
#import "XRProgressView.h"
@interface XRProgressView ()
@property (nonatomic, strong) CALayer * progressLayer; // 進度layer
@property (nonatomic, assign) CGFloat currentWidth; // 當前layer的width
@end
@implementation XRProgressView
- (instancetype)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame]) {
self.layer.backgroundColor = [UIColor clearColor].CGColor;
self.layer.borderWidth = .5f;
// 創建layer
_progressLayer = [CALayer layer];
_progressLayer.frame = CGRectMake(0, 0, 0, self.frame.size.height);
// 將progressLayer添加到當前View的layer中
[self.layer addSublayer:_progressLayer];
// 保存width
_currentWidth = self.frame.size.width;
}
return self;
}
#pragma mark - getters and setters
@synthesize progress = _progress;
// 設置進度
- (void)setProgress:(CGFloat)progress
{
_progress = progress;
if (_progress < 0.0f) {
self.progressLayer.frame = CGRectMake(0, 0, 0, self.frame.size.height);
}else if (_progress <= 1.0f) {
self.progressLayer.frame = CGRectMake(0, 0, _progress * self.currentWidth, self.frame.size.height);
}else {
self.progressLayer.frame = CGRectMake(0, 0, self.currentWidth, self.frame.size.height);
}
}
- (CGFloat)progress
{
return _progress;
}
@synthesize progressColor = _progressColor;
// 設置layer背景顏色
- (void)setProgressColor:(UIColor *)progressColor
{
_progressColor = progressColor;
self.progressLayer.backgroundColor = _progressColor.CGColor;
}
- (UIColor *)progressColor
{
return _progressColor;
}
@end
//
// ViewController.m
// 使用CALayer封裝下載進度條
//
// Created by 寒竹子 on 15/6/14.
// Copyright (c) 2015年 寒竹子. All rights reserved.
//
#define KBorder 20.0f
#import "ViewController.h"
#import "XRProgressView.h"
@interface ViewController ()
@property (nonatomic, strong) XRProgressView * progressView;
@property (nonatomic, strong) NSTimer * timer;
@property (nonatomic, assign) CGFloat progress; // 下載進度
@end
@implementation ViewController
- (instancetype)init
{
if (self = [super init]) {
_progress = 0.0f;
}
return self;
}
// 起定時器
- (void)startTimer
{
_timer = [NSTimer scheduledTimerWithTimeInterval:.1f
target:self
selector:@selector(updateProgress)
userInfo:nil
repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:_timer forMode:NSRunLoopCommonModes];
}
// 模擬更新下載進度
- (void)updateProgress
{
if (_progress > 1.0f) {
_progress = 0.0f;
}else {
_progress += .01f;
}
self.progressView.progress = _progress;
}
- (void)viewDidLoad {
[super viewDidLoad];
self.progressView = [[XRProgressView alloc] initWithFrame:CGRectMake(KBorder, KBorder * 2.0f, self.view.frame.size.width - KBorder * 2.0f, 4.0f)];
self.progressView.layer.masksToBounds = YES;
self.progressView.layer.cornerRadius = self.progressView.frame.size.height / 2.0f;
self.progressView.progressColor = [UIColor redColor];
[self.view addSubview:self.progressView];
// 開啟定時器
[self startTimer];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
@end
歡迎光臨 (http://m.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
久久99热这里只频精品6学生
|
日韩精品在线看
|
日韩中文在线视频
|
欧美69视频
|
三级在线观看视频
|
亚洲一级片
|
亚洲视频在线视频
|
中国a一片一级一片
|
欧美中文字幕在线
|
婷婷久久五月天
|
日韩av手机在线观看
|
国产色网站
|
超碰免费97
|
性色在线
|
亚洲国产毛片
|
日韩黄色大片
|
99这里只有精品视频
|
久艹在线观看
|
99视频在线精品免费观看2
|
日韩免费一区二区三区
|
亚洲经典一区二区
|
久草视频免费看
|
亚洲91av
|
精品国产成人
|
色综合久久88
|
日韩三级一区二区
|
亚洲做受高潮无遮挡
|
国产日韩在线视频
|
艳妇诱春(第5部分)(h)
|
国产在线日韩
|
国产成人在线免费观看
|
综合久久综合
|
欧美高清视频在线观看mv
|
国产1级片
|
国产区在线观看
|
一本到
|
国产精品99久久久久久久久久久久
|
伊人网在线播放
|
日本免费在线观看视频
|
av黄色在线观看
|
亚洲狠狠干
|