Viewday01

1.View层(视图层)

提供用户界面以及用户交互。

绘制、贴图、手势、变形、布局、动画、动力、特效。

2.绘制

2.1 基本概念

1>图像和显示器

显示器有很多显示晶体,每一个显示晶体都发3种颜色的光(红绿蓝),显示器上很多显示晶体。

640*480->1920*1080

2>像素

图片有多少像素,相当于有多少个颜色的点。

保存图片:

1像素由4个数表示(红、绿、蓝、Alpha),共4Byte,表示一个颜色点。

图片的大小=分辨率*4 (bmp)

但现在使用的图片jpg/png,都是经过压缩过的,图片的大小会小些,图像会失真,保持图片的原样,要使用bmp。

3>图像

内存中保存图像有两种方式:

位图(点阵图)RGB图片,照片等都使用二进制数位图。

矢量图,保存的不是点阵的数据,而是数学公式,函数等,点、线、面几何形状,阴影放大缩小不会失真。

2.2 如何绘制图形

绘制矢量图、绘制位图

2.2.1 绘制图形的API

UIKit Framework            OC语言    API

+ Core Animation     C语言        API

+ Core Graphics    C语言        API

+ System(IOS)

2.2.2 在哪写绘制代码

在视图的类中写

UIView —> drawRect 会在视图显示前自动调用

类似于UIViewController —>ViewDidLoad

视图类的绘制代码要写在drawRect方法中,此方法是自动调用的。

如同不能主动调用VC中的viewDidLoad方法一样, 我们也不能主动调用View中的drawRect方法。

2.2.3 如何绘制

(1)找一个画板          *得到上下文

(2)勾勒形状              增加路径

(3)调色                      设置颜色

(4)上色                      开始画

 

图形上下文(Graphics Context):保存绘图信息、绘图的状态、决定绘制的输出目标。

绘制好一个图形(保存)->图形上下文(显示)->输出目标

可以输出Bitmap、PDF、Window、Layer、Printer

3.UIBezierPath类 贝赛尔曲线

3.1 是什么

对底层Core Graphics的一部分常见的绘制api的封装类

3.2 干什么

能让我们按照面向对象的方式绘制图形、直线、曲线、圆、扇形、多边型等。

3.3 使用

使用与C中的函数库相类似的四步

3.4 重要属性

.lineWidth 线宽

.lineCapStyle 线头风格

.lineJoinStyle 连线风格

3.5 如何画圆弧

参数1 中心点位置  圆心 参数2 半径

      参数3 开始的弧度角度 参数4 结束的弧度角度

      参数5 顺时针 逆时针

UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(160200radius:80 startAngle:0 endAngle:M_PI_2 clockwise:YES];

2*M_PI 圆 

M_PI_2 四分之一圆

3.6 定义视图

一个下载标记视图,圆形进度条。

A.计算弧度:

*起始弧度位置 M_PI_2*3

*结束弧度位置 self.value*(M_PI*2)+M_PI_2*3

UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(160200radius:80 startAngle:M_PI_2*3 endAngle:self.value*(M_PI*2)+M_PI_2*3 clockwise:YES];

B.传值的过程

slider的值->slider的事件方法->自定义View->属性value(自己写代码通知视图刷新)->计算弧度方法并显示

视图刷新:

<1>重新了属性的Setter方法

<2>调用属性的Setter方法改变值时,要刷新自定义视图。

[self setNeedsDisplay];

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值