IOS自定义UIView

所属分类: 软件编程 / IOS 阅读数: 1877
收藏 0 赞 0 分享

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 * 2;
 // 画圆形线
 CGContextAddArc(ctx, r, r, r, 0, endAngle, 0);
 // 背影颜色
 CGContextSetRGBFillColor(ctx, 0.7, 0.7,0.7, 1);
 // 完成绘制
 CGContextFillPath(ctx);
 /**** 绘制扇形区域 ****/
 // 计算结束角度
 endAngle = M_PI * 2 * _progressValue;
 /** 画圆
  * 参数1:c   当前上下文
  * 参数2:x   圆的X坐标
  * 参数3:y   圆的Y坐标
  * 参数4:radius  圆的半径
  * 参数5:startAngle 开始角度
  * 参数6:endAngle 结束角度
  * 参数7:clockwise 是否逆时针
  */
 CGContextAddArc(ctx, r, r, r, 0, endAngle, 0);
 // 连成线,成弧形
 CGContextAddLineToPoint(ctx, r, r);
 // 其实就是在连接的那条线上加一个点,让线条连接到那一个点,就像拉弓,可加多个点
// CGContextAddLineToPoint(ctx, r + 20, r + 20);
 // 填充颜色
 CGContextSetRGBFillColor(ctx, 0, 0, 1, 1);
 // 完成绘制
 CGContextFillPath(ctx);
}

3、调用自定义的MyProgress类

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

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!

更多精彩内容其他人还在看

iOS 仿百度外卖-首页重力感应的实例

这篇文章主要介绍了iOS 仿百度外卖-首页重力感应的实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
收藏 0 赞 0 分享

iOS实现时间显示几分钟前,几小时前以及刚刚的方法示例

这篇文章主要介绍了如何利用iOS实现时间显示是在几小时前,几分钟前以及刚刚的格式,类似大家在qq空间和朋友圈微博看到的效果,文中给出了详细的示例代码,有需要的朋友们可以参考借鉴,下面来一起学习学习吧。
收藏 0 赞 0 分享

iOS 条码及二维码扫描(从相册中读取条形码/二维码)及扫码过程中遇到的坑

本文主要给大家介绍ios中从手机相册中读取条形码和二维码的问题及解决办法,需要的朋友参考下
收藏 0 赞 0 分享

IOS Cache设计详细介绍及简单示例

这篇文章主要介绍了IOS Cache设计详细介绍及简单示例的相关资料,Cache的目的是为了追求更高的速度体验,Cache的源头是两种数据读取方式在成本和性能上的差异,需要的朋友可以参考下
收藏 0 赞 0 分享

iOS本地动态生成验证码的方法

这篇文章主要介绍了iOS本地动态生成验证码的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

iOS绘制3D饼图的实现方法

饼图常用于统计学模块。常见的一般为2D饼图,这篇文章主要介绍了iOS绘制3D饼图的实现方法,3D饼图更加立体,用户的好感度也比较高,下面需要的朋友可以参考借鉴,一起来看看吧。
收藏 0 赞 0 分享

谈谈iOS开发之JSON格式数据的生成与解析

JSON格式取代了xml给网络传输带来了很大的便利,本篇文章主要介绍了iOS开发:对象直接转化成JSON详解,具有一定的参考价值,有兴趣的可以了解一下。
收藏 0 赞 0 分享

IOS 身份证校验详细介绍及示例代码

这篇文章主要介绍了IOS 身份证校验详细介绍及示例代码的相关资料,这里对身份校验比较详细,附有简单实例,需要的朋友可以参考下
收藏 0 赞 0 分享

IOS 自定义UICollectionView的头视图或者尾视图UICollectionReusableView

这篇文章主要介绍了IOS 自定义UICollectionView的头视图或者尾视图UICollectionReusableView的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

IOS 仿支付宝支付屏幕亮度变化机制

这篇文章主要介绍了IOS 仿支付宝支付屏幕亮度变化机制的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多