IOS自定义UIView
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的更多相关文章
- OpenGL ES: iOS 自定义 UIView 响应屏幕旋转
iOS下使用OpenGL 如果使用GLKit View 那么不用担心屏幕旋转的问题,说明如下: If you change the size, scale factor, or drawable pr ...
- iOs 自定义UIView 日历的实现 Swift2.1
学习Swift有一个月了,动手写一个UIView吧. 所有源代码在最后,直接用就可以了,第一次写Swift,和C#,Java还是有区别的 (博客园可以考虑在代码插入中添加Swift的着色了) 1 函 ...
- IOS xib和代码自定义UIView
https://www.jianshu.com/p/1bcc29653085 总结的比较好 iOS开发中,我们常常将一块View封装起来,以便于统一管理内部的子控件. 下面就来说说自定义View的封装 ...
- 【iOS自定义键盘及键盘切换】详解
[iOS自定义键盘]详解 实现效果展示: 一.实现的协议方法代码 #import <UIKit/UIKit.h> //创建自定义键盘协议 @protocol XFG_KeyBoardDel ...
- iOS自定义的UISwitch按钮
UISwitch开关控件 开关代替了点选框.开关是到目前为止用起来最简单的控件,不过仍然可以作一定程度的定制化. 一.创建 UISwitch* mySwitch = [[ UISwitchalloc] ...
- iOS 自定义layer的两种方式
在iOS中,你能看得见摸得着的东西基本都是UIView,比如一个按钮,一个标签,一个文本输入框,这些都是UIView: 其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层 在创建UIVi ...
- iOS自定义组与组之间的距离以及视图
iOS自定义组与组之间的距离以及视图 //头视图高度 - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(N ...
- iOS 自定义转场动画
代码地址如下:http://www.demodashi.com/demo/12955.html 一.总效果 本文记录分享下自定义转场动画的实现方法,具体到动画效果:新浪微博图集浏览转场效果.手势过渡动 ...
- iOS 自定义转场动画浅谈
代码地址如下:http://www.demodashi.com/demo/11612.html 路漫漫其修远兮,吾将上下而求索 前记 想研究自定义转场动画很久了,时间就像海绵,挤一挤还是有的,花了差不 ...
随机推荐
- VirtualBox中安装Android-x86详解
1.下载安装VirtualBox 官网:http://www.virtualbox.org/wiki/Downloads 2.下载Android-x86 官网:http://www.android-x ...
- Java-Swing编程之对话框案例详解
package com.xushouwei.cn.photo; import java.awt.GraphicsConfiguration; import java.awt.GridLayout; i ...
- iPhone应用中加入评分功能
NSString *str = [NSString stringWithFormat: @"itms-apps://ax.itunes.apple.com/WebObjects/MZStor ...
- 利用PHPCMS V9站群功能建立分站
hosts文件就在C:\Windows\system32\drivers\etc\hosts下 用一套CMS软件系统,做多个网站,统一管理,用户可以互通,这就是所谓的站群功能.这对于运营和维护都能节省 ...
- 天兔(Lepus)监控系统快速安装部署
Lepus安装需要Lamp环境,Lamp环境的安装个人认为比较费劲,XAMPP的一键部署LAMP环境省心省力, lepus官网手册也建议采用XAMPP的方式安装,lepus也是在XAMPP上进行研发的 ...
- Webx3学习笔记(2)——基本流程
Webx3项目是运行在jetty/tomcat这种Web应用容器中的,Web应用的模式都是请求-响应的.一个请求通过浏览器发出,封装为HTTP报文到达服务端,被容器接受到,封装为HttpRequest ...
- Javascript中alert</script>的方法
Javascript中alert</script>的方法: <%@ page language="java" import="java.util.*&q ...
- 如何测试LBS功能
在LBS功能的开发中,为了保证通用性,服务器存在的坐标是基于wgs84的,这个通常由GPS设备传过来,对于PC来说,如何获得这个值呢?可以利用Google Earth来获得,并修改显示的坐标系统,“工 ...
- Weblogic常见故障常:JDBC Connection Pools
http://blog.csdn.net/woshixuye/article/details/24122579 有些时候是数据库连接池出现了问题,测试的时候显示没有连接池了,重启WebLogic都不行 ...
- Ubuntu16.04安装GTK3主题:OSX-Arc
Ubuntu16.04安装GTK3主题:OSX-Arc GTK3主题:OSX-Arc描述: 前几个月,Gnome3.20升3.22的时候,出现了大量主题崩溃的现象,其中包括Arc.Flatabulou ...