文档章节

OC中手写代码与xib结合实例

AppleDream
 AppleDream
发布于 2016/05/04 09:43
字数 648
阅读 140
收藏 0

github代码地址

第一:首先说明下,何为封装一个自己的控件?其实简单来说,封装一个自己的控件就封装一个像UIView与UIButton这类的。可以通过代码创建一个自己封装的控件

第二:控件封装哪些东西?在这个之间,我们来看纯代码封装一个控件需要封装哪些东西(纯代码封装的实例github代码地址);第一:你要能返回一个控件对象(即你了的控件中包括了哪些子控件);第二:重写layoutSubViews方法,这个方法会监听控件的大小变化,来重新定义子控件的CGRectMake;第三:模型(对模型不是很清楚的话请点这里)控件需要的数据一般从模型中获得;至此,一个控件类对控件的画分基本就成型了,这三块逻辑互相独立,耦合性较低;接下来就是xib为我们解决了这三块之中的哪些?它解决了子控件的添加与子控件的CGRectMake两块,数据,仍然需要自己,所以,xib为我们省了两件事,毕竟图形界面比手打的要快,而且也很好维护。

第三:说完了控件类如何,再来说下主控件器里好何写了,首先:我们还是以UIView控件手打代码创建为例:

//手打代码,没有Xcode,所写代码能看懂就好,如有错误欢迎指出
UIView *view=[[UIView alloc]init];
view.fram=CGRectMake(0,0,100,100);
[self.view.addSubViews view];


//而我们创建自己封装的控件应如何呢
//其实就比UIView多了一步,添加模型(数据)
UIView *view=[[UIView alloc]init];//自己的控件类像这样实例化,一般会封装一下调用类构造方法
//添加模型
view.fram=CGRectMake(0,0,100,100);//下面两句一样
[self.view.addSubViews view];
//构架已说完,血肉请看github上面的代码

第四:说一个注意点,就是使用xib的时候,独立控件的对象要设置成你所封装的类,不然会报错,错误很常见。

而纯代码是没有这样的问题;导致问题的原因是,xib返回实例的时候是加载xib对象的,默认是UIView.

© 著作权归作者所有

共有 人打赏支持
AppleDream
粉丝 9
博文 92
码字总数 26198
作品 0
昆山
程序员
私信 提问
iOS一些代码的取巧写法总结(二)

一、在xib/storyboard里面设置view圆角半径 在xib/storyboard里面设置view圆角半径 神奇的IB_DESIGNABLE和IBInspectable(xib中设置圆角) 二、push pop 动画突然消失的解决方案 产生的原因是动...

朝雨晚风
2016/12/05
0
0
Framework打包

iOS app需要在许多不同的CPU架构下运行: arm7: 在最老的支持iOS7的设备上使用 arm7s: 在iPhone5和5C上使用 arm64: 运行于iPhone5S的64位 ARM 处理器 上 i386: 32位模拟器上使用 x86_64: 64...

樗同学
2016/09/27
55
0
iOS XIB的屏幕尺寸适配

开发中,都会有适应各种屏幕尺寸的需要,因为4s年代久远,本文中就没有针对4s的适配(其实屏幕宽度和5s一样,开发中按5s的适配参数来就行了,高度适配的话就把页面调成滑动的就好了),话不多...

Mikebanana
2017/08/28
0
0
关于 手写代码和xib

@芳仔小脚印 你好,想跟你请教个问题:开发用xib多些 还是手写代码多些 xib没怎麽学过 还有storeboard 用的多吗?

江南style丶虎
2015/11/11
2.9K
13
用代码布局autoLayout

手写布局,必须设置translatesAutoresizingMaskIntoConstraints为NO,如果用xib,xib会把view的translatesAutoresizingMaskIntoConstraints设置为NO. @interface UIView (UIConstraintBasedC......

水一样的人儿
2016/07/12
13
0

没有更多内容

加载失败,请刷新页面

加载更多

SpringBoot引入第三方jar包或本地jar包的处理方式

在开发过程中有时会用到maven仓库里没有的jar包或者本地的jar包,这时没办法通过pom直接引入,那么该怎么解决呢 一般有两种方法 - 第一种是将本地jar包安装在本地maven库 - 第二种是将本地j...

独钓渔
53分钟前
2
0
五、MyBatis缓存

一、MyBatis缓存介绍 缓存的使用可以明显的加快访问数据速度,提升程序处理性能,生活和工作中,使用缓存的地方很多。在开发过程中,从前端-->后端-->数据库等都涉及到缓存。MyBatis作为数据...

yangjianzhou
今天
2
0
最近研究如何加速UI界面开发,有点感觉了

最近在开发JFinal学院的JBolt开发平台,后端没啥说的,做各种极简使用的封装,开发者上手直接使用。 JBolt开发平台包含常用的用户、角色、权限、字典、全局配置、缓存、增删改查完整模块、电...

山东-小木
今天
3
0
《月亮与六便士》的读后感作文3000字

《月亮与六便士》的读后感作文3000字: 看完英国作家威廉.萨默塞特.毛姆所著《月亮与六便士》(李继宏译),第一疑问就是全书即没提到“月亮”,也没提到“六便士”。那这书名又与内容有什么...

原创小博客
昨天
2
0
微信网页授权获取用户信息(ThinkPHP5)+ 微信发送客服消息(一)

以thinkphp5为实例,创建控制器 class Kf extends Controller { /** * [protected description]微信公众号appid * @var [type] */ protected $appid = "xxxxxxxxxxxxxxx"; /** * [protected......

半缘修道半缘君丶
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部