转自:http://www.cnblogs.com/china-ldw/p/3533896.html

在做ios应用开发的过程,难免遇到要创建 子view 和 自定义view的时候,归根到底,我们需要得到一个UIView;

要得到这个UIView,大致有三种方法:

1,创建一个UIViewController,带上一个XIB,得到的UIView为 UIViewController.view;

2,创建一个XIB,然后直接load这个XIB;代码如下

NSArray *nibView =  [[NSBundlemainBundle] loadNibNamed:@"xib文件名字"owner:self options:nil];   UIView *view = [[nibView objectAtIndex:0] retain];

3,创建一个继承于UIView的类,在.h和.m文件用代码写;

这三种的方法,相信大家大致有个优劣判断;

我这里用到的是一种结合了三者的方法:

  • 用UIView的类关联XIB;

这个方法网上也有多种实现方法。我这里再提供一种:

1,创建一个继承于UIView的类MTTestView,这里有了MTTestView.h和MTTestView.m文件;

2,创建一个XIB,命名为MTTestView.xib;

3,打开MTTestView.xib,在File's Owner设置Class为UIViewController;

设置rootView的Class为你创建的类名MTTestView;

这样就将类和XIB关联起来了;最后我们要load这个view了.

这里的load方法我做成了一个category(因为用到的地方比较多):

UIView+LoadFromNib.h

1 #import <UIKit/UIKit.h>2 3 @interface UIView (LoadFromNib)4 5 + (id)loadFromNib;6 7 @end

UIView+LoadFromNib.m

 1 #import "UIView+LoadFromNib.h" 2  3 @implementation UIView (LoadFromNib) 4  5 + (id)loadFromNib 6 { 7     id view = nil; 8     NSString *xibName = NSStringFromClass([self class]); 9     UIViewController *temporaryController = [[UIViewController alloc] initWithNibName:xibName bundle:nil];10     if(temporaryController)11     {12         view = temporaryController.view;13     }14     return view;15 }16 17 @end

最后,用法为MTTestView *view = [MTTestViewloadFromNib];这样就得到了我们想要的view了;

到这里,还没完。创建文件,设置XIB这些不需要动脑且重复的体力活,不应该要人来做,交给电脑就行了。

这里就涉及到了xcode的文件模板了,关于创建详解,请自行google,参考如下

http://www.cnblogs.com/powerauras/p/3358129.html

根据上文中的要求,我们要创建一个带xib的UIView(这里最终目的)。

1,首先打开终端,找到xcode ios模板并打开:命令为

open /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates(这是我Mac上的路径)

进入Objective-C class.xctemplate目录下;打开TemplateInfo.plist

在Options->Item3->RequiredOptions->cocoaTouchSubclass中加一个UIView(原始的只有UIViewController为UITableViewController);

相信大家明白这样做的目的:让创建UIView时 With XIB for user interface 这个选项可选;

最后一步:在Objective-C class.xctemplate目录下,添加一个目录UIViewwithXIB

这里边就是我们创建的UIViewwithXIB模板了;当然需要修改___FILEBASENAME___.xib了;(上文中已提到,不重复了);

附上示例:https://github.com/ludawei/MTTestView/tree/master

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

Xcode5 创建模板和UIView 关联XIB相关推荐

  1. (zabix) python创建模板 监控项关联模板、触发器关联模板

    实际上从主机进入监控项界面,显示的才是真正的主机id 创建一个模板对应代码(可以用csv生成,用for循环) 相关参数: # -*- coding: utf-8 -* # -*- coding: gb ...

  2. 前嗅ForeSpider教程:创建模板

    今天,小编为大家带来的教程是:如何在前嗅ForeSpider中创建模板.主要内容有:模板的概念,模板的配置方式,模板的高级选项,具体内容如下: 一,模板的概念 模板列表的层级相当于网页跳转的层级.模板 ...

  3. Django模板、配置文件、静态文件及案例实现(创建模板、设置模板查找路径、模板接收视图传入的数据、模板处理数据、BASE_DIR、DEBUG、本地语言与时区、App应用配置)

    1.Django模板 网站如何向客户端返回一个漂亮的页面呢? 漂亮的页面需要html.css.js. 可以把这一堆字段串全都写到视图中, 作为HttpResponse()的参数,响应给客户端. 存在的 ...

  4. 动态创建模板列并绑定数据(GridView,Repeater,DataGrid)

    要创建动态模板,请创建以后需要时可实例化的模板类. 创建模板类 创建实现 System.Web.UI.ITemplate 接口的新类. 您也可以将值传递到类的构造函数,类可以使用该值来确定要创建的模板 ...

  5. 圆形卡尺测量后创建模板

    read_image (Image, 'QQ图片20201113111404.jpg') dev_close_window () dev_open_window_fit_image (Image, 0 ...

  6. 创建模板_在 GNOME 中创建文档模板 | Linux 中国

    导读:制作模板可以让你更快地开始写作新的文档. 本文字数:1305,阅读时长大约:1分钟https://linux.cn/article-12699-1.html作者:Alan Formy-duval ...

  7. woocommerce分类页面模板_Word排版之道1:学会创建模板,事半功倍

    排版第一步,最好的做法是先创建模板.创建模板的主要目的是为重复创建同类型的文档奠定基础.对于偶尔制作一次会议通知或包含几行内容的文档的人而言可忽略,但学会创建模板仍然会很有帮助,其最大的好处是可以建立 ...

  8. Linux创建模板封装虚拟机

    本节介绍了封装(seal) Linux 虚拟机和 Windows 虚拟机的方法.封装就是在基于虚拟机创建模板前,把只对特定虚拟机有效的信息删除的过程.这可以防止在通过同一个模板创建多个虚拟机时,相同的 ...

  9. ABBYY FlexiCapture Engine 10.0:创建模板识别的新工具

    实现数据提取快速配置(适用于简单类型的文档)是ABBYY FlexiCapture Engine 10.0这个软件开发工具包的一大特点.为了让用户可以充分使用该功能,ABBYY FlexiCaptur ...

  10. OC 教程 UI快速创建模板

    一直觉得自己写的不是技术,而是情怀,一个个的教程是自己这一路走来的痕迹.靠专业技能的成功是最具可复制性的,希望我的这条路能让你们少走弯路,希望我能帮你们抹去知识的蒙尘,希望我能帮你们理清知识的脉络,希 ...

最新文章

  1. CentOS7修改时区,你会吗?
  2. 分布式架构的对比-IBM XIV
  3. php设置at定时,laravel定时任务
  4. 软件工程小组问世第六章之概要设计青铜篇
  5. sklearn-GridSearchCV调节超参数
  6. 【python图像处理】彩色映射(续篇)
  7. 组播理论知识的补充笔记
  8. Tip of the day的bug
  9. SABAPDEMOS 这个包下好多好玩儿的,可以看看
  10. Linux磁盘管理之df命令详解和使用实例(查看磁盘空间占用情况)
  11. 玩转群晖NAS套件系列一:cloud sync套件的安装与使用保姆级教程!
  12. vtd xml java_新兴XML处理方法VTD-XML介绍
  13. HTTP长连接和Websocket
  14. SENT:Sentence-level Distant Relation Extraction via Negtive Training-ACL2021
  15. php判断是否夏令时,关于php:时区和夏令时问题
  16. 课程设计感想(大二)
  17. Discuznbsp;x2.5单页制作的教程
  18. jquery中当点击子节点时如何实现删除父节点的问题
  19. 探索在原生网页中使用自定义数据属性
  20. 计算机配置好坏怎么看,怎么看电脑配置,电脑配置好坏信息一目了然-腾讯电脑管家...

热门文章

  1. GAN原理,优缺点、应用总结
  2. 杂谈随想第002篇:博客访问量破万的想法
  3. 所有的 Python 库都整理
  4. 一种Ansys安装 “Ans.SceneGraphChart.SceneGraphAddin. The software will exit.“报错解决方案
  5. cherry-pick 用法
  6. Python jiba 分词
  7. Android 项目中依赖项目、依赖库、依赖module中的jar包(第三方库)
  8. Photoshop-置换贴图-原理
  9. 第7章概率和样本:样本均值的分布
  10. android设置自动亮度,android5.1 自动亮度调节简析