Objective-C iOS纯代码布局 一堆代码能够放这里!

前言:

最近写的文章都是创业类,好吧,今天好好写写技术类的文章!objective-c

不过度享的不是IOS相关的文章,毕竟这几天在速成IOS,看的是objective-c,因为速成的很快,好累!布局

好在如今基本已经入了点门道了,这才看的懂新人的代码,才能提早感觉代码危机。优化

对于IOS的速成口诀,回头再分享,今天先分享一个简单的抽象封装!插件

1:先看看问题

说明:一般对于界面布局,有编写代码、Xib、Storyboard三种方式,而我看到新人写的,是经过代码布局的。

看到的代码是这样的:3d

A:编写UI的代码已分离到新的类(.h .m文件)去,但仍然仍是留下了很多代码在ViewController中。调试

图1:(在页加载完后,调用了SetView方法,而后SetView方法里一堆和UI相关的代码)blog

图2:继承

2:想一想怎么优化

目标:让每个Controller都有一个对应的View的UI类,而Controller类里不要涉及UI建立的问题,尽可能0入侵。

折腾过程:开发

这几天学了下ObjectC的扩展类Category,觉的这东东有点搞头。(和C#里的扩展类很像,但不一样的是,object-C里扩展方法能够在基类里调到,这很神奇)it

惋惜扩展类不支持属性,无法把一些变量放到扩展类的属性里,逼的要入侵Controller。

因而我又思考,折衷一下,用泛型定义一个共性的UIView,以避开入侵。

结果仍是失败了,objective-C的泛型不支持子类定义类型,唉~~~~

发如今C#轻松搞定的事,在object-c里不容易啊!!!

3:二次折衷的方法:

1:定义Controller的基类,定义一个方法,并在页面加载时调用。

2:假设有LoginController,新建一个LoginView,继承自UIView

 

3:一些UI相关的定义变量就写在这里了(.h文件)

 

4:在LoginView添加一个扩展类(不用新建类文件了,直接追加代码就行了):

 这里扩展了一个方法叫initUI(等于重写基类的方法)

 5:这里就是惟一二次折衷的地方,须要入侵Controller.h,定义一个UI属性。

(以前是想经过把这个属性定义到基类去,惋惜泛型不支持子类指定类型)

6:接下来就是写你的UI相关的代码了。

总结:

1:手工写的代码的可视化,在调试阶段才能看到,这是很悲催的结果。

2:我的不太建议手工布局代码的,开发效率也是个问题(固然你能够经过封装一些UI代码进一步提高下效率)。

3:不知道XCode没有折叠.h文件到.m文件下的插件呢?文件太多,切来切去太伤眼了。

相关文章
相关标签/搜索