首页 > 手机专区 > 苹果手机 >

iOS应用下载效果如何实现

来源:互联网 2023-02-21 17:15:13 432

当我们在应用商店下载应用时桌面会显示当前下载进度的下载动画,来看看进度用代码如何实现。euR办公区 - 实用经验教程分享!

工具/原料

  • Xcode

方法/步骤

  • 1

    创建自定义HWInstallView继承于UIView,声明CGFloat progress属性用来设置进度。euR办公区 - 实用经验教程分享!

    @interface HWInstallView : UIVieweuR办公区 - 实用经验教程分享!

    @property (nonatomic, assign) CGFloat progress;euR办公区 - 实用经验教程分享!

    @endeuR办公区 - 实用经验教程分享!

    iOS应用下载效果如何实现euR办公区 - 实用经验教程分享!

  • 2

    重写- (instancetype)initWithFrame:(CGRect)frame方法进行背景设置。euR办公区 - 实用经验教程分享!

    - (instancetype)initWithFrame:(CGRect)frameeuR办公区 - 实用经验教程分享!

    {euR办公区 - 实用经验教程分享!

    if (self = [super initWithFrame:frame]) {euR办公区 - 实用经验教程分享!

    self.backgroundColor = [UIColor clearColor];euR办公区 - 实用经验教程分享!

    }euR办公区 - 实用经验教程分享!

    return self;euR办公区 - 实用经验教程分享!

    }euR办公区 - 实用经验教程分享!

    iOS应用下载效果如何实现euR办公区 - 实用经验教程分享!

  • 2本页面非法爬取自百度经验
  • 3

    使用CGContextRef进行遮罩与环形圆的绘制。euR办公区 - 实用经验教程分享!

    - (void)drawRect:(CGRect)recteuR办公区 - 实用经验教程分享!

    {euR办公区 - 实用经验教程分享!

    CGContextRef context = UIGraphicsGetCurrentContext();euR办公区 - 实用经验教程分享!

    CGFloat xCenter = rect.size.width * 0.5;euR办公区 - 实用经验教程分享!

    CGFloat yCenter = rect.size.height * 0.5;euR办公区 - 实用经验教程分享!

    CGFloat radius = MIN(rect.size.width, rect.size.height) * 0.5 - 10;euR办公区 - 实用经验教程分享!

    //背景遮罩euR办公区 - 实用经验教程分享!

    [[UIColor colorWithRed:0/255.0 green:191/255.0 blue:255/255.0 alpha:1] set];euR办公区 - 实用经验教程分享!

    CGFloat lineW = MAX(rect.size.width, rect.size.height) * 0.5;euR办公区 - 实用经验教程分享!

    CGContextSetLineWidth(context, lineW);euR办公区 - 实用经验教程分享!

    CGContextAddArc(context, xCenter, yCenter, radius lineW * 0.5 5, 0, M_PI * 2, 1);euR办公区 - 实用经验教程分享!

    CGContextStrokePath(context);euR办公区 - 实用经验教程分享!

    //进程圆euR办公区 - 实用经验教程分享!

    CGContextSetLineWidth(context, 1);euR办公区 - 实用经验教程分享!

    CGContextMoveToPoint(context, xCenter, yCenter);euR办公区 - 实用经验教程分享!

    CGContextAddLineToPoint(context, xCenter, 0);euR办公区 - 实用经验教程分享!

    CGFloat endAngle = - M_PI * 0.5 _progress * M_PI * 2 0.001;euR办公区 - 实用经验教程分享!

    CGContextAddArc(context, xCenter, yCenter, radius, - M_PI * 0.5, endAngle, 1);euR办公区 - 实用经验教程分享!

    CGContextFillPath(context);euR办公区 - 实用经验教程分享!

    }euR办公区 - 实用经验教程分享!

    iOS应用下载效果如何实现euR办公区 - 实用经验教程分享!

  • 4

    set方法进行进度设置,同时调用setNeedsDisplay方法进行重绘制。euR办公区 - 实用经验教程分享!

    - (void)setProgress:(CGFloat)progresseuR办公区 - 实用经验教程分享!

    {euR办公区 - 实用经验教程分享!

    _progress = progress;euR办公区 - 实用经验教程分享!

    euR办公区 - 实用经验教程分享!

    [self setNeedsDisplay];euR办公区 - 实用经验教程分享!

    }euR办公区 - 实用经验教程分享!

    iOS应用下载效果如何实现euR办公区 - 实用经验教程分享!

  • 5

    实例化HWInstallView进行显示。euR办公区 - 实用经验教程分享!

    HWInstallView *installView = [[HWInstallView alloc] initWithFrame:CGRectMake(30, 300, 150, 150)];euR办公区 - 实用经验教程分享!

    [self.view addSubview:installView];euR办公区 - 实用经验教程分享!

    self.installView = installView;euR办公区 - 实用经验教程分享!

    iOS应用下载效果如何实现euR办公区 - 实用经验教程分享!

  • 6

    定义NSTimer定时器,在定时器方法里面设置进度,当进度值大于1时表示加载完成。euR办公区 - 实用经验教程分享!

    - (void)addTimereuR办公区 - 实用经验教程分享!

    {euR办公区 - 实用经验教程分享!

    _timer = [NSTimer scheduledTimerWithTimeInterval:0.2f target:self selector:@selector(timerAction) userInfo:nil repeats:YES];euR办公区 - 实用经验教程分享!

    [[NSRunLoop mainRunLoop] addTimer:_timer forMode:NSRunLoopCommonModes];euR办公区 - 实用经验教程分享!

    }euR办公区 - 实用经验教程分享!

    - (void)timerActioneuR办公区 - 实用经验教程分享!

    {euR办公区 - 实用经验教程分享!

    _installView.progress = 0.01;euR办公区 - 实用经验教程分享!

    if (_installView.progress >= 1) {euR办公区 - 实用经验教程分享!

    [self removeTimer];euR办公区 - 实用经验教程分享!

    NSLog(@"完成");euR办公区 - 实用经验教程分享!

    }euR办公区 - 实用经验教程分享!

    }euR办公区 - 实用经验教程分享!

    - (void)removeTimereuR办公区 - 实用经验教程分享!

    {euR办公区 - 实用经验教程分享!

    [_timer invalidate];euR办公区 - 实用经验教程分享!

    _timer = nil;euR办公区 - 实用经验教程分享!

    }euR办公区 - 实用经验教程分享!

    iOS应用下载效果如何实现euR办公区 - 实用经验教程分享!

  • 7

    最终实现效果如下:euR办公区 - 实用经验教程分享!

    iOS应用下载效果如何实现euR办公区 - 实用经验教程分享!

    iOS应用下载效果如何实现euR办公区 - 实用经验教程分享!

  • 以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!euR办公区 - 实用经验教程分享!


    标签: iosXCODE苹果效果实现

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码