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文件下的插件呢?文件太多,切來切去太傷眼了。

相關文章
相關標籤/搜索