目录:

1. Storyboard

2. Views

3. View的基本概念介绍

4. 绘制图形

5. UIBezierPath

回到顶部

1. Storyboard

1.1 静态表视图

1)Section可以增加、删除、修改头脚文字

2)Cell可以增加、删除、调整类型、修改文字、修改辅助视图类型

3)  自定义accessoryView:

将需要做辅助视图的控件拖拽到VC下的小黑条

选择Cell,第6个检查器,连线accessoryView到小黑条上的控件

4)自定义Cell

拖拽一个Cell或选择一个已有的Cell

检查器4中将Style设置为Custom

拖拽需要的控件到Cell中

5) 调整TableView的高度

选择场景, 检查器4  Size-->freeForm

从左侧选择TableView, 检查器5  View-->Height 修改此值

6) 增加Cell

从右侧对象库中拖拽一个Cell到TableView

7) 头视图

tableView.tableHeaderView

直接拖拽一个视图到表头

8) 复制Cell

Command+C Command+V

9) 跳转

选中你要从哪个Cell跳转

直接拉线到新的场景

10)需要增加自定义Cell中的控件代码时,需要再定义一个类

1>定义TableViewController类,继承UITableViewController

2>删除datasource和delegate协议规定的所有相关方法,否则不会显示静态的Cell

3>选择场景,在检查器3绑定类

4>增加Cell中的控件需要的代码(连接属性,定义方法)

1.2 动态表视图

1) 系统Cell原型

拖拽一个TableViewController后,选择Cell原型,在Style中选择一种系统样式(总共有4种)

给原型起名字: identifier属性

在代码中dequeue时,使用起的名字即可,保证一定会成功创建Cell对象

2) 自定义Cell原型

1>创建时和系统原型做法一样,但是Style选择Custom

2>定义一个Cell类,在检查器3中绑定这个类

3>根据实际需要拖拽自定义的控件到类中形成属性

4>给自定义的Cell起名, identifier属性

5>创建TableViewController类, 将场景绑定到此类

6>在TableViewController中就可以dequeue自定义的Cell用了

3) 混合Cell原型

在一个TableView中存在多个Cell原型, 这些原型可以是系统原型,也可以是自定义原型

自定义Cell在Storyboard中仅限于当前TableView使用,如果在其他TableView中重用的话,就需要拷贝。

有时候,一个自定义的Cell希望在多个场景中使用,那么就将此Cell单独定义成xib文件。

回到顶部

2. Views

绘制   quartz 2D

底层图形绘制技术,功能强大,难以掌握,不是面向对象,全部都是C语言API

贴图  美化

手势

变形

布局

动画

回到顶部

3. View的基本概念介绍

3.1 view层主要负责

根据Controller的配置,提供显示界面

负责和用户交互

3.2 图型和图像

显示器

上面有很多显像晶体,每一个晶体可以显示三种颜色(红绿蓝)

三种颜色的亮度不同,会合成各种不同的颜色

有1280x800个显像晶体,显示器支持的像素1280x800

像素: 一张图片的像素3200x2000

这张图片有3200x2000个颜色信息

R   0~255     1Byte    100

G  0~255     1Byte    150

B   0~255     1Byte    200

3200x2000x3Byte

图像划分:

位图(bitmap), 点阵图

可以用一个二维数组来保存数据

RGB组成每一个点

有自己的分辨率, 放大后就能看到点

这种图一般会进行压缩: png(无损压缩),jpg(有损压缩),gif,bmp(不压缩)

矢量图

一般是几何图形, 曲线,直线,圆,半径, 阴影

可以用代码写出这种图

放大和缩小不会失真

quartz 2D

回到顶部

4. 绘制图形

4.1 绘制代码写在View中

Controller      ---->   viewDidLoad

View             ---->   drawRect

需要自己写视图类,覆盖drawRect方法,在此方法中进制绘制

4.2 绘制的基本步骤:

1) 获取画布

1.5) 保存上下文状态

2) 勾勒

3) 着色

3.5)恢复上下文状态

     // 1.获取画布

     CGContextRef context = UIGraphicsGetCurrentContext();

     CGContextSaveGState(context); // 保存目前上下文状态

     // 2.勾勒

     CGContextMoveToPoint(context, , );

     CGContextAddLineToPoint(context, , );

     CGContextAddLineToPoint(context, , );

     CGContextAddLineToPoint(context, , );

     // 3.着色

     [[UIColor redColor] setFill]; // 设置填充颜色

     [[UIColor greenColor] setStroke]; // 设置描边颜色

     CGContextDrawPath(context, kCGPathFillStroke);

     // 恢复状态

     CGContextRestoreGState(context);

[Demo3]

拖拽一个UIView到view里,然后将UIView的类型设置成我们自己的TRView类型。

注意: drawRect方法永远是自动调用的,程序员不能主动去调用drawRect方法。

如果需要刷新界面, 向view发消息:setNeedDisplay, 系统会去调用drawRect方法进行界面的重新显示。

回到顶部

5. UIBezierPath

5.1 Bezier  贝塞尔曲线

5.2 干什么用

用于包装绘制的C语言API,使之成为面向对象代码

5.3frame 和bounds初步

frame 代表一个视图的坐标,此坐标保存了相对于父视图的位置

bounds代表一个视图自身的坐标

一般情况下,bounds中的size和frame中的size相同,而bounds中的origin永远为0

5.4 UIBezierPath中的三个属性:

.lineWidth          线宽

.lineCapStyle   线终点的风格

.lineJoinStyle    两条线连接的风格

     CGContextRef context = UIGraphicsGetCurrentContext();

     CGContextSaveGState(context);

     // 贝塞尔曲线

     UIBezierPath *path = [UIBezierPath bezierPath];

     [path moveToPoint:CGPointMake(, )];

     [path addLineToPoint:CGPointMake(, )];

     [path addLineToPoint:CGPointMake(, )];

     [path addLineToPoint:CGPointMake(, )];

     [[UIColor redColor] setFill];

     [[UIColor greenColor] setStroke];

     [path fill];

     [path stroke];

     CGContextRestoreGState(context);

5.5 画弧线

 - (void)drawRect:(CGRect)rect

 {

     // Drawing code

     [super drawRect:rect];

     CGContextRef context = UIGraphicsGetCurrentContext();

     CGContextSaveGState(context);

     UIBezierPath *path = [UIBezierPath bezierPath];

     [path moveToPoint:CGPointMake(, )];

     [path addLineToPoint:CGPointMake(, self.bounds.size.height - )];

     [path addLineToPoint:CGPointMake(self.bounds.size.width - , )];

     //[path closePath];

     [[UIColor redColor] setFill];

     [[UIColor blueColor] setStroke];

     path.lineWidth = ;

     path.lineJoinStyle = kCGLineJoinRound;

     path.lineCapStyle = kCGLineCapRound;

     [path fill];

     [path stroke];

     CGContextRestoreGState(context);
}

作业:

1. 画一个圆角矩形

四个圆角的半径必须一样

     // 圆角巨型

     [super drawRect:rect];

     CGContextRef context = UIGraphicsGetCurrentContext();

     CGContextSaveGState(context);

     UIBezierPath *path = [UIBezierPath bezierPath];

     [path addArcWithCenter:CGPointMake(, ) radius: startAngle:M_PI endAngle:M_PI * 1.5 clockwise:YES];

     [path moveToPoint:CGPointMake(, )];

     [path addLineToPoint:CGPointMake(, )];

     [path addArcWithCenter:CGPointMake(, ) radius: startAngle:M_PI *1.5 endAngle:M_PI *  clockwise:YES];

     [path addLineToPoint:CGPointMake(, )];

     [path addArcWithCenter:CGPointMake(, ) radius: startAngle: endAngle:M_PI_2 clockwise:YES];

     [path addLineToPoint:CGPointMake(, )];

     [path addArcWithCenter:CGPointMake(, ) radius: startAngle:M_PI_2 endAngle:M_PI clockwise:YES];

     [path addLineToPoint:CGPointMake(, )];

     [[UIColor redColor] setStroke];

     [path stroke];

     CGContextRestoreGState(context);

11-UIKit(Storyboard、View的基本概念、绘制图形、UIBezierPath)的更多相关文章

  1. Android view的测量及绘制

    讲真,自我感觉,我的水平真的是渣的一匹,好多东西都只停留在知道和会用的阶段,也想去研究原理和底层的实现,可是一看到代码就懵逼了,然后就看不下去了, 说自己不着急都是骗人的,我自己都不信,前两天买了本& ...

  2. OpenGL学习进程(11)第八课:颜色绘制的详解

        本节是OpenGL学习的第八个课时,下面将详细介绍OpenGL的颜色模式,颜色混合以及抗锯齿.     (1)颜色模式: OpenGL支持两种颜色模式:一种是RGBA,一种是颜色索引模式. R ...

  3. Windows App开发之编辑文本与绘制图形

    编辑文本及键盘输入 相信大家都会使用TextBox,但假设要让文本在TextBox中换行该怎么做呢?将TextWrapping属性设置为Wrap,将AcceptsReturn属性设置为True就好咯. ...

  4. 在Android中使用OpenGL ES进行开发第(三)节:绘制图形

    一.前期基础知识储备笔者计划写三篇文章来详细分析OpenGL ES基础的同时也是入门关键的三个点: ①OpenGL ES是什么?与OpenGL的关系是什么?——概念部分 ②使用OpenGLES绘制2D ...

  5. WPF2D绘制图形方法

    我们先看看效果如何: xaml文件: <Window x:Class="WPF2D绘制图形方法.MainWindow" xmlns="http://schemas. ...

  6. OpenGL学习进程(8)第六课:点、边和图形(三)绘制图形

    本节是OpenGL学习的第六个课时,下面介绍OpenGL图形的相关知识:     (1)多边形的概念: 多边形是由多条线段首尾相连而形成的闭合区域.OpenGL规定,一个多边形必须是一个“凸多边形”. ...

  7. OpenGL学习进程(4)第二课:绘制图形

    本节是OpenGL学习的第二个课时,下面介绍如何用点和线来绘制图形:     (1)用点的坐标来绘制矩形: #include <GL/glut.h> void display(void) ...

  8. Quartz 2D(常用API函数、绘制图形、点线模式)

    Quzrtz 2D 绘图的核心 API 是 CGContextRef ,它专门用于绘制各种图形. 绘制图形关键是两步: 1.获取 CGContextRef ; 2.调用 CGContextRef 的方 ...

  9. CSS图形基础:纯CSS绘制图形

    为了在页面中利用CSS3绘制图形,在页面中定义 <div  class="container"> <div class="shape"> ...

随机推荐

  1. HDU1325 &amp;&amp;poj1308 基础并查集

    和上一道小希的迷宫差点儿相同,可是在HDU上提交一直WA,POJ过了 HDU的数据太强了吧,强的我感觉数据有问题 题意:输入若干对点,推断是否是一颗树,转化过来也就是是否存在环 点数-边数=1,还要推 ...

  2. struts的常用配置

    struts.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUB ...

  3. 去掉word2007回车后自动编号

    1. 在使用word自动编号时,回车续写上一编号内容可能会行距很宽,这时候使用shift+回车不会自动下一编号,而且是正常行距 取消回车自动编号: 打开Word文档,单击菜单栏上的[格式]→[自动套用 ...

  4. IE6不支持<a>标签以外元素的hover的解决方案

    IE6以及更低版本的浏览器对“:hover”的支持不理想,对于类似的“p:hover”.“img:hover”.“#header:hover”...,今天给大家介绍一种新的方法,可以完美解决IE6不支 ...

  5. angularJS友好URL实现 good

    nginx部署 angularjs时的rewrite问题 使用h5+angularjs完成了一个项目 此项目在正式环境上使用nginx做webserver 此项目的入口在微信/微博分享中 由于分享时的 ...

  6. python pythonic是什么?

    原文地址:http://faassen.n--tree.net/blog/view/weblog/2005/08/06/0 注:Martijn 是 Zope 领域的专家,他为 Zope 系列产品做了许 ...

  7. Tomcat7 + JRebel6.3.0 + IntelliJ idea 热部署配置过程+错误分析

    以前使用Tomcat的时候直接就可以热部署,现在换了一个使用Spring框架的项目突然就不能热部署了. 网上说在tomcat里conf/context.xml中加入 <Context antiJ ...

  8. How many integers can you find(容斥+dfs容斥)

    How many integers can you find Time Limit: 12000/5000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  9. 免费利用网页版谷歌翻译实现任意语言转换php版

    本文源发布地址: http://ourgarden.cn/2013/07/20/%E5%85%8D%E8%B4%B9%E5%88%A9%E7%94%A8%E7%BD%91%E9%A1%B5%E7%89 ...

  10. 笔试题&amp;面试题:找出一个数组中第m小的值并输出

    题目:找出一个数组中第m小的值并输出. 代码: #include <stdio.h> int findm_min(int a[], int n, int m) //n代表数组长度,m代表找 ...