UIView视图在IB中创建的理解

转载 2015年11月19日 16:18:09

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。


相关文章推荐

Auto Layout: IB和代码结合使用约束,以及约束在UIView动画中的改变

如果您对Auto Layout还不是很了解,ta

ios学习笔记(3) IB相关概念理解

在iphone的开发中利用 Interface Builder 工具节省了开发时间提高了开发效率。下面就是我对IB这个工具的一点理解:   1、IB可以看成是Model跟View之间的桥梁,负责vi...
  • wudiwo
  • wudiwo
  • 2012-07-20 08:51
  • 3103

UIView视图层次操作

//UIView //hiden removeFormSuperview release //看不见 会被销毁,将该对象从响应者链中删除, ...

UIStackView 对UIView视图管理

UIStackView 对UIView子视图进行管理 ,对原片进行缩放 首先,建立一些视图,将视图放在数组中: NSMutableArray *array = [[NSMutableArray ...

IOS开发UI-------UIView(视图)

UIView 特别注意:UIView是所有控件的父类以下是view得各种属性设置(背景颜色,tag值,设置圆角,位于此view之下的view是否遮盖,边框大小,边框颜色)UIView *aView ...

窗口与视图UIScreen and UIView

窗口与视图

UI_UIView(视图)

UIView "AppDelegate.h" #import @interface AppDelegate : UIResponder UIApplicatio...

iphone 开发 窗口(UIWindow) 与视图(UIView)之间以及整个程序间的关系,深层解析

窗口和视图是为iPhone应用程序构造用户界面的可视组件。窗口为内容显示提供背景平台,而视图负责绝大部分的内容描画,并负责响应用户的交互。 和Mac OS X一样,iPhone OS通过窗口和视...

视图UIView的frame、bounds与center属性

UIView类中定义了三个属性,分别是frame、bounds与center属性:@property(nonatomic) CGRect frame; @property(nonatomic) C...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)