IOS之UI--小实例项目--添加商品和商品名(使用xib文件终结版) + xib相关知识点总结

时间:2022-04-11 12:24:50

添加商品和商品名小项目(使用xib文件终结版)

小贴士:博文末尾有项目源码在百度云备份的下载链接。


IOS之UI--小实例项目--添加商品和商品名(使用xib文件终结版) +  xib相关知识点总结

IOS之UI--小实例项目--添加商品和商品名(使用xib文件终结版) +  xib相关知识点总结

IOS之UI--小实例项目--添加商品和商品名(使用xib文件终结版) +  xib相关知识点总结

IOS之UI--小实例项目--添加商品和商品名(使用xib文件终结版) +  xib相关知识点总结

IOS之UI--小实例项目--添加商品和商品名(使用xib文件终结版) +  xib相关知识点总结

IOS之UI--小实例项目--添加商品和商品名(使用xib文件终结版) +  xib相关知识点总结

IOS之UI--小实例项目--添加商品和商品名(使用xib文件终结版) +  xib相关知识点总结

IOS之UI--小实例项目--添加商品和商品名(使用xib文件终结版) +  xib相关知识点总结

xib相关知识点总结


01-基本使用

一开始使用xib的时候,如果要使用自定义view的代码,就需要将xib的class设置为那个view的类型,然后我觉得就可以直接使用了,其实不是这样的,还需要代码加载nib文件,并且最后返回数组对象才能使用哦。

关于XIb就看截图ppt 外加截图代码 可以用在自定义控件上

加载xib文件的过程

xib文件 -编译xib成功-> nib文件

加载nib文件的第一种方式

NSArray* array  = [[[NSBundle mainBundle]
loadNibNamed:NSStringFromClass(self) owner:nil options:nil] lastObject]

加载nib文件的第二种方式

UINib* nib = [UINib nibWithNibName:@"Test" bundle:[NSBundle mainBundle]];
NSArray* array = [nib instantiateWithOwner:nil options:nil];

在第二种方式中bundle:后面的参数可以为nil,如果为nil,默认也是会加载NSBundle的mainBundle方法返回的值。

返回的是数组对象,因为加载xib获取的控件可能是多个,所以默认返回的是存储这些多个控件的数组对象

02-xib和storyboard对比:

  • 共同点:
    • 都用来描述软件界面
    • 都用Interface Builder工具来编辑
    • 本质都是转换成代码去创建控件
  • 不同点
    • xib是轻量级的,用来描述局部的UI界面
    • storyboard是重量级的,用来描述整个软件的多个界面,并且能展示多个界面之间的跳转关系

03-拖线来引用子控件

使用xib总结步骤:

新建xib文件,设置好控件
新建两个继承UIView的类,类名假设为MyUIView
然后将xib文件的类型设置为MyUIView
然后为MyUIView添加模型对象的属性,并为这个属性写好set方法
托线,把xib的控件连接到MyUIView上,最好拖放在类扩展里。

有PPT的话,可以直接拿来做笔记

04-xib的加载原理

xib的加载过程

加载xib文件 首先解析xib文件的根节点,并通过class设置创建对应的对象 然后解析属性尺寸中的尺寸设置frame ...等等相关属性的设置... 遇到子控件,同样创建子控件,并设置属性,最后被add到父控件

对于xib文件中,如果层级关系是:

  • UIView 可以通过设置class绑定到自定义的类文件
    • UILabel 子控件也可以通过设置class绑定到自定义的类文件
    • UIImageView 最后xib的整个组合控件各个部分都可以自定义
 伪代码:
1 -(void)loadXib
2 {
3 父控件类名* 父控件别名 = [[父控件类名 alloc] init];
4 父控件别名.frame = CGRectMake(0,0,70,90);
5
6 子控件类名* 子控件别名 = [[子控件类名 alloc] init];
7 ......
8 }

xib的加载过程

1、解析底层的父控件Class,确定类型之后通过这个类型alloc+init创建对象
2、通过xib对应的attribute设置属性,进行属性赋值,比如 别名.frame = frame值
3、接着有子控件的话,就像创建父控件一样创建子控件,包括设置好相关属性,最后添加进父控件。

05-xib的注意点

IOS之UI--小实例项目--添加商品和商品名(使用xib文件终结版) +  xib相关知识点总结

IOS之UI--小实例项目--添加商品和商品名(使用xib文件终结版) +  xib相关知识点总结
 
IOS之UI--小实例项目--添加商品和商品名(使用xib文件终结版) +  xib相关知识点总结
 
(添加商品和商品名)项目备份百度云链接:http://pan.baidu.com/s/1pJDzpqF 密码:rbsx
 
 
 
 
 

IOS之UI--小实例项目--添加商品和商品名(使用xib文件终结版) + xib相关知识点总结的更多相关文章

  1. IOS之UI--小实例项目--添加商品和商品名(纯代码终结版)

    前言:这个小实例项目是完完全全以MJ视频传授的优化方案一步一个思路从零开始敲出代码的,而且每一步都有思路,都有逻辑所以然.敲代码讲究思路,我个人不建议记忆太多东西,反正我记性很差的. 小贴士:文章末尾 ...

  2. 在iOS开发中,给项目添加新的.framework

    首先需要了解一下iOS中静态库和动态库.framework的概念 静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用. 什么时候我 ...

  3. iOS开发——UI基础-自定义构造方法,layoutSubviews,Xib文件,利用Xib自定义View

    一.自定义构造方法 有时候需要快速创建对象,可以自定义构造方法 + (instancetype)shopView { return [[self alloc] init]; } - (instance ...

  4. IOS之UI--小实例项目--添加商品和商品名

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  5. IOS开发之小实例--创建一个简单的用于视频录制和回放的应用程序

    前言:还是看了一下国外的入门IOS文章:<Create a Simple App for Video Recording and Playback>,主要涉及视频录制和回放的功能的基本实现 ...

  6. IOS开发之小实例--使用UIImagePickerController创建一个简单的相机应用程序

    前言:本篇博文是本人阅读国外的IOS Programming Tutorial的一篇入门文章的学习过程总结,难度不大,因为是入门.主要是入门UIImagePickerController这个控制器,那 ...

  7. iOS开发:为xcode项目添加git仓储

    现在apple官网下载Command Line Tools 对应mac版本和xcode版本,记录地址:https://developer.apple.com/downloads/ 找到mac的终端,c ...

  8. 【UI】为项目添加类似于淘宝筛选列表勾选的ui-choose

    jQuery下载的地址:http://www.htmleaf.com/jQuery/Form/201512182916.html GitHub地址:https://github.com/wangxin ...

  9. python requests库网页爬取小实例:亚马逊商品页面的爬取

    由于直接通过requests.get()方法去爬取网页,它的头部信息的user-agent显示的是python-requests/2.21.0,所以亚马逊网站可能会拒绝访问.所以我们要更改访问的头部信 ...

随机推荐

  1. window&period;innerWidth、document&period;body&period;clientWidth和html的大小的区别

    首先,我们知道document.body指向的就是body元素,如此,我们就可以以document.body来获取body的大小.何以知之?如下代码: var body = document.quer ...

  2. vim&colon; vs sp 调整窗口高度和宽度

    转自:http://www.cnblogs.com/xuechao/archive/2011/03/29/1999292.html vim多窗口有时候需要调整默认的窗口宽度和高度,可以用如下命令配合使 ...

  3. Linux学习笔记(13)权限管理

    1 ACL权限 (1)简介和开启方式 ACL(Access Control List)权限的目的是在提供传统的owner.group.others的read.write.execute权限之外的局部权 ...

  4. node&period;js整理 03文件操作-遍历目录和文本编码

    遍历目录 递归算法 遍历目录时一般使用递归算法,否则就难以编写出简洁的代码. 递归算法与数学归纳法类似,通过不断缩小问题的规模来解决问题 function factorial(n) { if (n = ...

  5. python第十三天

    这几天在欺负docker兽,很是开心,但是没想到领导突然让我去殴打openstack兽,完全没有兴趣嘛,毕竟前一阵一直在吊打它,当然啦,对于愚蠢的人类而言openstack兽是十分强大的,不过对于北方 ...

  6. vs vsvim viemu vax 备忘

    使用gt和gT往返标签 gd:到达光标所在处函数或者变量的定义处. *:读取光标处的字符串,并且移动光标到它再次出现的地方. #:和上面的类似,但是是往反方向寻找. /text:从当前光标处开始搜索字 ...

  7. wemall app商城源码Android数据的SharedPreferences储存方式

    wemall-mobile是基于WeMall的Android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享wemall app商城源码Android数据 ...

  8. Java排序算法之归并排序

    基本思想: 归并排序利用分治法,先将一个序列分成一个个子序列,然后对子序列进行排序,再把有序子序列合并为整体有序序列. 图片来自于http://www.cnblogs.com/shudonghe/p/ ...

  9. 【Python】 系统配置&sol;进程等信息查看 psutil

    psutil 原以为psutil只是跟进程有关的一个模块,没想到它其实提供了从CPU到内存各种各样的信息,十分IMBA.记录一下 我用了pip install psutil安装的这个模块,不过路中遇到 ...

  10. JAVA-重载(overload)和重写(overrite)

    1.重载发生在同一个类中.有多个方法名相同,但是参数列表不同(包括参数个数和参数类型),和返回值无关,权限修饰符也无关. 2.重写(即覆盖)发生在子类和父类中.子类和父类的方法名.参数列表相同:子类的 ...