1、绘制

不要调用drawRect.调用setNeedsDisplay相当于告知系统视图需要重绘, 它会去调用drawRect,更新屏外缓冲器

2、UIBezierPath绘制图形,
   设置图像opaque属性=no,根据透明度一层层合成视图,比直接修改比特值的开销会大很大多,消耗性能
   如果只是显示的问题可以通过设置hidden

3、UIGestureRecognizer

setNeedDisplay是为了让有人修改时重绘 ,据目标大小,选择合适尺寸

现在利用绘制做一个小demo,效果如下图,有一个黑色边缘的圆角:

代码如下:

ModelView.m

 1 //
 2 //  ModelView.m
 3 //  testForRouteAngle
 4 //
 5 //  Created by bos on 15-4-16.
 6 //  Copyright (c) 2015年 axiba. All rights reserved.
 7 //
 8
 9 #import "ModelView.h"
10
11 @implementation ModelView
12
13 #define HEIGHT 180.0  //高度的标准值
14 #define RADIOS 12.0  //半径
15
16 -(CGFloat)cornerScaleFactor {return  self.bounds.size.height/HEIGHT;}
17 -(CGFloat)cornerRadius{ return RADIOS *[self cornerScaleFactor];}
18 -(CGFloat)cornerOffset{ return  [self cornerRadius] / 3.0;}
19
20 -(void)drawRect:(CGRect)rect
21 {
22     //所绘制范围的坐标系
23     //cornerRadius :圆角矩形的圆角的半径有多少个点
24     UIBezierPath *roundrect = [UIBezierPath bezierPathWithRoundedRect:self.bounds cornerRadius:[self cornerRadius]];
25
26     //裁剪
27     [roundrect addClip];
28
29     //填充色
30     [[UIColor whiteColor] setFill];
31     UIRectFill(self.bounds);
32
33     //**边缘添加一圈黑色边框**//
34
35     //设置描边颜色
36     [[UIColor blackColor]setStroke];
37     //让roundrect也就是被塞尔路径描边
38     [roundrect stroke];
39 }
40
41 #pragma  storyBoard 中需要用 awake来唤醒加载,不用alloc/init
42 -(void)awakeFromNib
43 {
44     self.backgroundColor = nil;
45     self.opaque = NO;
46
47     //如果bounds变化来,就调用drawrect
48     self.contentMode = UIViewContentModeRedraw;
49 }
50
51
52 /*
53 // Only override drawRect: if you perform custom drawing.
54 // An empty implementation adversely affects performance during animation.
55 - (void)drawRect:(CGRect)rect {
56     // Drawing code
57 }
58 */
59
60 @end

demo需要注意的地方:

1、我们往storyBoard是拉进去一个UIView,然后新建一个继承自UIVIEW的文件,所以文件和控件的之间的连接,还需要通过设置class

2、设置圆角需要一个高度标准、半径,具体看代码设置,可以复用

OC开发_Storyboard——绘制和视图相关推荐

  1. OC开发_Storyboard——MapKit

    一.Core  Location 1.基本对象 @propertys: coordinate, altitude, horizontal/verticalAccuracy, timestamp, sp ...

  2. Qt开发技术:图形视图框架(二)场景QGraphicsScene、QGraphicsItem与QGraphicsView详解

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/117660217 长期持续带来更多项目与技术分享,咨询请 ...

  3. C++Qt开发——Mode View(模型视图)

    Model/View(模型/视图)结构 简介 Model/View(模型/视图)结构是 Qt 中用界面组件显示与编辑数据的一种结构,视图(View)是显示和编辑数据的界面组件,模型(Model)是视图 ...

  4. iOS10 UI教程视图的绘制与视图控制器和视图

    iOS10 UI教程视图的绘制与视图控制器和视图 iOS10 UI视图的绘制 iOS10 UI教程视图的绘制与视图控制器和视图,在iOS中,有很多的绘图应用.这些应用大多是在UIView上进行绘制的. ...

  5. Django 3.2.5博客开发教程:URL与视图函数

    在讲URL与视图函数之前我们先给大家简单介绍一下用户访问网站的流程.我们访问一个网站的时候,一般先打开浏览器,然后在浏览器的地址栏里输入一个网址,也就是URL,然后回车,我们就可以在浏览器里看到这个网 ...

  6. OC开发笔记之第二篇

    OC开发笔记之第二篇 讲的是方法的使用,有参,无参的调用,命名规范等 分为类的声明和实现 @interface 类名 : NSObject { } 方法的声明: @end @implementatio ...

  7. 微信小程序开发学习4(视图与逻辑)

    微信小程序开发学习4(视图与逻辑) 1.学习目标 能够知道如何实现页面之间的导航跳转 能够知道如何实现下拉刷新效果 能够知道如何实现上拉加载更多效果 能够知道小程序中常用的生命周期函数 2.页面导航 ...

  8. NX二次开发-UFUN工程图导入视图UF_DRAW_import_view

    NX二次开发-UFUN工程图导入视图UF_DRAW_import_view NX9+VS2012#include <uf.h> #include <uf_draw.h> #in ...

  9. NX二次开发-UFUN移动工程图视图UF_DRAW_move_view

    NX二次开发-UFUN移动工程图视图UF_DRAW_move_view #include <uf.h> #include <uf_draw.h> #include <uf ...

最新文章

  1. For循环中不可以嵌套RDD操作
  2. C++ 基础知识!初学者必看!
  3. sql中if语句的用法_Python中的if条件语句
  4. 理解ASP.NET Core中的中间件
  5. python中使用sys模板和logging模块获取行号和函数名的方法
  6. Flutter学习笔记01:搭建Flutter开发环境
  7. php语句导入mysql_php如何将数据库导入mysql
  8. Solid angle to Arnold for Cinema4D破解教程
  9. Asp.Net 4.0 新特性,输出更纯净的Html代码 ClientIDMode,ViewStateMode等
  10. 疯狂Java讲义笔记整理
  11. 使用原生js实现简单动画效果
  12. 网络操作系统发展历程
  13. 用c语言编写游戏中秋博饼,描写中秋节博饼的作文600字
  14. K线形态识别—双K线之卖出型双日K线组合
  15. vscode连接服务器不用每次都输入密码
  16. 【PC】自制QQ机器人(python+VB6)
  17. 理性分析三星盖乐世炸弹7
  18. Java调用百度/高德地图API实现根据经纬度查地名
  19. 计算几何基础--线段的性质
  20. Qt的各版本直接下载地址

热门文章

  1. centOS目录结构详细版
  2. Bootstrap研究0-概述
  3. RocketMQ有哪些消息类型?springboot如何整合rocketMQ
  4. 如何不重启服务,把编译类放入正在运行的服务中去
  5. php加本地音乐代码,WordPress添加音乐播放器(纯代码实现)
  6. 从源码分析RocketMQ系列-Producer的invokeSync()方法
  7. 贪心算法求解背包问题
  8. Redis数据结构——跳跃表-skiplist
  9. 关于Kafka中的再均衡
  10. 解决Windows Server 2008 System4进程占用80端口 net stop http