UIView视图在IB中创建的理解
http://www.cnblogs.com/lovecode/articles/2236975.html
Interface Builder在创建视图中的作用
Cocoa采用MVC模式,所以在创建一个UIView时,往往由构建一个UIViewController视图控制器类开始,在XCode中创建时勾选With Xib for user interface可以同时创建一个xib文件来描述和可视化控制页面控件。(不足:Xib对象违反面向对象的原则,我们无法直接继承一个xib对象)。
注:如果用代码布局页面控件,则先要初始化,然后使用addSubView:添加子视图方法将其加入到父视图之中。(当然,通过类的继承实现子类化编码来布局控件虽然相对繁琐,但却可方便地重用代码)。示例代码:
1 UILabel* titleLabel =[[UILabel alloc] initWithFrame :CGRectMake(x, y, width, height)]; 2 [self.view addSubView : titleLabel];
另外IB还将拖放到界面里的控件和UIViewController视图控制器绑定关联起来。有两种连接,一、将UIViewController类中的成员变量和界面上的控件绑定,即IBOutlet。IBOutlet将界面与对象相连,实际上充当实例变量的替代者。默认情况下,IBOutlet的类型为id。二、绑定控件的事件到UIViewController中,即IBAction。IBAction是IB创建的界面可以调用的方法。它们指定目标/动作对,将来自控制视图的回调发送给对象。
1. 在iOS中UIWindow的父类是UIView。app程序是一个窗口,多个视图。
2. UIView的作用:绘图和动画,视图负责对其所属的矩形区域绘图、布局和子视图管理、事件处理、可以接收触摸事件、事件信息的载体等等。
3. UIViewController负责创建其管理的视图及在低内存的时候将它们从内存中移除。还为标准的系统行为进行响应。
4. layoutSubViews可以在自己定制的视图中重载这个方法,用来调整子视图的尺寸和位置。
5. UIView的setNeedsDisplay和setNeedsLayout方法都是异步执行的。而且setNeedsDisplay会自动调用(前提:UIView初始化时要设置好rect的大小)drawRect:方法,获取到UIGraphicsGetCurrentContext从而可进行绘图操作;而setNeedsLayout会默认调用layoutSubViews方法,就可以处理子视图中的一些数据。
因此:setNeedsDisplay方便绘图,而layoutSubViews方便处理数据显示。
关于在包含xib对象的继承中要注意的问题:
1. IB中设计的xib对象只是持久化对象,而永远不可能是真正的类。
2. 若是对xib对象做自定义的初始化动作,要重载initWithNibName:bundle:方法,并确保调用[super initWithNibName:bundle:]方法。
3. 重写的父类方法代码中引用到的xib对象,必须用“self.属性名”的形式引用,不要直接以“属性名”的形式引用。否则属性指向的是父类的xib对象,而不是子类的xib对象。
4. 父类方法中引用到的成员变量,直接用“属性名”而不是“self.属性名”的形式引用。
5. 父类中,对于属性别名,必须使用“self.属性名”的形式引用,不能以“属性别名”的形式引用。
6. 子类使用不同的xib文件,则所有的IBOutlet必须重新声明并连接;而对于重新声明的IBAction可以不用实现动作,默认使用父类已实现的Action。
UIView视图在IB中创建的理解相关推荐
- swift视图容器_如何使用IBDesignable在Swift中创建漂亮的,可重复使用的渐变视图...
swift视图容器 by Lee Dowthwaite 通过李道思韦特 如何使用IBDesignable在Swift中创建漂亮的,可重复使用的渐变视图 (How to create a beautif ...
- 如何在SQL Server中创建视图
In this article, we will learn the basics of the view concept in SQL Server and then explore methods ...
- swift 自定义滑动视图_在Swift中创建一个向上滑动菜单视图(以编程方式)
swift 自定义滑动视图 This is a quick tutorial on how to create a slide-up menu view in iOS 这是有关如何在iOS中创建向上滑 ...
- MFC小程序003------MFC使用WebBrowser组件,在对话框中创建滚动视图,动态创建一个静态文本控件并设置鼠标单击的消息响应...
MFC小程序截图: 一.在MFC中简单使用WebBrowser的ActiveX插件的方法: 见博文: http://blog.csdn.net/supermanking/article/detail ...
- power bi可视化表_在Power BI报表视图中创建可视化
power bi可视化表 The Report View in Power BI can be used to create beautiful visualizations in Power BI. ...
- mysql中创建视图、索引
数据库的三级模式两级映射: 存储文件------>基本表----->视图 内模式 ------->模式 ------>外模式 一.视图 1.什么是视图: 视图是从一个或 ...
- 如何在MySQL中创建视图
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW view_name [(column_list)] AS ...
- 在MySQL中创建视图的X种方式
在本教程中,您将学习如何使用CREATE VIEW语句在MySQL中创建视图. CREATE VIEW语句简介 要在MySQL中创建新视图,请使用CREATE VIEW语句. 在MySQL中创建视图的 ...
- (Tekla Structures二次开发)在图纸中创建旋转的3D视图
在图纸中创建指定零件的3D视图 private static bool CreateRotatedView(Beam myBeam, Drawing currentDrawing){DrawingHa ...
最新文章
- vue 弹窗时 监听手机返回键关闭弹窗(页面不跳转)
- android ScrollView滚动距离和判断滚动停止状态
- java: 找不到符号 符号: 方法 setOperation(java.lang.String) 位置: 类型为.......
- 解决新版本webpack vue-cli生成文件没有dev.server.js问题
- const int *p与int *const p的区别
- 《Pytorch - 线性回归模型》
- 从JVM的角度看JAVA代码1
- 分享30个网页设计色彩搭配的优秀案例
- AcWing 828. 模拟栈
- JAVAIO流经验总结
- OFDM插入导频过程详解
- 禅修程序员十诫 [译文]
- 产品 • B端和C端产品经理有什么区别?
- IDEA设置一键导包
- eSDK 华为ICT能力开放平台
- k8s中配置namespace的最小和最大内存
- 用unbound搭建简单的DNS服务器
- HDU 4466 Triangle(12年成都)
- App Store里“简书”app的评价分析
- php导出表格是乱码怎么办,数据库导出excel表格是乱码怎么办-Excel表格乱码问题怎么解决?...