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
  • shinancao666
  • shinancao666
  • 2014-07-06 13:49:35
  • 3181

Swift-UIView的创建和使用

//创建View         let view1 = UIView()         let view2 = UIView(frame: CGRectMake(20, 120, 100, 1...
  • wwc455634698
  • wwc455634698
  • 2016-09-21 09:06:42
  • 1630

对于要不断使用的uiview一般通过懒加载的形式,而不是创建一个销毁一个

对于要不断使用的uiview一般通过懒加载的形式,而不是创建一个销毁一个
  • baohanqing
  • baohanqing
  • 2016-03-28 10:48:32
  • 706

IOS UIView 之类方法篇 Class Methods

接上篇UIView属性篇,从这篇开始我们就开始进入 UIView 方法的旅途中了 首先从类方法开始,本篇就总结一下类方法 UIView 类方法  Class Methods 类方法基本上...
  • u012884714
  • u012884714
  • 2014-01-19 20:13:54
  • 3356

IOS开发 使用XIB自定义一个UIView

原文:http://blog.csdn.net/developer_zhang/article/details/8953640 1 前言 Xcode中集成的BI中的控件十分...
  • sqc3375177
  • sqc3375177
  • 2013-11-19 11:23:28
  • 63148

iOS中的模糊视图效果

在iOS开发中, 为了使项目看起来更美观, 或者对图片做一些特殊处理, 经常会用到模糊视图效果, 下面就简要的说一说iOS开发中模糊视图效果的使用.CoreImage中的模糊滤镜直接上代码#impor...
  • Devin_Zhan
  • Devin_Zhan
  • 2015-12-01 21:29:03
  • 1847

谈谈iOS UIView 隐藏和创建的内存消

项目中经常有很多的view需要创建和替换。而且view之间也是经常切换。那么你是选择把不用的view removeFromSuperView 还是选择setHidden呢? 看代码 先创建...
  • dizhu1992
  • dizhu1992
  • 2016-03-16 16:32:44
  • 1407

实现视图嵌套

1.说明 一个UIView里面可以包含多个Subview,Subview之间有阶层关系 新增 [Subview addSubview:Subview] 移除 [Subview removeFromSu...
  • bjourney
  • bjourney
  • 2015-06-21 23:09:25
  • 1052

UIView操作:插入添加置顶,判断一个视图是否为子视图view

for (int>0;>3; i++) {         UIView *v = [[UIView alloc] initWithFrame:CGRectMake(30*i, 30*i+50...
  • u012795030
  • u012795030
  • 2013-12-25 17:10:36
  • 5054

`初学iOS--UIView及其子类

一个iOSApp是由各种各样的UI控件+业务逻辑和算法组成的。 那么,什么是控件呢? 屏幕上所有的UI元素都叫做控件,也有人叫做视图,组件。按钮(UIButton)、文本(UILabel)都是控件 U...
  • Summer_shining
  • Summer_shining
  • 2016-08-01 19:18:53
  • 685
收藏助手
不良信息举报
您举报文章:UIView视图在IB中创建的理解
举报原因:
原因补充:

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