`
zhengjj_2009
  • 浏览: 153182 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

自定义UIView简单实现进度条

 
阅读更多

参考网上的资料,自己实现了一个上传进度条的组件

1、ProcessIndicatorView.h

#import <UIKit/UIKit.h>

 

@interface ProcessIndicatorView : UIView

{

    UIActivityIndicatorView *indicator;

    UILabel *textLabel;

}

 

-(void)do_startAnimating;

-(void)do_stopAnimating;

-(void)do_changeProcessInfo:(NSString *)infoText;

@end

 

2、ProcessIndicatorView.m

#import "ProcessIndicatorView.h"

 

@implementation ProcessIndicatorView

 

-(id)initWithFrame:(CGRect)frame{

    self = [super initWithFrame:frame];

    if (self) {

        float width = frame.size.width;

        float height = frame.size.height;

        indicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0, 0, width, height)];

        //设置显示样式,见UIActivityIndicatorViewStyle的定义

        indicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;

        //indicator.center = CGPointMake(self.view.frame.size.width/2, self.view.frame.size.height/2);//设置显示位置

        indicator.backgroundColor = [UIColor grayColor];

        //设置背景透明

        indicator.alpha = 0.5;

        indicator.layer.cornerRadius = 5;

        indicator.layer.masksToBounds = YES;

        //将初始化好的indicator add到view中

        [self addSubview:indicator];

        

        textLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, height-30, width, 30)];

        [self addSubview:textLabel];

        textLabel.textColor = [UIColor grayColor];

        textLabel.textAlignment = NSTextAlignmentCenter;

        textLabel.font = [UIFont systemFontOfSize:15];

    }

    return self;

}

 

-(void)do_startAnimating{

    self.hidden = NO;

    [indicator startAnimating];

    textLabel.text = @"";

}

-(void)do_stopAnimating{

    [indicator stopAnimating];

    textLabel.text = @"";

    self.hidden = YES;

}

-(void)do_changeProcessInfo:(NSString *)infoText{

    textLabel.text = infoText;

}

/*

// Only override drawRect: if you perform custom drawing.

// An empty implementation adversely affects performance during animation.

- (void)drawRect:(CGRect)rect {

    // Drawing code

}

*/

 

 

@end

 

3、如何使用

      3.1 初始化组件

    float pos_x = (self.view.frame.size.width-100)/2.0;

    float pos_y = (self.view.frame.size.height-100)/2.0;

    processView = [[ProcessIndicatorView alloc] initWithFrame:CGRectMake(pos_x, pos_y, 100, 100)];

 

    [self.view addSubview:processView];

 

      3.2 调用方法

      [processView do_startAnimating];

     .........

     [self saveImage:image withName:file_name];

     NSLog(@"do_saveImageAndUploadJob is done... 照片的文件名 >>>> file_name =%@ ",file_name);

     [processView do_stopAnimating];

 

    3.3 配合ASIFormDataRequest

    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL: [NSURL URLWithString: url]];

    .........

    [request setUploadProgressDelegate:self];

    request.showAccurateProgress=YES;

   

    3.4 实现对应的代理方法

    //显示最新的上传发送进度

-(void)setProgress:(float)newProgress{

    NSString *progressText = [NSString stringWithFormat:@"%0.f%%",newProgress*100];

    [processView do_changeProcessInfo:progressText];

}

 

//-(void)request:(ASIHTTPRequest *)request didSendBytes:(long long)bytes{

//    NSLog(@">>>> didSendBytes: %lld", bytes);

//}

//-(void)request:(ASIHTTPRequest *)request incrementUploadSizeBy:(long long)newLength{

//    NSLog(@"incrementUploadSizeBy:%lld",newLength);

//}

/* 二者区别在于第2个参数的不同,前者的bytes参数是每次发送的字节数(不累加),后者的newLength参数是每次发送时已发送的字节书(累加)。 需要注意的是这个参数很大,为longlong类型,转换为字符串时可以用%lld格式化字符串: */

分享到:
评论

相关推荐

    swift-轻量级组件能够让所有UIView都支持进度条展示

    总之,Swift中利用轻量级组件让所有UIView支持进度条展示是一种高效的设计策略,它通过协议和分类实现了功能扩展,降低了代码复杂度,提升了开发效率。结合具体的进度条视图设计,我们可以构建出各种各样的进度反馈...

    iPhone之实现自定义进度条Progress

    "iPhone之实现自定义进度条Progress"这个主题将引导我们探讨如何在iPhone应用中利用Swift编程语言来设计并实现一个个性化的进度条组件。我们将深入讨论以下几个关键知识点: 1. **UIProgressView**: iOS SDK提供了...

    ios-简单自定义圆形颜色渐变进度条.zip

    本项目“ios-简单自定义圆形颜色渐变进度条”正是关注于这一方面,旨在创建一个具有颜色渐变效果的圆形进度条。通过这个项目,我们可以学习到如何在iOS应用中实现自定义视图和动画。 首先,我们需要理解`...

    ios-自定义进度条Swift实现.zip

    "ios-自定义进度条Swift实现.zip"这个压缩包提供了一个使用Swift编程语言实现自定义进度条的示例。在这个项目中,开发者创建了一个不同于系统默认UIProgressView的自定义组件,以满足更个性化的界面需求。 首先,...

    ios 自定义进度条

    在iOS开发中,自定义进度条是...无论选择`UIView`还是`CAShapeLayer`,都可以通过灵活的编程实现丰富的自定义功能,让进度条成为应用界面的一大亮点。在实际开发中,应根据项目需求和性能考虑,选择最合适的实现方式。

    ios 自定义下载进度条

    自定义进度条的动态效果可以通过Core Animation实现。利用`UIView`的`animateWithDuration:animations:`方法,我们可以平滑地更新进度条的进度值,从而实现下载进度的动态显示。 5. **KVO(Key-Value Observing)*...

    iOS开发,自定义进度条

    9. **代码示例**:以下是一个简单的自定义进度条类的代码框架: ```swift import UIKit class CustomProgressView: UIView { var progress: Float = 0.0 { didSet { setNeedsDisplay() } } override func ...

    iOS 自定义控件 progressView(环形进度条)

    自定义控件是通过继承现有的UIControl或UIView类,并在其基础上添加自己的属性和方法来实现的。在这个案例中,我们可能会继承UIView,因为UIView可以提供基本的绘图功能,满足我们创建环形进度条的需求。 2. **...

    IOS中实现环形进度条

    1. 自定义UIView:为了实现环形进度条,我们需要创建一个继承自UIView的类,并在其中重写drawRect:方法,以便进行自定义绘图。在drawRect:方法中,我们可以利用Core Graphics框架提供的API进行图形绘制。 2. Core ...

    自定义多样式渐变环形进度条

    在iOS中,可以创建一个自定义UIView子类,利用Swift的protocol和extension实现可配置性。 5. **用户交互**:自定义环形进度条可能需要响应用户的触摸事件,例如点击进度条开始或暂停加载。在Android中,可以重写...

    实现自定义具有动态背景进度条

    本文将深入探讨如何实现一个自定义的动态背景进度条,基于标题“实现自定义具有动态背景进度条”以及描述中提到的源码实现。这个自定义进度条不仅能够显示进度百分比,还能为进度条添加动态背景效果,使得视觉表现更...

    swift-替换UIProgressView使用纯CoreGraphics实现高度可完全自定义的动画进度条

    为了实现更复杂、高度可定制的进度条,开发者经常选择使用Core Graphics框架来创建自定义视图。本教程将详细介绍如何使用Swift和Core Graphics来构建一个名为YLProgressBar的高度可定制的动画进度条。 首先,`Core ...

    iOS自定义方格进度条

    本教程将详细讲解如何实现一款自定义的方格进度条,包括圆角方格、圆形以及反向显示的进度条。 首先,我们需要了解iOS中的`UISlider`类,它是系统提供的默认进度条控件。然而,为了满足特定的设计需求,我们往往...

    自定义环形进度条 显示百分比

    本教程将深入探讨如何实现一个自定义的环形进度条,并展示百分比。 ### 1. 环形进度条的基本概念 环形进度条是一种图形化的进度指示器,通常由一个闭合的圆形路径组成,其中一部分被填充以表示已完成的部分,剩余...

    精典源码之游戏菜单进度条.zip

    - **iOS自定义UIView**:在iOS中,可以使用CALayer或自定义UIView来绘制进度条。 5. **进度条实现**: - **动画效果**:通过帧动画或时间线控制进度条的填充速度,实现平滑过渡。 - **数据绑定**:进度条的值...

    swift-根据UIBezierPath和CAShapeLayer自定义倒计时进度条

    本篇将详细讲解如何使用`UIBezierPath`和`CAShapeLayer`在Swift中自定义一款倒计时进度条,该进度条适用于启动页面的倒计时功能,可以灵活定制颜色、宽度以及响应点击事件。 首先,`UIBezierPath`是`UIKit`框架中的...

    自定义进度条

    本教程将深入探讨如何实现一个自定义的进度条,使其更加美观且个性化。 首先,我们要理解“UIProgress”这个标签。在iOS中,`UIProgressView` 是苹果提供的一个系统组件,用于显示线性进度条。而在Android中,对应...

    自定义一些特殊形状的进度条

    1. 自定义UIView子类: 创建一个新的Swift或Objective-C文件,继承自UIView。在这个子类中,我们需要重写draw(_ rect: CGRect)方法,这是自定义绘图的核心。在这里,我们可以利用Core Graphics框架,通过CGContext...

    35-自定义进度条.zip

    2. **自定义视图绘制**:如果要完全自定义进度条的外观,可能需要继承UIView并覆盖`draw(_ rect: CGRect)`方法,利用Core Graphics框架进行绘图。你可以绘制背景轨道、进度条以及可能的指示器等元素。 3. **动画...

    ios-简单的进度条.zip

    在iOS开发中,我们通常会利用UIKit框架中的UIProgressView,但这次我们将通过自定义UIView来实现这一功能,以便更好地理解自定义视图的工作原理。 首先,我们需要创建一个新的UIView子类。在Swift中,我们可以创建...

Global site tag (gtag.js) - Google Analytics