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中创建的理解相关推荐

  1. swift视图容器_如何使用IBDesignable在Swift中创建漂亮的,可重复使用的渐变视图...

    swift视图容器 by Lee Dowthwaite 通过李道思韦特 如何使用IBDesignable在Swift中创建漂亮的,可重复使用的渐变视图 (How to create a beautif ...

  2. 如何在SQL Server中创建视图

    In this article, we will learn the basics of the view concept in SQL Server and then explore methods ...

  3. swift 自定义滑动视图_在Swift中创建一个向上滑动菜单视图(以编程方式)

    swift 自定义滑动视图 This is a quick tutorial on how to create a slide-up menu view in iOS 这是有关如何在iOS中创建向上滑 ...

  4. MFC小程序003------MFC使用WebBrowser组件,在对话框中创建滚动视图,动态创建一个静态文本控件并设置鼠标单击的消息响应...

    MFC小程序截图: 一.在MFC中简单使用WebBrowser的ActiveX插件的方法: 见博文:  http://blog.csdn.net/supermanking/article/detail ...

  5. power bi可视化表_在Power BI报表视图中创建可视化

    power bi可视化表 The Report View in Power BI can be used to create beautiful visualizations in Power BI. ...

  6. mysql中创建视图、索引

    数据库的三级模式两级映射: 存储文件------>基本表----->视图 内模式   ------->模式   ------>外模式 一.视图 1.什么是视图: 视图是从一个或 ...

  7. 如何在MySQL中创建视图

    CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW view_name [(column_list)] AS ...

  8. 在MySQL中创建视图的X种方式

    在本教程中,您将学习如何使用CREATE VIEW语句在MySQL中创建视图. CREATE VIEW语句简介 要在MySQL中创建新视图,请使用CREATE VIEW语句. 在MySQL中创建视图的 ...

  9. (Tekla Structures二次开发)在图纸中创建旋转的3D视图

    在图纸中创建指定零件的3D视图 private static bool CreateRotatedView(Beam myBeam, Drawing currentDrawing){DrawingHa ...

最新文章

  1. vue 弹窗时 监听手机返回键关闭弹窗(页面不跳转)
  2. android ScrollView滚动距离和判断滚动停止状态
  3. java: 找不到符号 符号: 方法 setOperation(java.lang.String) 位置: 类型为.......
  4. 解决新版本webpack vue-cli生成文件没有dev.server.js问题
  5. const int *p与int *const p的区别
  6. 《Pytorch - 线性回归模型》
  7. 从JVM的角度看JAVA代码1
  8. 分享30个网页设计色彩搭配的优秀案例
  9. AcWing 828. 模拟栈
  10. JAVAIO流经验总结
  11. OFDM插入导频过程详解
  12. 禅修程序员十诫 [译文]
  13. 产品 • B端和C端产品经理有什么区别?
  14. IDEA设置一键导包
  15. eSDK 华为ICT能力开放平台
  16. k8s中配置namespace的最小和最大内存
  17. 用unbound搭建简单的DNS服务器
  18. HDU 4466 Triangle(12年成都)
  19. App Store里“简书”app的评价分析
  20. php导出表格是乱码怎么办,数据库导出excel表格是乱码怎么办-Excel表格乱码问题怎么解决?...

热门文章

  1. (附源码)计算机毕业设计SSM英语四六级在线学习系统
  2. f-AnoGan阅读笔记
  3. 攻防世界 来自银河的信号
  4. 你离成为特工,只差一种“用手指打电话”的神功
  5. 基于模型预测控制(自带的mpc模块)和最优控制理论的Carsim与Matlab/simulink联合仿真实现汽车主动避撞和跟车功能
  6. ComputerWorld 的 Richi Jennings
  7. zeit_Zeit风格的Vue实现
  8. Java 处理字符串中的敏感词 配置模式
  9. IDEA 打包Web项目为war包
  10. Redis——持久化之AOF