UI UIView进度条,模拟手机充电功能

#import "JRProgres.h"

@implementation JRProgres

{

UIView * _contentView;

}

- (instancetype)initWithFrame:(CGRect)frame{// 重写构造方法一次创建3个视图,分别为最外层的绿框、子1白底、子2红条

self = [super
initWithFrame:frame];

if (self) {

//1.
设置边框为绿色

self.backgroundColor = [UIColor
greenColor];

UIView * bgview = [[UIView
alloc]initWithFrame:CGRectMake(2,
2, frame.size.width-4, frame.size.height-4)];

bgview.backgroundColor = [UIColor
whiteColor];

[self
addSubview:bgview];

// 2.设置内容条(边框子视图)

self.backgroundColor = [UIColor
greenColor];

_contentView = [[UIView
alloc]initWithFrame:CGRectMake(0,
2, 0, bgview.frame.size.height-4)];

_contentView.backgroundColor = [UIColor
redColor];

[bgview
addSubview:_contentView];

}

return 
self;

}

- (void)setProgress:(int)flag{

// 1. get当前的frame

CGRect  newFrame = 
_contentView.frame;

int nowLength = ceil(newFrame.size.width);

int totalLength =
ceil(self.frame.size.width -4);

// 2. 重新给当前的frame设置宽度

if (flag) {

if ( nowLength<totalLength) {

int flag = newFrame.size.width < (self.frame.size.width
-4);// 检测是否超范围

NSLog(@"%g---%g---- %i()(",(newFrame.size.width -
4),self.frame.size.width -
4,flag);//打印结果

newFrame.size.width += (self.frame.size.width
- 4)/10.0;

}else{

NSLog(@"超出界限");

NSLog(@"%.15f---",(newFrame.size.width -
4));

}

}else{

if (nowLength - 1 >
0) {

newFrame.size.width -= (self.frame.size.width
- 4)/10.0;

}

}

// 3.重新给当前的frame设置宽度

_contentView.frame = newFrame;

}

- (void)autoMethod{

CGRect  newFrame = 
_contentView.frame;

int nowLength = ceil(newFrame.size.width);

int totalLength =
ceil(self.frame.size.width -4);

if ( nowLength<totalLength) {

newFrame.size.width += (self.frame.size.width
- 4)/10.0;

_contentView.frame = newFrame;

}       
else {

newFrame.size.width =
0;

_contentView.frame = newFrame;

}

}

#import "AppDelegate.h"

#import "JRProgres.h"

@interface
AppDelegate ()

@end

@implementation AppDelegate

{

JRProgres * _pro;

}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary
*)launchOptions {

self.window = [[UIWindow
alloc]initWithFrame:[UIScreen
mainScreen].bounds];

self.window.backgroundColor
= [UIColor grayColor];

[self.window
makeKeyAndVisible];

_pro = [[JRProgres
alloc]initWithFrame:CGRectMake(0,
150,
250, 25)];

_pro.center =
self.window.center;

[self.window
addSubview:_pro];

UI UIView进度条,模拟手机充电功能UI UIView进度条,模拟手机充电功能UI
UIView进度条,模拟手机充电功能UI UIView进度条,模拟手机充电功能UI UIView进度条,模拟手机充电功能UI
UIView进度条,模拟手机充电功能

UIButton * leftButton = [UIButton
buttonWithType:UIButtonTypeCustom];

leftButton.frame =
CGRectMake(self.window.center.x-70,
200, 50,
45);

[leftButton setTitle:@"前进"
forState:UIControlStateNormal];

leftButton.backgroundColor = [UIColor
blueColor];

[self.window
addSubview:leftButton];

[leftButton addTarget:self
action:@selector(clickRight)
forControlEvents:UIControlEventTouchUpInside];

UI UIView进度条,模拟手机充电功能UI UIView进度条,模拟手机充电功能

UIButton * rightButton = [UIButton
buttonWithType:UIButtonTypeCustom];

rightButton.frame =
CGRectMake(self.window.center.x +
20, 200,
50, 45);

[rightButton
setTitle:@"后退"
forState:UIControlStateNormal];

rightButton.backgroundColor = [UIColor
blueColor];

[self.window
addSubview:rightButton];

[rightButton
addTarget:self
action:@selector(clickLeft)
forControlEvents:UIControlEventTouchUpInside];

UI UIView进度条,模拟手机充电功能UI UIView进度条,模拟手机充电功能UI
UIView进度条,模拟手机充电功能

[NSTimer
scheduledTimerWithTimeInterval:0.5
target:self
selector:@selector(autoMethod)
userInfo:nil
repeats:YES];

return
YES;

}

- (void)clickLeft{

[_pro
setProgress:0];

}

- (void)clickRight{

[_pro
setProgress:1];

}

- (void)autoMethod{

[_pro
autoMethod];

}

UI UIView进度条,模拟手机充电功能UI UIView进度条,模拟手机充电功能UI
UIView进度条,模拟手机充电功能

@end

时间: 2024-10-07 07:25:27

UI UIView进度条,模拟手机充电功能的相关文章

使用AsyncTask后台下载图片并在UI更新进度条和现实图片

UI上的设定就不贴了,下面是fragment相应类的,基本上可以直接用到Activity上去(受权威指南影响,现在强烈喜爱Fragment) 1 public class DownloadFragment extends Fragment { 2 3 Button mFetchButton; 4 ProgressBar mProgressBar; 5 EditText mURLEditText; 6 ImageView mImageView; 7 8 @Override 9 public Vie

11 Jquery UI Progressbar 进度条插件

原文地址:https://www.cnblogs.com/springsnow/p/9461721.html

Asp.Net 无刷新文件上传并显示进度条的实现方法及思路

相信通过Asp.Net的服务器控件上传文件在简单不过了,通过AjaxToolkit控件实现上传进度也不是什么难事,为什么还要自己辛辛苦苦来 实现呢?我并不否认"拿来主义",只是我个人更喜欢凡是求个所以然.本篇将阐述通过Html,IHttpHandler和 IHttpAsyncHandler实现文件上传和上传进度的原理,希望对你有多帮助. 效果图: 本文涉及到的知识点:1.前台用到Html,Ajax,JQuery,JQuery UI 2.后台用到一般处理程序(IHttpHandler)和

9款极具创意的HTML5/CSS3进度条动画(免积分下载)

尊重原创,原文地址:http://www.cnblogs.com/html5tricks/p/3622918.html 免积分打包下载地址:http://download.csdn.net/detail/yangwei19680827/7352505 今天我们要分享9款极具创意的HTML5/CSS3进度条动画,这些进度条也许可以帮你增强用户交互和提高用户体验,喜欢的朋友就收藏了吧. 1.HTML5/CSS3图片加载进度条 可切换多主题 今天要分享的这款HTML5/CSS3进度条模拟了真实的图片加

iOS自定义进度条高度(UIProgressView进度条高度改变的实现)

今天自定义了iOS中的进度条,发现系统的进度条高度无法改变, 现在自己封装了一种进度条(实际是是UIView而不是UIProgressView),可以改变进度条的高度,非常好用,分享给大家,直接上代码: //  CTWBProgress.h //  Created by WBapple on 16/7/31. //  Copyright © 2016年 王彬. All rights reserved. // #import <UIKit/UIKit.h> @interface CTWBProg

视频播放器进度条的制作

0.前言 今天在做进度条的时候,需要一些小困难,毕竟原来的进度条是根据vlc中的事件libvlc_MediaPlayerPositionChanged来让进度条的值+1的 可是要用一个项目中提供的exe,所以在这个项目中只能调用管道进行和exe的通信,这样,使用事件的方式基本被排除了 1.思路 既然不能用事件,那么就直接用定时器了,设定为1000ms来触发一次,进度条+1,只改变UI,可以先试试不加锁 2.实现 在UI中加入一个播放的标识,也就是UI中进度条被触发的时候(没播放的时候,UI中进度

WEB进度条控件

近段时间为了工作的需要学习了一下写自定义控件,呵呵!以前没写过,近段时间才开始研究的,昨天写了一个WEB状态条控件,可以设置进度条的百分比,也可以设置它的总数与当前的数量来自动计算百分比,可以设置颜色显示或图片显示(当没有设置图片的时候就会自动用颜色来显示),状态条的宽度和高度可以自由设定,还是第一次写控件,希望大家多多指教.好了不多说了,还是把代码贴出来供大家参考吧!有不同想法的希望大家能提出来交流一下! 先看看运行效果:             第一步: 新建一个类文件Guage.cs 代码

iOS开发笔记-根据frame大小动态调整fontSize的自适应文本及圆形进度条控件的实现

最近同样是新App,设计稿里出现一种圆形进度条的设计,如下: 想了想,圆形进度条实现起来不难,但是其中显示百分比的文本确需要自适应,虽然可以使用时自己设定文本字体的大小,但是这样显得很麻烦,也很low. 查了一圈,目前实现的自适应UILabel,都是根据font大小动态调整frame的size,并不能满足我们的需求.  那么问题来了 如何实现一种能够根据frame大小自适应调整文本font size的圆形进度条呢? 我的实现思路很简单,首先计算出能够给予UILabel的frame最大尺寸,然后根

从进度条和alert的出现顺序来了解浏览器 UI 渲染 &amp; JS进程

项目里有一个需求是在上传文件的时候需要显示进度条,那么理所当然的在上传完成后就需要提示用户上传完毕并且更新进度条. 之前的预期表现是,上传完毕后,先更新进度条到100%,再alert出提示,所以代码如下. 1 $('progressBar').text('100%'); 2 $('progressBar bar').css('width', '100%'); 3 alert('上传成功'); 问题一:实际表现为先alert出提示,此时被阻塞的页面显示的进度条没有被更新到100%. 分析原因,浏览