OC开发_Storyboard——绘制和视图
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——绘制和视图相关推荐
- OC开发_Storyboard——MapKit
一.Core Location 1.基本对象 @propertys: coordinate, altitude, horizontal/verticalAccuracy, timestamp, sp ...
- Qt开发技术:图形视图框架(二)场景QGraphicsScene、QGraphicsItem与QGraphicsView详解
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/117660217 长期持续带来更多项目与技术分享,咨询请 ...
- C++Qt开发——Mode View(模型视图)
Model/View(模型/视图)结构 简介 Model/View(模型/视图)结构是 Qt 中用界面组件显示与编辑数据的一种结构,视图(View)是显示和编辑数据的界面组件,模型(Model)是视图 ...
- iOS10 UI教程视图的绘制与视图控制器和视图
iOS10 UI教程视图的绘制与视图控制器和视图 iOS10 UI视图的绘制 iOS10 UI教程视图的绘制与视图控制器和视图,在iOS中,有很多的绘图应用.这些应用大多是在UIView上进行绘制的. ...
- Django 3.2.5博客开发教程:URL与视图函数
在讲URL与视图函数之前我们先给大家简单介绍一下用户访问网站的流程.我们访问一个网站的时候,一般先打开浏览器,然后在浏览器的地址栏里输入一个网址,也就是URL,然后回车,我们就可以在浏览器里看到这个网 ...
- OC开发笔记之第二篇
OC开发笔记之第二篇 讲的是方法的使用,有参,无参的调用,命名规范等 分为类的声明和实现 @interface 类名 : NSObject { } 方法的声明: @end @implementatio ...
- 微信小程序开发学习4(视图与逻辑)
微信小程序开发学习4(视图与逻辑) 1.学习目标 能够知道如何实现页面之间的导航跳转 能够知道如何实现下拉刷新效果 能够知道如何实现上拉加载更多效果 能够知道小程序中常用的生命周期函数 2.页面导航 ...
- NX二次开发-UFUN工程图导入视图UF_DRAW_import_view
NX二次开发-UFUN工程图导入视图UF_DRAW_import_view NX9+VS2012#include <uf.h> #include <uf_draw.h> #in ...
- NX二次开发-UFUN移动工程图视图UF_DRAW_move_view
NX二次开发-UFUN移动工程图视图UF_DRAW_move_view #include <uf.h> #include <uf_draw.h> #include <uf ...
最新文章
- For循环中不可以嵌套RDD操作
- C++ 基础知识!初学者必看!
- sql中if语句的用法_Python中的if条件语句
- 理解ASP.NET Core中的中间件
- python中使用sys模板和logging模块获取行号和函数名的方法
- Flutter学习笔记01:搭建Flutter开发环境
- php语句导入mysql_php如何将数据库导入mysql
- Solid angle to Arnold for Cinema4D破解教程
- Asp.Net 4.0 新特性,输出更纯净的Html代码 ClientIDMode,ViewStateMode等
- 疯狂Java讲义笔记整理
- 使用原生js实现简单动画效果
- 网络操作系统发展历程
- 用c语言编写游戏中秋博饼,描写中秋节博饼的作文600字
- K线形态识别—双K线之卖出型双日K线组合
- vscode连接服务器不用每次都输入密码
- 【PC】自制QQ机器人(python+VB6)
- 理性分析三星盖乐世炸弹7
- Java调用百度/高德地图API实现根据经纬度查地名
- 计算几何基础--线段的性质
- Qt的各版本直接下载地址