UIView 类
2015-09-13 23:35
363 查看
UIView是所有可视化控件的老祖宗,而这些可视化控件又与用户互动密不可分,这表示UIView负责了界面的产生以及事件的处理,因此,我们可以将UIView的特性整理如下。
UIView 会占用一块矩形区域,而这块矩形区域是以CGRect这个C结构来表示的。UIView 的一切描绘操作以及事件处理都发生在这个区域内。
如同画布一般,可以在上面描绘其他的东西,也可以放入或删除控件,例如我们在HelloWorld中放置的按钮。
为了让所有的可视化控件可以和用户 互动,它继承了UIResponder 类。而这个类就定义了触控事件以及摇晃事件等。
一个UIView下面可以拥有多个子UIView ,后加入的UIView会放置在上层,我们也可以通过调整这些UIView的上下层关系来构成界面的转换。
通过加入手势的识别,可以让UIView识别出用户的操作,病做出相对应的响应。
—————————————
描述一块区域,只要用这块区域的原点(origin)以及大小(size) 就可以确定了。
CGPoint
用来表示在界面坐标上的一个点。
CGSize
用来定义界面上的一块区域的大小。
CGRect
用来描述界面上的一块区域的位置与大小。这个结构在日后开发时用到得几率非常高。
CGPointMake(x,y):用来产生CGPoint,
CGSizeMake(width,height):用来产生CGSize,
CGRectMake(x,y,width,height):用来产生CGRect,
CGSizeEqualToSize(size1,size2):用来比较两个CGSize是否相同
结果返回NO。
CGRectContainsPoint(rect,point):用来检查变量point是否在rect所包含的区域内,
结果返回YES.
CGRectGetMinX(rect)和CGRectGetMinY(rect):分别取得区域rect左上角的X,Y坐标
CGRectGetMidX(rect)和CGRectGetMidY(rect):分别用来取得区域rect的中心点的X,Y坐标
CGRectGetMaxX(rect)和CGRectGetMaxY(rect):分别用来取得区域rect右下角的X,Y坐标
定义一个UIView
上述的界面大小即定义为由原点(0,0)算起、宽度320,高度480的区域。除了使用CGRectMake来定义UIVIew的大小以外,在IOS里面还定义了几个特殊的CGRect可以让你直接使用:
CGRectNull:对象可以用nil来设置为控制,那么CGRect呢?答案是使用CGRectNull这个敞亮,而要判断一个CGRect是否为空值,并非简单地使用null或nil来判断,这是因为CGRect是一个C的结构,而非指针对象,这时候应该要使用CGRectNull()函数来判断。
CGRectZero:定义了一个大小为0的区域。这个敞亮用于并不在乎UIView的大小的情况,例如在UITableViewCell这个类里面,我们常会使用以下代码。
由于后续IOS会去调整所产生的这个控件的大小,所以,我们并不需要自己去计算该控件的大小。在这种情况下,只要传入CGRectZero就可以了。
CGRectInfinite:如果要产生一个无穷大得区域,那么久可以使用这个常量。可以试着将他的width与height输出到控制台来看,那将是个超出屏幕大小好几倍的空间。
UIView 会占用一块矩形区域,而这块矩形区域是以CGRect这个C结构来表示的。UIView 的一切描绘操作以及事件处理都发生在这个区域内。
如同画布一般,可以在上面描绘其他的东西,也可以放入或删除控件,例如我们在HelloWorld中放置的按钮。
为了让所有的可视化控件可以和用户 互动,它继承了UIResponder 类。而这个类就定义了触控事件以及摇晃事件等。
一个UIView下面可以拥有多个子UIView ,后加入的UIView会放置在上层,我们也可以通过调整这些UIView的上下层关系来构成界面的转换。
通过加入手势的识别,可以让UIView识别出用户的操作,病做出相对应的响应。
—————————————
描述一块区域,只要用这块区域的原点(origin)以及大小(size) 就可以确定了。
CGPoint
struct CGPoint{ CGFloat x; CGFloat y; }; typedef struct CGPoint CGPoint;
用来表示在界面坐标上的一个点。
CGSize
struct CGSize{ CGFloat width; CGFloat height; }; typedef struct CGSize CGSize;
用来定义界面上的一块区域的大小。
CGRect
struct CGRect{ CGFloat origin; CGFloat size; }; typedef struct CGRect CGRect;
用来描述界面上的一块区域的位置与大小。这个结构在日后开发时用到得几率非常高。
CGPointMake(x,y):用来产生CGPoint,
CGPoint point = CGPointMake(100.0,200.0); //在这个坐标定位一个点
CGSizeMake(width,height):用来产生CGSize,
CGSize size = CGSizeMake(40.0,50.0); //产生宽40、高50大小的区域
CGRectMake(x,y,width,height):用来产生CGRect,
CGRect rect = CGRectMake(0,0,320,240); //在(0,0)的位置产生一块320X240的区域
CGSizeEqualToSize(size1,size2):用来比较两个CGSize是否相同
CGSize size1 = CGSizeMake(100,200); CGSize size2 = CGSizeMake(200,300); BOOL isEqual = CGSizeEqualToSize(size1,size2);
结果返回NO。
CGRectContainsPoint(rect,point):用来检查变量point是否在rect所包含的区域内,
CGPoint point = CGPointMake(10,10); CGRect rect = CGRectMake(5,5,30,30); BOOL containsPoint = CGRectContainsPoint(rect,point);
结果返回YES.
CGRectGetMinX(rect)和CGRectGetMinY(rect):分别取得区域rect左上角的X,Y坐标
CGRectGetMidX(rect)和CGRectGetMidY(rect):分别用来取得区域rect的中心点的X,Y坐标
CGRectGetMaxX(rect)和CGRectGetMaxY(rect):分别用来取得区域rect右下角的X,Y坐标
定义一个UIView
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,480)];
上述的界面大小即定义为由原点(0,0)算起、宽度320,高度480的区域。除了使用CGRectMake来定义UIVIew的大小以外,在IOS里面还定义了几个特殊的CGRect可以让你直接使用:
CGRectNull:对象可以用nil来设置为控制,那么CGRect呢?答案是使用CGRectNull这个敞亮,而要判断一个CGRect是否为空值,并非简单地使用null或nil来判断,这是因为CGRect是一个C的结构,而非指针对象,这时候应该要使用CGRectNull()函数来判断。
CGRectZero:定义了一个大小为0的区域。这个敞亮用于并不在乎UIView的大小的情况,例如在UITableViewCell这个类里面,我们常会使用以下代码。
UITableViewCell *cell = [[UITableViewCell alloc] iniWithFrame:CGRectZero reuseIdentifier:MyId];
由于后续IOS会去调整所产生的这个控件的大小,所以,我们并不需要自己去计算该控件的大小。在这种情况下,只要传入CGRectZero就可以了。
CGRectInfinite:如果要产生一个无穷大得区域,那么久可以使用这个常量。可以试着将他的width与height输出到控制台来看,那将是个超出屏幕大小好几倍的空间。
相关文章推荐
- UITableView cell的重复使用
- JSP中 request.getRealPath("/xx/yy") 方法提示已经过时的替代方法
- android开发---ndk-build不自动删除外部库
- easyui datagrid使用
- 将Fresco源码导入到Android Studio,Build失败的解决办法
- 百度UEditor本地化配置 笔记
- hashmap先按照value从大到小排序,value相等时按照key从小到大排序
- 32/64位平台printf uint64的方法
- iOS开发之有趣的UI —— 自定义不等高cell
- Wndows UI设计官方文档
- UI优化技巧:使用layoutopt进行布局优化
- UIPageViewController使用示例
- UI优化技巧:使用ViewStub
- 定义Iterator遍历器取出set中的key,然后通过key的值在map中取出对应value值
- IOS每天15个注意点系列之UI-帧动画与图片浏览
- StringBuffer和StringBuilder
- UVALive 5031 Graph and Queries (Treap)
- CF #296 (Div. 1) B. Clique Problem 贪心(构造)
- Implement Stack using Queues -- leetcode
- UITableViewCell