久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2587|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

iOS開發(fā)之使用CALayer封裝下載進(jìn)度條

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:85764 發(fā)表于 2015-7-18 00:34 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
效果圖


代碼
//
//  XRProgressView.h
//  使用CALayer封裝下載進(jìn)度條
//
//  Created by 寒竹子 on 15/6/14.
//  Copyright (c) 2015年 寒竹子. All rights reserved.
//

/**
*  下載進(jìn)度條封裝
*/

#import <UIKit/UIKit.h>

@interface XRProgressView : UIView

@property (nonatomic, assign) CGFloat progress;
@property (nonatomic, strong) UIColor * progressColor;

@end

//
//  XRProgressView.m
//  使用CALayer封裝下載進(jìn)度條
//
//  Created by 寒竹子 on 15/6/14.
//  Copyright (c) 2015年 寒竹子. All rights reserved.
//

#import "XRProgressView.h"

@interface XRProgressView ()

@property (nonatomic, strong) CALayer * progressLayer; // 進(jìn)度layer
@property (nonatomic, assign) CGFloat currentWidth;    // 當(dāng)前l(fā)ayer的width

@end

@implementation XRProgressView

- (instancetype)initWithFrame:(CGRect)frame
{
    if (self = [super initWithFrame:frame]) {
        self.layer.backgroundColor = [UIColor clearColor].CGColor;
        self.layer.borderWidth = .5f;

        // 創(chuàng)建layer
        _progressLayer = [CALayer layer];
        _progressLayer.frame = CGRectMake(0, 0, 0, self.frame.size.height);

        // 將progressLayer添加到當(dāng)前View的layer中
        [self.layer addSublayer:_progressLayer];

        // 保存width
        _currentWidth = self.frame.size.width;
    }

    return self;
}

#pragma mark - getters and setters

@synthesize progress = _progress;
// 設(shè)置進(jìn)度
- (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;

// 設(shè)置layer背景顏色
- (void)setProgressColor:(UIColor *)progressColor
{
    _progressColor = progressColor;
    self.progressLayer.backgroundColor = _progressColor.CGColor;
}

- (UIColor *)progressColor
{
    return _progressColor;
}

@end


//
//  ViewController.m
//  使用CALayer封裝下載進(jìn)度條
//
//  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; // 下載進(jìn)度

@end

@implementation ViewController

- (instancetype)init
{
    if (self = [super init]) {
        _progress = 0.0f;
    }

    return self;
}

// 起定時(shí)器
- (void)startTimer
{
    _timer = [NSTimer scheduledTimerWithTimeInterval:.1f
                                              target:self
                                            selector:@selector(updateProgress)
                                            userInfo:nil
                                             repeats:YES];
    [[NSRunLoop currentRunLoop] addTimer:_timer forMode:NSRunLoopCommonModes];
}

// 模擬更新下載進(jìn)度
- (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];

    // 開啟定時(shí)器
    [self startTimer];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}

@end




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91精品国产乱码久久久久久久久 | 综合久久综合久久 | 亚洲色图在线观看 | 久久国产精品免费一区二区三区 | 天天影视网天天综合色在线播放 | 日韩精品在线观看视频 | 欧美日韩在线一区二区三区 | 亚洲欧美综合精品另类天天更新 | 免费成年网站 | 亚洲精品在线免费观看视频 | 日韩中文一区二区 | 日本天天操 | 亚洲国产精品久久人人爱 | 亚洲国产一区视频 | 亚洲天堂中文字幕 | 亚洲一区二区三区免费在线 | 我爱操| 久草免费视 | 亚洲精品一区二区三区在线 | 视频一区二区中文字幕 | 欧美在线观看免费观看视频 | 精品日韩一区二区 | 国产成人高清视频 | 激情一区二区三区 | 爱爱视频网| 最新午夜综合福利视频 | 色av一区 | 亚洲欧美日韩一区二区 | 中文字幕一区二区三 | 欧美精品一区二区三区在线播放 | 在线播放国产一区二区三区 | 亚洲精品日本 | 国产精品久久久久久久久久免费看 | 一区二区在线不卡 | 中文字幕在线网 | 欧美一区二区三区视频 | 91文字幕巨乱亚洲香蕉 | 亚洲电影第三页 | 久久久久久国产一区二区三区 | 欧美精品中文字幕久久二区 | 日日爱视频 |