zoukankan      html  css  js  c++  java
  • 【源码】iOS自定义进度条高度(UIProgressView进度条高度改变的实现)

    今天自定义了iOS中的进度条,发现系统的进度条高度无法改变,

    现在自己封装了一种进度条(实际是是UIView而不是UIProgressView),可以改变进度条的高度,非常好用,分享给大家,直接上代码:

    //  CTWBProgress.h

    //  Created by WBapple on 16/7/31.

    //  Copyright © 2016年 王彬. All rights reserved.

    //

    #import <UIKit/UIKit.h>

    @interface CTWBProgress : UIView

    // 进度条背景图片

    @property (retain, nonatomic) UIImageView *trackView;

    // 进图条填充图片

    @property (retain, nonatomic) UIImageView *progressView;

    //进度

    @property (nonatomic) CGFloat targetProgress;

    //设置进度条的值

    - (void)setProgress:(CGFloat)progress;

    @end

    //  CTWBProgresss.m

    //  Created by WBapple on 16/7/31.

    //  Copyright © 2016年 王彬. All rights reserved.

    #import "CTWBProgress.h"

    @implementation CTWBProgress

    //初始化进度条(此处设置进度条背景图片和进图条填充图片)

    - (id)initWithFrame:(CGRect)frame

    {

        self = [super initWithFrame:frame];

        if (self)

        {

            self.backgroundColor = [UIColor clearColor];

            // 背景图像

            _trackView =

            [[UIImageView alloc] initWithFrame:CGRectMake (0, 0, frame.size.width, frame.size.height)];

            [_trackView setImage:[UIImage imageNamed:@"1.png"]];

            //当前view的主要作用是将出界了的_progressView剪切掉,所以需将clipsToBounds设置为YES

            _trackView.clipsToBounds = YES;

            [self addSubview:_trackView];

            // 填充图像

            _progressView = [[UIImageView alloc]

            initWithFrame:CGRectMake (0 - frame.size.width, 0, frame.size.width, frame.size.height)];

            [_progressView setImage:[UIImage imageNamed:@"2.png"]];

            [_trackView addSubview:_progressView];

        }

        return self;

    }

    //设置进度条的值

    - (void)setProgress:(CGFloat)progress

    {

        _targetProgress = progress;

        [self changeProgressViewFrame];

    }

    //修改显示内容

    - (void)changeProgressViewFrame

    {

        _progressView.frame = CGRectMake (self.frame.size.width * _targetProgress - self.frame.size.width,

                                          0, self.frame.size.width, self.frame.size.height);

    }

    @end

    使用进度条方法

    #import "CTWBProgress.h"

     CTWBProgress* progressView;

      float progressVlaue;

       // 给进度条一个frame,给进度条设置值即可

         progressView = [[CTWBProgress alloc] initWithFrame:CGRectMake(FITWIDTH(108), FITHEIGHT(960), FITWIDTH(864), FITHEIGHT(80))];

       [progressView setProgress:progressVlaue];

        [self.view addSubview:progressView];

  • 相关阅读:
    BZOJ3884 上帝与集合的正确用法 【欧拉定理】
    BZOJ4872 [六省联考2017]分手是祝愿 【期望dp】
    BZOJ4650 [NOI2016]优秀的拆分 【后缀数组】
    BZOJ1562 [NOI2009]变换序列 【KM算法】
    BZOJ2657 [Zjoi2012]旅游(journey) 【树的直径】
    BZOJ3999 [TJOI2015]旅游 【树剖 + 线段树】
    BZOJ3997 [TJOI2015]组合数学 【Dilworth定理】
    BZOJ4823 [Cqoi2017]老C的方块 【最小割】
    坐标系统
    利用键盘左右键使图像左右移动,上下键使图像的两个纹理可见度比例上下调整
  • 原文地址:https://www.cnblogs.com/wangbinios/p/5722253.html
Copyright © 2011-2022 走看看