文档章节

IOS xib局部界面 & 运用下载实例

卧龙小
 卧龙小
发布于 2014/12/24 23:54
字数 564
阅读 138
收藏 1

一 xib文件的使用

xib文件可以用来描述局部的UI界面


二 xib 文件创建方法

2.1 选择User Interface->Empty 后,点击下一步


2.2 输入名字,点击create 创建完毕


三 xib文件的加载

3.1 方法一
//该方法会创建xib中的所有对象,并且将对象按顺序放到objs数组中
NSArray *objs = [[NSBundle mainBundle] loadNibNamed:@"xibFileName" owner:nil options:nil];

 

3.2 方法二
//1.加载xib文件
UINib *nib = [UINib nibWithNibName:@"xibFileName" bundle:[NSBundle mainBundle]];
//bundle参数可以为nil,默认就是main bundle
UINib *nib = [UINib nibWithNibName:@"xibFileName" bundle:nil];

//2.创建对象
NSArray *objs = [nib instantiateWithOwner:nil options:nil];


3.3 注意
  1. 当把应用装到手机上时,xib文件会转换成nib文件

  2. xib所有对象的顺序是根据视窗的控件顺序排列的(如图)

    

    顺序为 1.App View  2.button  3.first,second



四 xib和storyboard的区别

xib storyboard 相同点
xib storyboard 不同点
都是用于软件界面 xib是轻量级的,描述局部的UI界面
都可用通过视窗编辑 storyboard是重量级的,用来描述整个软件的界面,并且可以展示界面之间的跳转关系



五 代码

运用下载实例:数据是通过网络抓取,写入plist 文件。

4.1 项目工程

    

4.2 xib 文件

4.3 代码
#import "ViewController.h"
#import "GMAppData.h"
#import "GMAppView.h"

@interface ViewController ()
@property(nonatomic,strong)NSArray *appDataArray;
@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    //    1.计数九宫格行数列数
    int appviewTotal = self.appDataArray.count;
    int appviewRowCount =3;
    int appwiewRolCount = appviewTotal/appviewRowCount+(appviewTotal%appviewRowCount!=0?1:0);
    
    
    //    2.九宫格appView 坐标
    CGFloat appviewW=80;
    CGFloat appviewH=80;
    CGFloat marginX = (self.view.frame.size.width-appviewRowCount*appviewW)/(appviewRowCount+1);
    CGFloat marginY = (self.view.frame.size.height-appwiewRolCount*appviewH)/(appwiewRolCount+1);
    
    
    for (int i =0 ; i<appviewTotal; i++) {
        
        
        //        3获取XIB
        //把读取XID的过程封装到 GMAppView 创建实例中
        GMAppView *appView = [GMAppView appViewNib];
        
        
        int row = i%appviewRowCount;
        int rol = i/appviewRowCount;
        CGFloat appviewX =marginX + row * (appviewW+marginX);
        CGFloat appviewY =marginY + rol * (appviewH+marginY);
        appView.frame = CGRectMake(appviewX, appviewY, appviewW, appviewH);
        [self.view addSubview:appView];
        
        //        4给子控件赋值
        GMAppData *appData = self.appDataArray[i];
        [appView setAppData:appData];
        
    }
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


/**
 *  数据延迟加载
 *
 *  @return
 */
-(NSArray *) appDataArray
{
    
    if (_appDataArray == nil) {
        NSString *path = [[NSBundle mainBundle] pathForResource:@"app.plist" ofType:nil];

        NSArray *array = [NSArray arrayWithContentsOfFile:path];
        
        NSMutableArray *mutableArray = [NSMutableArray arrayWithCapacity:array.count];
        for (NSDictionary *dic in array) {
            //把文件中的值,封装到GMAppData对象中
            [mutableArray addObject:[GMAppData appdataWithDic:dic]];
        }
        
        _appDataArray=mutableArray;
    }
    
    return _appDataArray;
}

@end


4.4 效果图


© 著作权归作者所有

卧龙小
粉丝 42
博文 146
码字总数 70107
作品 0
西城
程序员
私信 提问
加载中

评论(2)

卧龙小
卧龙小 博主

引用来自“JackLeeMing”的评论

能给出AppView的源码吗?我想知道AppView里面是如何处理xib的。
http://pan.baidu.com/s/1i3vlBjJ 看看
JackLeeMing
JackLeeMing
能给出AppView的源码吗?我想知道AppView里面是如何处理xib的。
iOS XIB使用Safe Area后在iOS9和10上面出现的问题和解决方案

本文由 送你的独白么 原创,转载请注明出处! 导语 普大喜奔,苹果爸爸在9.20号发布了新的iOS 11系统和iPhone手机,作为iOS 开发者,第一件事是什么,当然是买iPhoneX啦------我这个穷逼并不...

壹峰
2018/12/05
174
0
mac os安装xcode和ios sdk4.2版本

这两天刚刚使用mac系统,个人感觉比起windows7一个显著的优点就是关机速度特别快。当然在安装mac系统时,如果选择IT用户,很多开发系统也就自动安装好了,比如jdk、maven、svn,python的环境...

鉴客
2011/12/14
10.9K
3
使用 Interface Builder 兼容 iOS6 和iOS7

当你在更新你的App到iOS 7的平台时遇到最大的挑战之一就是确保不要遗忘那些还在使用iOS 6平台的用户,在此我们提供一些建议使你的App应用在iOS 6和iOS 7上同时保留视觉吸引力和技术功能. 此图...

isaced
2014/01/15
13.4K
12
旧工程适配iOS 6和iPhone 5的一些故事

2012-09-29 By dapps  旧工程适配iOS 6和iPhone 5的一些故事抢沙发 分类:iPhone开发 标签:iOS 6、iPhone 5、Retina、适配iOS 6、适配iPhone 5 国内最专业的APP开发者社区,dApps! 苹果每...

Orange1
2012/10/30
447
0
Xcode 4.5 正式版发布,支持10.8与iOS 6开发

在今天发布OS X 10.8.2和iOS 6的同时,苹果也推出了自家的开发软件Xcode 4.5正式版更新。 此次更新的内容包括: 支持 OS X 10.8 Mountain Lion 和 iOS 6的SDK OS X和iOS均可支持自动布局 新的...

oschina
2012/09/20
5.1K
13

没有更多内容

加载失败,请刷新页面

加载更多

OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
5
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
6
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
昨天
6
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
7
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部