UIview需要知道的一些事情:setNeedsDisplay、setNeedsLayout
来源:互联网 发布:大数据时代面临的挑战 编辑:程序博客网 时间:2024/05/16 14:54
UIview需要知道的一些事情:setNeedsDisplay、setNeedsLayout
1、在Mac OS中NSWindow的父类是NSResponder,而在i OS 中UIWindow 的父类是UIVIew。程序一般只有一个窗口但是会又很多视图。
2、UIView的作用:描画和动画,视图负责对其所属的矩形区域描画、布局和子视图管理、事件处理、可以接收触摸事件、事件信息的载体、等等。
3、UIViewController 负责创建其管理的视图及在低内存的时候将他们从内存中移除。还为标准的系统行为进行响应。
4、layOutSubViews 可以在自己定制的视图中重载这个方法,用来调整子视图的尺寸和位置。
5、UIView的setNeedsDisplay和setNeedsLayout方法。首先两个方法都是异步执行的。而setNeedsDisplay会调用自动调用drawRect方法,这样可以拿到UIGraphicsGetCurrentContext,就可以画画了。而setNeedsLayout会默认调用layoutSubViews,就可以处理子视图中的一些数据。
宗上所诉,setNeedsDisplay方便绘图,而layoutSubViews方便出来数据
延伸:
实例:跟随手指运动的小球
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#import "FKCustomView.h"
@implementation FKCustomView
// 定义两个变量记录当前触碰点的坐标
int
curX;
int
curY;
- (
void
) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
// 获取触碰事件的UITouch事件
UITouch *touch = [touches anyObject];
// 得到触碰事件在当前组件上的触碰点
CGPoint lastTouch = [touch locationInView:self];
// 获取触碰点的坐标
curX = lastTouch.x;
curY = lastTouch.y;
// 通知该组件重绘
[self setNeedsDisplay];
}
// 重写该方法来绘制该UI控件
- (
void
)drawRect:(CGRect)rect
{
// 获取绘图上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();
// 设置填充颜色
CGContextSetFillColorWithColor(ctx, [[UIColor redColor] CGColor]);
// 以触碰点为圆心绘制一个圆形
CGContextFillEllipseInRect(ctx, CGRectMake(curX - 10, curY - 10, 20, 20));
}
@end
0 0
- UIview需要知道的一些事情:setNeedsDisplay、setNeedsLayout
- UIview需要知道的一些事情:setNeedsDisplay、setNeedsLayout
- UIview需要知道的一些事情:setNeedsDisplay、setNeedsLayout
- UIview需要知道的一些事情:setNeedsDisplay、setNeedsLayout
- UIview需要知道的一些事情:setNeedsDisplay、setNeedsLayout
- IOS中UIview需要知道的一些事情:setNeedsDisplay、setNeedsLayout
- UIview需要知道的一些事情:setNeedsDisplay、setNeedsLayout
- UIview需要知道的一些事情:setNeedsDisplay、setNeedsLayout
- UIview需要知道的一些事情:setNeedsDisplay、setNeedsLayout
- UIview需要知道的一些事情:setNeedsDisplay、setNeedsLayout
- UIview需要知道的一些事情:setNeedsDisplay、setNeedsLayout
- UIView需要知道的一些事情:setNeedsDisplay、setNeedsLayout
- UIview需要知道的一些事情:setNeedsDisplay、setNeedsLayout
- UIview需要知道的一些事情:setNeedsDisplay、setNeedsLayout
- UIview需要知道的一些事情:setNeedsDisplay、setNeedsLayout
- 『IOS』UIview需要知道的一些事情:setNeedsDisplay、setNeedsLayout
- 『iOS』UIview需要知道的一些事情:setNeedsDisplay、setNeedsLayout
- UIView常用的一些方法小记之setNeedsDisplay和setNeedsLayout
- Chrome浏览器的快捷键
- Linux as5_Oracle10G_双机_共享磁盘
- 关于终端和控制台的概念
- RabbitMQ安装,配置和使用
- 2014-04-19 块设备驱动程序(模拟内存)__
- UIview需要知道的一些事情:setNeedsDisplay、setNeedsLayout
- windows系统添加右键选项
- TOMCAT服务器不写端口号、不写项目名访问项目、虚拟目录配置
- 输油管道问题
- 好东西
- extjs4 treepanel左右键事件
- select, poll和epoll的区别
- This Android SDK requires Android Developer Toolkit version 22.6.2 or above
- 15个热门的编程趋势及15个逐步走向衰落的编程方向