IOS中一般会用到几种方式自定义UIView

1、继承之UIView的存代码的自定义View

2、使用xib和代码一起使用的自定义View

3、存xib的自定义View(不需要业务处理的那种)

本文主要就介绍下存代码的自定义UIView和能够在storeboard中实时显示效果的自定义UIView

先上效果图

上面为设计界面,能够直接显示一个View的圆角与边框线

上面那个圆形饼图是用纯代码自定义的

1.实现在storeboard中实时显示效果的自定义UIView

1、创建MyView.h 继承 UIView

#import <UIKit/UIKit.h>

// 设置类为可视化设计
IB_DESIGNABLE
@interface MyView : UIView // IBInspectable 为可视化设计属性 // 边框宽度
@property (nonatomic,assign)IBInspectable float borderWidth; // 边框颜色
@property (nonatomic,retain)IBInspectable UIColor* borderColor; // 圆角
@property (nonatomic,assign)IBInspectable float cornerRadius; @end

这里要注意的就是上面的两个关键标签

IB_DESIGNABLE :代表的是这个类可以在storeboard中显示实时的效果

IBInspectable :代表把这个属性能在storeboard中修改

2、MyView.m的实现

//
// MyView.m
// 01_CirProgress
//
// Created by xgao on 15/10/29.
// Copyright (c) 2015年 xgao. All rights reserved.
// #import "MyView.h" @implementation MyView // 边框宽度
- (void)setBorderWidth:(float)borderWidth{ self.layer.borderWidth = borderWidth;
} // 边框颜色
- (void)setBorderColor:(UIColor *)borderColor{ self.layer.borderColor = borderColor.CGColor;
} // 圆角
- (void)setCornerRadius:(float)cornerRadius{ self.layer.cornerRadius = cornerRadius;
} @end

3、在storeboad中添加一个view,并且设置这个view的类为 我们刚才创建的 MyView

上图里面的那些属性就是我们在.h文件里面加了IBInspectable关键字的属性,这里就能实时修改看效果了。

2.实现纯代码的自定义View

1、创建一个继承UIView的 MyProgress 类文件,MyProgress.h 如下:

#import <UIKit/UIKit.h>

@interface MyProgress : UIView

// 当时进度值
@property (nonatomic,assign) float progressValue; @end

2、MyProgress.m 如下:

#import "MyProgress.h"

@implementation MyProgress
{
float _proValue;
} // 重写初始化方法
- (id)initWithFrame:(CGRect)frame{
self = [super initWithFrame:frame];
if (self) { // 设置背影为透明色
self.backgroundColor = [UIColor clearColor];
}
return self;
} // 重设progressValue属性
- (void)setProgressValue:(float)progressValue
{
_progressValue = progressValue; // 重新画UI
[self setNeedsDisplay];
} // 绘图
- (void)drawRect:(CGRect)rect { // 获取画图的上下文
CGContextRef ctx = UIGraphicsGetCurrentContext(); /**** 绘制圆形背景线 ****/ // 圆的半径
float r = rect.size.width / 2.0; // 全圆
CGFloat endAngle = M_PI * ; // 画圆形线
CGContextAddArc(ctx, r, r, r, , endAngle, ); // 背影颜色
CGContextSetRGBFillColor(ctx, 0.7, 0.7,0.7, ); // 完成绘制
CGContextFillPath(ctx); /**** 绘制扇形区域 ****/ // 计算结束角度
endAngle = M_PI * * _progressValue; /** 画圆
* 参数1:c 当前上下文
* 参数2:x 圆的X坐标
* 参数3:y 圆的Y坐标
* 参数4:radius 圆的半径
* 参数5:startAngle 开始角度
* 参数6:endAngle 结束角度
* 参数7:clockwise 是否逆时针
*/
CGContextAddArc(ctx, r, r, r, , endAngle, ); // 连成线,成弧形
CGContextAddLineToPoint(ctx, r, r);
// 其实就是在连接的那条线上加一个点,让线条连接到那一个点,就像拉弓,可加多个点
// CGContextAddLineToPoint(ctx, r + 20, r + 20); // 填充颜色
CGContextSetRGBFillColor(ctx, , , , ); // 完成绘制
CGContextFillPath(ctx); }

3、调用自定义的MyProgress类

#import "MyProgress.h"

@interface ViewController ()
{
MyProgress* _myProView;
}
@end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; // 创建自定义控件
_myProView = [[MyProgress alloc]initWithFrame:CGRectMake(, , , )];
// 默认进度
_myProView.progressValue = 0.2; [self.view addSubview:_myProView];
}

IOS自定义UIView的更多相关文章

  1. OpenGL ES: iOS 自定义 UIView 响应屏幕旋转

    iOS下使用OpenGL 如果使用GLKit View 那么不用担心屏幕旋转的问题,说明如下: If you change the size, scale factor, or drawable pr ...

  2. iOs 自定义UIView 日历的实现 Swift2.1

    学习Swift有一个月了,动手写一个UIView吧. 所有源代码在最后,直接用就可以了,第一次写Swift,和C#,Java还是有区别的 (博客园可以考虑在代码插入中添加Swift的着色了) 1  函 ...

  3. IOS xib和代码自定义UIView

    https://www.jianshu.com/p/1bcc29653085 总结的比较好 iOS开发中,我们常常将一块View封装起来,以便于统一管理内部的子控件. 下面就来说说自定义View的封装 ...

  4. 【iOS自定义键盘及键盘切换】详解

    [iOS自定义键盘]详解 实现效果展示: 一.实现的协议方法代码 #import <UIKit/UIKit.h> //创建自定义键盘协议 @protocol XFG_KeyBoardDel ...

  5. iOS自定义的UISwitch按钮

    UISwitch开关控件 开关代替了点选框.开关是到目前为止用起来最简单的控件,不过仍然可以作一定程度的定制化. 一.创建 UISwitch* mySwitch = [[ UISwitchalloc] ...

  6. iOS 自定义layer的两种方式

    在iOS中,你能看得见摸得着的东西基本都是UIView,比如一个按钮,一个标签,一个文本输入框,这些都是UIView: 其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层 在创建UIVi ...

  7. iOS自定义组与组之间的距离以及视图

    iOS自定义组与组之间的距离以及视图 //头视图高度 - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(N ...

  8. iOS 自定义转场动画

    代码地址如下:http://www.demodashi.com/demo/12955.html 一.总效果 本文记录分享下自定义转场动画的实现方法,具体到动画效果:新浪微博图集浏览转场效果.手势过渡动 ...

  9. iOS 自定义转场动画浅谈

    代码地址如下:http://www.demodashi.com/demo/11612.html 路漫漫其修远兮,吾将上下而求索 前记 想研究自定义转场动画很久了,时间就像海绵,挤一挤还是有的,花了差不 ...

随机推荐

  1. jQuery对象插件封装步骤

    jQuery是js的一个非常优秀的库,它大大简化了js的很多操作,并且解决了js的大部分兼容性问题.甚至很多css兼容性问题,用jQuery写都能解决. 这里是对象插件的封装.当然,封装插件很多,这里 ...

  2. Javascript教程:js异步模式编程的4种解决方法

    随着人们对网站视觉效果及用户体验的要求越来越高,所以在未来网站的建设中,设计师们开始越来越多的使用了js文件来达到预期的效果,随着js文件的越来越多,令设计师们最头痛的事情也就来了,那就是Javasc ...

  3. 使用ActionBar实现Tab导航

    ActionBar还有常用的功能,实现Tab导航.ActionBar在顶端生成多个Tab标签,当用户单击点击某个Tab标签时,系统根据用户点击事件导航指定Tab页面. 为了使用ActionBar实现T ...

  4. Number,parseInt,parseFloat函数

    Number,parseInt,parseFloat函数 console.group('Number'); console.log(Number( console.log(Number( consol ...

  5. JSP模板文本

    JSP模板文本: http://book.51cto.com/art/200907/136020.htm JSP页面就是带有JSP元素的常规Web页面,它是由JSP模版文本和JSP元素组成的.在一个J ...

  6. 纯CSS3实现不错的表单验证效果

    这是补充HTML5基础知识的系列内容,其他为: 一.HTML5-- 新的结构元素 二.HTML5-- figure.time.details.mark 三.HTML5-- details活学活用 四. ...

  7. wx小程序初体验

    小程序最近太火,不过相比较刚发布时,已经有点热度散去的感觉,不过这不影响我们对小程序的热情,开发之前建议通读下官网文档,附链接:https://mp.weixin.qq.com/debug/wxado ...

  8. easyui帮助文档地址

    http://www.jeasyui.com/documentation/index.php# http://www.jeasyui.net/tutorial/22.html http://www.j ...

  9. mysql学习之权限管理

    数据库权限的意义: 为了保证数据库中的业务数据不被非授权的用户非法窃取,需要对数据库的访问者进行各种限制,而数据库安全性控制措施主要有这三种,第一种用户身份鉴别,手段可以是口令,磁卡,指纹等技术,只有 ...

  10. Jenkins学习——Jenkins是什么

    Jenkins是什么 对于Jenkins是什么,百度百科给的答案是这样的:Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. 通过这句话,我们可以得到这样的一 ...