IOS开发

有没有这种需求,自定一个panel,里面放了好几个控件,在多个页面用到这个panel。

解决这个问题有三条思路:

1.自己继承UIView写一个类,在这里面以代码的形式添加需要的控件,完成布局。

2.使用XIB布局文件完成布局

3.使用storyboard完成布局

在这三中方式中,1显得高端大气上档次,哗啦哗啦敲半天。虽然我是技术控,但是也很反感这纯粹的情怀。

     3以UIViewController满足不了我的需要,用起来不太方便。(也可能很好用,我不会用,求指点)

所以就讲解一下XIB如何自己组合实现控件,而且在这里也不讲前因后果的,循序渐进的搞半天,搞得头都晕,直接上最终用法。

用发分为一下三步:

1.新建一个继承自NSObject的类,用来存放自定义的XIB中的UIView。

a.为了方便这个类中添加一个类方法

+ (id)viewFromNibByName:(NSString *)name{

FileOwner2* owner = [FileOwner2new];

[[NSBundlemainBundle] loadNibNamed:nameowner:owner options:nil];

   return owner.view;

}

2.新建一个XIB文件。

a.设置一下XIB的大小尺寸,如图:

b.设置XIB的FileOwner为1中新建的类。

c.将View与FileOwner建立关联,这样FileOwner可以对其进行操作。

3.在其他文件使用

//加载View5

   UIView* view5 = [FileOwner2viewFromNibByName:@"View5"];

    [view5setFrame:CGRectMake(0,400, 375, 100)];

    [self.viewaddSubview:view5];

总结:可以多个XIB公用一个FileOwner这样,可以通过一个FileOwner的静态方法通过名字不同来新建出不同的panel了。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

Taro小程序自定义顶部导航栏

微信自带的顶部导航栏是无法支持自定义icon和增加元素的,在开发小程序的时候自带的根本满足不了需求,分享一个封装好的组件,支持自定义icon、扩展dom,适配安卓、ios、h5,全面屏。我用的是京东的Taro多端编译框架写的小程序,原生的也可以适用,用到的微信/taro的api做调整就行,实现效果如下。!在这里插入图片描述(https://i

JS 苹果手机日期显示NaN问题

问题描述newDate("2019122910:30:00")在IOS下显示为NaN原因分析带的日期IOS下存在兼容问题解决方法字符串替换letdateStr"2019122910:30:00";datedateStr.repl

IOS开发 - HelloWorld