iOS回顾笔记 ( 01 ) --- XIB和代码创建程序的对比

很多时候我们工作很久突然闲下来的时候,是不是也感到无聊过?这就是我现在的生活,不过闲一段时间也挺好,可以好好回顾一下自己以前学习iOS路上的点点滴滴,做到温故而知新。

且回顾、且整理记录、且分享。

一个简单的iOS小程序

简单实现一个小程序 --- “改变文字颜色”

Snip20170228_2.png

这个小程序很简单,实现步骤:

  • 所需元素:三个button,一个Label
  • 监听button的点击事件,做对应修改颜色功能

这个小Demo通常有两种实现方式,纯代码和XIB,下面介绍一下两者实现和区别:


纯XIB实现

这个直接上图吧

Snip20170228_5.png
  • 左边是Xib拖的Label和三个button
  • 右边是Xib拖线与代码进行关联和对应



纯代码实现


#import "ViewController.h"

@interface ViewController ()

@property (nonatomic, weak) UILabel *label;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    // 1.创建Label
    UILabel *label = [UILabel new];
    label.text = @"我是测试文字";
    label.textAlignment = NSTextAlignmentCenter;
    label.frame = CGRectMake(0, 50, self.view.frame.size.width, 50);
    self.label = label;
    [self.view addSubview:label];
    
    // 2.创建三个button
    UIButton *redBtn = [self creatBtnWithTitle:@"红" selector:@selector(redColor:)];
    redBtn.frame = CGRectMake(0, CGRectGetMaxY(label.frame), 375/3, 50);
    
    UIButton *greenBtn = [self creatBtnWithTitle:@"绿" selector:@selector(greenColor:)];
    greenBtn.frame = CGRectMake(375/3, CGRectGetMaxY(label.frame), 375/3, 50);
    
    UIButton *blueBtn = [self creatBtnWithTitle:@"蓝" selector:@selector(blueColor:)];
    blueBtn.frame = CGRectMake(375/3*2, CGRectGetMaxY(label.frame), 375/3, 50);
    
}

// 封装创建按钮的公共代码
- (UIButton *)creatBtnWithTitle:(NSString *)title selector:(SEL)selector
{
    UIButton *btn = [UIButton new];
    [btn setTitleColor:[UIColor greenColor] forState:UIControlStateNormal];
    [btn setTitle:title forState:UIControlStateNormal];
    [btn addTarget:self action:selector forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn];
    return btn;
}

// 红色按钮的点击事件
- (void)redColor:(id)sender {

    self.label.textColor = [UIColor redColor];
}

// 绿色按钮的点击事件
- (void)greenColor:(id)sender {

    self.label.textColor = [UIColor greenColor];
}

// 蓝色按钮的点击事件
- (void)blueColor:(id)sender {

    self.label.textColor = [UIColor blueColor];
}

这两种方式虽然都很简单,但是有点不同,下面总结一下各自的特点

  • XIB
    • 方便快捷,特别适用于局部UI的快速搭建
    • XIB拖线直观,但是多人开发容易暗含多种陷阱(例如:拖线的方法找不到;或者代码里面注释了,但是xib还是正常显示的,一点击就崩溃;或者一个控件连线多个方法,出现异常等)
    • 适用范围:
      • 适用于一些静态页面,如果每次UI都动态改变的还是代码为主。
    • XIB经典错误(运行过程中找不到对应方法)
Snip20170228_6.png
  • 纯代码
    • 相对麻烦,本来动动手拖个线的事,还要敲一些基础代码,效率低(不是指编译或运行效率)
    • 整洁易懂,如果代码清晰的话,看起来也是很整洁的。
    • 思路清晰,多人合作不易出现类似XIB或Storyboard那样的杂乱的连线的问题。
    • 动态UI的首选方式。

最后计算机在编译的过程中无论哪种方式实现都是转化成代码的方式,代码是万能的

  • 关于XIB里面的IBOutlet和IBAction
    • IBOutlet:声明插座变量,和XIB进行连线的标识,只有声明为IBOutlet属性才能跟XIB/StoryBoard中的控件连线
    • IBAction:从返回值角度看,等同于void,它也是和XIB进行连线的标识,只有声明为IBAction属性才能跟XIB/StoryBoard中的控件连线
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 引言 学到这里,xib给我带来的帮助已经很大了,最大的莫过于UI控件的创建、属性的赋值再也不用写代码,就UI开发来...
    二亮子阅读 7,301评论 41 82
  • 1.自定义控件 a.继承某个控件 b.重写initWithFrame方法可以设置一些它的属性 c.在layouts...
    圍繞的城阅读 3,510评论 2 4
  • 写在前面 我不算是个资深码农,有些iOS的编程经验。希望找到一种高效的方式来创作出自己的iOS应用。大家都知道纯代...
    五九楼阅读 14,571评论 3 40
  • iOS应用是非常注重用户体验的,在某些方面上应用的成功与否于UI界面是否漂亮,以及应用交互设计上有着非常重要的关系...
    相关函数阅读 28,840评论 6 53
  • 引言 之前说了xib的优缺点、如何应用、解决文件冲,算扫了xib学习上的一只拦路虎,现在我们就开始具体的学习一下x...
    二亮子阅读 10,978评论 7 38