有时候我们须要自绘uiview以实现自己的需求,比方依据坐标点绘制出连续的曲线(股票走势图),就须要自绘uiview了。

原理:继承uiview类(customView),并实现custom view的drawRect即可。

首先看一下效果图:

代码例如以下:

// .h

#import <UIKit/UIKit.h>

@interface CustomView :
UIView

@end

//.m

#import "CustomView.h"

@implementation CustomView

-(id)initWithFrame:(CGRect)frame{

    //重写initWithFrame时,不要忘了以下一句

    self = [superinitWithFrame:frame];

    

    if (self) {

        self.backgroundColor = [UIColorwhiteColor];

    }

    

    return
self;

}

//重写drawRect方法(不须要调用)。绘制想要的图像

-(void)drawRect:(CGRect)rect{

 

    CGContextRef context =
UIGraphicsGetCurrentContext();//context:一块内存区域。将它看做当前view的画布即可了。

    NSDictionary *attribute = [NSDictionary
dictionaryWithObjectsAndKeys:[UIFont
systemFontOfSize:
15.0f],
NSFontAttributeName, [UIColor
redColor], 
NSForegroundColorAttributeName, nil];

    [@"股市走势图"
drawInRect,
,
)
withAttributes:attribute] ;//绘画标题

    

    //曲线

    CGContextMoveToPoint(context,
,
);

    CGContextAddLineToPoint(context,
,
);

    CGContextAddLineToPoint(context,
,
);

    CGContextAddLineToPoint(context,
,
);

    //CGContextStrokePath(context);

    

    //三角形

    CGContextMoveToPoint(context,
,
);

    CGContextAddLineToPoint(context,
,
);

    CGContextAddLineToPoint(context,
,
);

    CGContextClosePath(context);

    CGContextStrokePath(context);

    //CGContextFillPath(context);

    

    //矩形

    CGContextAddRect(context,
CGRectMake,
,
));

    [[UIColor
colorWithRed
green
blue
alpha]
set];

    //CGContextStrokePath(context);//空心

    CGContextFillPath(context);//实心

    

     //圆

    , , ,
, *M_PI,
);

    CGContextStrokePath(context);

}

@end

然后在须要用到该view的view controller的

viewDidLoad下加入西;以下代码就能够了!

CustomView *view = [[CustomView alloc]  initWithFrame:[UIScreen mainScreen].bounds];

[self.view addSubview view];

自己定义UIView以实现自绘的更多相关文章

  1. 关于UIView及其子类重绘drawRect

    转载自:https://nezha.gitbooks.io/ios-developmentarticles/content/UIView%E7%9A%84drawRect%E9%87%8D%E7%BB ...

  2. iOS----自定义UIView,绘制一个UIView

    绘制一个UIVIew最灵活的方式就是由它自己完成绘制.实际上你不是绘制一个UIView,你只是子类化了UIView并赋予子类绘制自己的能力.当一个UIVIew需要执行绘图操作的时,drawRect:方 ...

  3. 【Android】利用自己定义View的重绘实现拖动移动,获取组件的尺寸

    以下利用一个app来说明怎样利用自己定义View的重绘实现拖动移动.获取组件的尺寸. 例如以下图,触摸拖动,或者轻轻点击屏幕都能移动图片.假设碰到文字,则会弹出提示. 这里是利用自己定义View的重绘 ...

  4. UIView的剖析(转)

    转自:http://blog.csdn.net/mengtnt/article/details/6716289 前面说过UIViewController,但是UIView也是在MVC中非常重要的一层  ...

  5. UIView的生命周期和layout方法总结

    生命周期 1. loadView 什么时候调用? 每次访问UIViewController的view时候并且view == nil时候调用. 如何实现? 1> 如果在初始化UIViewContr ...

  6. 01-事件处理简介/UIView拖拽

    1.ios当中常见的事件?         触摸事件        加速计事件         远程控制事件2.什么是响应者对象?     继承了UIResponds的对象我们称它为响应者对象 UIA ...

  7. iOS之 重绘机制

    最近在看Core Animation , 今天来谈谈CALayer 和 UIView 中的重绘的一些认识: 我们都知道UIView里面有个成员layer,利用这个这个layer我们可以设置一些圆角,阴 ...

  8. 8. UIViewController

    1. UIViewController 的认识 UIViewController在iOS开发中占据很重要的位置,iOS的整个UI开发的核心思想也是MVC的架构,从UIViewController的命名 ...

  9. Swift - 键盘弹起,遮挡输入框

    extension LoginViewController:UITextFieldDelegate { func textFieldShouldReturn(textField: UITextFiel ...

随机推荐

  1. [BZOJ4338][BJOI2015]糖果(扩展Lucas)

    先求出式子$P_{C_{K+m-1}^{m}}^{n}$,然后对于排列直接$O(n)$求解,对于组合用扩展Lucas求解. 但这题数据并没有保证任何一个模数的质因子的$p^k$在可线性处理的范围内,于 ...

  2. js异步处理工作机制(setTimeout, setInterval)

    经常谈到异步,但是发现自己一直没深入理解setTimeout, setInterval,逛论坛的时候发现了这篇好文章,分享一下. ————————————————————以下为原文—————————— ...

  3. css-stylus

    1.stylus 对定义CSS的方式进行了改变,允许我们简化CSS的书写格式,同时允许我们定义变量.定义函数来操作CSS CSS处理器类型: sass/less/stylus stylus结构 1.1 ...

  4. C#如何用OpenFileDialog控件打开图片显示到PictureBox这个控件

    openFileDialog1.Filter = "图片文件|*.jpg|BMP图片|*.bmp|Gif图片|*.gif"; OpenFileDialog ofd = new Op ...

  5. 普通主板设置BIOS实现电脑插电自动启动

    说明: 1.为什么要实现这种功能,很多时候在民间都基本用普通PC来做小型服务器,公司的私服等等,而这些普通PC在民用电环境中经常会停电,一停就会导致服务器不能自动来电重启,所以这个功能来点开机是必须的 ...

  6. <摘录>Gson对Java嵌套对象和JSON字符串之间的转换

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,具有良好的跨平台特性.近几年来已经和XML一样成为C/S架构中广泛采用的数据格式.有关JSON的更多知识, ...

  7. 富文本编辑器、日期选择器、软件天堂、防止XSS攻击、字体icon、转pdf

    [超好用的日期选择器] Layui:http://www.layui.com/laydate/ 备注:日期选择器,用过很多很多,自己也写过一些:相信这个简单而又不简单的选择器,能够给你多些美好的时光 ...

  8. Spring MVC一事务控制问题

    在近期一个项目中用了Spring MVC作为控制层框架,但却出现了一个让人非常费解的问题:事务控制. Spring MVC的配置文件名称为:springMVC-servlet.xml,内容例如以下: ...

  9. linux查看文件有多少行(WC)

    使用wc命令 具体通过wc --help 可以查看. 如:wc -l filename 就是查看文件里有多少行 wc -w filename 看文件里有多少个word. wc -L filename ...

  10. QT 5.3 VS2010 中文

    #include <QtWidgets/QApplication> #include <QTextCodec>#include <QLabel>#pragma ex ...