首先提到了界面与代码分离的思想,让我不禁想起初中的时候微机课教的Front Page,我们当时学的是图像化的制作,几个简单的效果,这时候老师点开源代码让我们看,我们当时的反应就是wow,老师说高手做网页是直接敲代码的——这就是我对程序员的第一印象。
确实很高大上啊,而且一定很省资源,毕竟不需要用一个纽带把界面和代码连接,然而,它有两个坏处:一是不够直观,眼睛看代码都能看瞎了;再就是调整起来太麻烦。
所以乔老爷子推出了interface builder(简称IB)用来建立这个纽带,虽然会付出代价,但是值得。
那么,代码和界面是如何相互联系的呢?
“实例化”的过程:
开发时 “实例化” 运行时
代码: 类 ===> 类实例
界面: 模板(xib) ===> 界面对象
下面来讲outlet的概念。
概念:简而言之,outlet是一个带有ib outlet标记的变量。outlet connection 是在nib对象创建之后通过nib里的定义,在runtime的时候把reference存到outlet里,把它们关联起来的一个机制。这个关联建立起来之后,outlet就是这个对象的一个reference outlet了。
然后开始这个button的应用,和上一节课一样先把东西(Lable、Bottom等)拖到界面里,然后用右键拖动/左键+control拖动/右键点选来找到interface关联代码。
貌似以后熟练了,需要一下子把接口都列出来的时候,可以直接在代码区敲出interface,然后从右往左拖~
tips:UI主键一般用weak 引用,因为只要是它在界面显示,在view层次上一定有一个对它的引用,不需要在property上强(strong)引用了。除非需要让它的动态出现或溢出(这句话慢慢理解)。
这里还有一个需要注意的地方,那就是如果添加错误需要删除代码,务必把连接关系去掉,否则会crash。
由于代码的作业,也顺便研究了下代码创建UIButton,列出几个常用的:
//*创建一个圆角的名为delButton的按钮
UIButton *delButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
//*给定button在view上的位置
button1.frame = CGRectMake(20, 20, 280, 40);
//button背景色
button1.backgroundColor = [UIColor clearColor];
//设置button填充图片
//[button1 setImage:[UIImage imageNamed:@"btng.png"] forState:UIControlStateNormal];
//设置button标题
[button1 setTitle:@"点击" forState:UIControlStateNormal];
//*添加button到视图
[self.view addSubview:button];
//*响应“delete”事件
[delButton addTarget:self action:@selector(delete:) forControlEvents:UIControlEventTouchUpInside];
网友评论