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_UI_UIView父子视图自动缩放

  • 2015年05月24日 17:59
  • 426B
  • 下载

【UI进阶】关于IB的理解,不知道这样是否可以

main.storyboard里面通过拖动创建的所有控件都是一个对象,这些对象都有对应的类,比如按钮的类是UIButton,视图View的类是UIView。我们把我们拖动的控件(比如视图)绑定到我们自...

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

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

Xcode9学习笔记61 - 检测UIView视图动画的结束事件

override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after l...

iOS UIView之间常用视图之间切换方式

一:进入下\后一个View A:insertSubView系列:(注意,如果你新增视图不够大,则遮不住上一层视图,即前后2个视图都存在,当然你可以做透明来查看所有,与二A对应)     – add...
  • saw471
  • saw471
  • 2016年04月06日 18:35
  • 2832

Xcode 用lldb命令po(print-object)打印UIView的视图层级

UIView有一个私有方法: recursiveDescription 这个方法可以显示出当前视图的详细层级,可以在代码中直接调用,也可以在GDB中调用,在GDB中调用时需要借助另一个GD...

UIView 简介(六)视图几何结构和坐标系统 包括frame, bounds和center属性之间的关系

UIKit的默认坐标系统把原点设置在左上角,两条轴往下和右扩展。做标志被表示为浮点数,这样允许内容的精确布局和定位而不管底层的屏幕。 Figure1-4展示了相对于屏幕的坐标系统。除了屏幕坐标系统窗...
  • czcdms
  • czcdms
  • 2015年03月25日 17:15
  • 402

iOS UIView视图的图层控制

1、添加视图      insertSubview:atIndex:   //放在子视图数组的具体索引位置      insertSubview:aboveSubview:   //某个子...
  • saw471
  • saw471
  • 2016年04月06日 18:25
  • 1928

IOS UIView之间常用视图之间切换方式

在IOS开发中,经常遇到两个View之间互相切换,列举下各种方式,但是下面每种方式都要自己灵活运用,不一定就是进入下一个、后一个必须用“一”里面的方式。 一:进入下\后一个View A:ins...
  • MarkBoo
  • MarkBoo
  • 2013年11月08日 22:13
  • 414
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UIView视图在IB中创建的理解
举报原因:
原因补充:

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