開發(fā)筆記 - storyboard的一些初級(jí)使用

本來(lái)想寫一些高大上的東西,例如運(yùn)行時(shí)機(jī)制,以及關(guān)于上架方面的新的.想了好久,我認(rèn)為自己的水平還處于UI學(xué)徒的汪洋大海中 ,開發(fā)張的很多很多問(wèn)題,其實(shí)你只需要一個(gè)谷歌瀏覽器,提問(wèn)的當(dāng)很多都是手到擒來(lái)的.話說(shuō)還是有很多人,學(xué)歷高,開發(fā)中的問(wèn)題也多,不善于總結(jié).甚至只需要你百度一下,谷歌搜索就能解決的問(wèn)題,還是拿到群里,各種提問(wèn),苦逼的是,回答的時(shí)候,回答者,除非自己遇見(jiàn)過(guò)的驚天大坑,還是要依賴谷歌來(lái)回答.算不算是一種諷刺? 好像話又離題了.我認(rèn)為現(xiàn)在如果是初級(jí)程序員,完全不是面向?qū)ο缶幊?而是面向搜索引擎編程,只要get搜索的能力,那么%99.9999 的需求以及功能都是可以解決的.

為熟而已!

扯了這么多,還是拿一點(diǎn)最初級(jí)的知識(shí).獻(xiàn)給大家吧. 一來(lái)學(xué)習(xí)是為了分享,分享的同時(shí)也是提升,輸出.現(xiàn)在已經(jīng)不喜歡去copy一些技術(shù)文來(lái)糊弄讀者,一是對(duì)自己的不尊重,而是對(duì)原創(chuàng)作者尊重.這些我是頓時(shí)領(lǐng)悟到的.只有自己寫,自己輸出才是自己的.不怕寫的不好,寫的好了自然就有人看,寫的不好,給自己看~~~

一般人用布局兩種StoreBoard跟純代碼.那種優(yōu)劣?

玩不轉(zhuǎn)StoreBoard的都喜歡用純代碼.不解釋.

(1)StoreBoard優(yōu)點(diǎn):

Auto Layout,做適配很方便;

多語(yǔ)言很方便;

靜態(tài)TableView,CollectionView極其方便;

最重要的是直觀,結(jié)構(gòu)清晰,一目了然!

沖突問(wèn)題:storyboard一般只是用于展示頁(yè)面布局,布局不是個(gè)經(jīng)常變動(dòng)的東西,如果需要修改,修改的次數(shù)也非常的少。一般在團(tuán)隊(duì)中專門約定幾名負(fù)責(zé)人專門修改頁(yè)面布局就可以了。如果真的需要很多人改,請(qǐng)拆分storyboard。

性能問(wèn)題:性能的瓶頸真的在這里嗎?有這些時(shí)間多多優(yōu)化一下代碼,多使用異步block的效果更為明顯吧。

大型項(xiàng)目的問(wèn)題:大型項(xiàng)目中細(xì)分storyboard不僅可以解決打開卡頓的問(wèn)題,也會(huì)使產(chǎn)品線更為直觀。

復(fù)用問(wèn)題:storyboad的確不能復(fù)用,可復(fù)用的組件可以用NIB進(jìn)行封裝,然后引入storyboad。

(3)什么時(shí)候使用storyboard?

組織多種view的層級(jí)關(guān)系,也就是傳說(shuō)中的segue。使用一些列表或表格單元的模板的時(shí)候。能使用storyboard的情況下盡量用storyboard。

什么時(shí)候不建議使用storyboard?

動(dòng)態(tài)或復(fù)雜布局,這時(shí)候可能需要用代碼來(lái)計(jì)算相關(guān)view的位置。如果一個(gè)view已經(jīng)用NIB或代碼實(shí)現(xiàn)

(4)什么時(shí)候使用nib?

模態(tài)框(如登錄提示什么的)可復(fù)用視圖組件或模板

什么時(shí)候不推薦使用nib?

有動(dòng)態(tài)內(nèi)容的視圖

不方便在IB中進(jìn)行設(shè)計(jì)的試圖

(5)什么時(shí)候使用代碼?

純代碼好處就是靈活,接手項(xiàng)目的時(shí)候好改。缺點(diǎn),很明顯慢。

什么時(shí)候不推薦使用代碼?

什么時(shí)候使用代碼都是一個(gè)好方法,但不一定是最好的。

純代碼可以使用masonry,可視化編程使用AutoLayout?

我自己的項(xiàng)目可以說(shuō)是所有界面均有SB和XIB 組合而成.很多人說(shuō)storyboard的跟XIB不好,實(shí)際是因?yàn)橥娴牟粔蛄锒?/p>

下面我來(lái)介紹一下storyboard 的幾個(gè)常用的用法


上面這張圖就是傳說(shuō)中的連線 ,segue 簡(jiǎn)稱色鬼 你可以用它來(lái)傳值,也可以用它來(lái)跳轉(zhuǎn)控制器

- (IBAction)goAction:(id)sender

{

// 根據(jù)指定線的ID跳轉(zhuǎn)到目標(biāo)Vc

[self performSegueWithIdentifier:@"SendValue" sender:self];

}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

// segue.identifier:獲取連線的ID

if ([segue.identifier isEqualToString:@"SendValue"]) {

// segue.destinationViewController:獲取連線時(shí)所指的界面(VC)

ReceiveViewController *receive = segue.destinationViewController;

receive.name = @"Garvey";

receive.age = 110;

// 這里不需要指定跳轉(zhuǎn)了,因?yàn)樵诎磁さ氖录镆呀?jīng)有跳轉(zhuǎn)的代碼

// [self.navigationController pushViewController:receive animated:YES];

}

}


除此之外你還可以這樣用


你可能不知道上面的圖有什么卵用?


再來(lái)看一下方法內(nèi)部的實(shí)現(xiàn)

你看誰(shuí)說(shuō)SB不好跳轉(zhuǎn)控制器啥的.寫個(gè)方法放在基類,只要保持規(guī)范,隨便你跳跳跳!

在看下SB做布局



在這里,你可以直接給控件做布局, top left button right 上左下右

寬,高,自身比例


水平,垂直居中.看英文跟符號(hào)你就能知道意思了.


在這里你可以做相對(duì)布局了.

一般,我的做法是直接 父控件 做等寬高?

然后MultiPlier 不是有一個(gè)1 嗎?

這里就是你可以調(diào)整比例 從0 -1 ??

至于怎么算比例,例如 我想做一個(gè)view 大小100 并且在任何6顯示正常 在5s 跟6S 相對(duì)根據(jù)比例來(lái)增大怎么做呢?

如果你直接寫死寬度 100 跟高度100?

那么恭喜你,在6是正常的.在5S就會(huì)看起來(lái)大了一點(diǎn),因?yàn)闄C(jī)型跟分辨率高了.在6S就更小了.

是不是有這種情況.那么我用SB怎么做呢?先看分辨率機(jī)型圖

iphone5屏幕尺寸320 x 568屏幕分辨率640x1136

iphone6屏幕尺寸375 x 667屏幕分辨率640x1334

iphone6Plus屏幕尺寸414 x 736屏幕分辨率1080x1920。




設(shè)置的寬度跟高度,都是跟View去做的等寬高.

我是以6的原型去參照. 那么它就會(huì)去算比例,在6s的時(shí)候, 高度就會(huì)變成屏幕高度 * (100/667.0)

寬度就會(huì)變成 屏幕寬度*(100/375)

你看這樣他就會(huì)根據(jù)機(jī)型來(lái)覺(jué)得view的寬高,從而顯示不同的寬高.是不是很靈活呢?


這個(gè)選項(xiàng),決定了會(huì)不會(huì)參與編譯.如果你不勾選,那么就不會(huì)參與編譯.


簡(jiǎn)單點(diǎn)說(shuō)就是automaticallyAdjustsScrollViewInsets根據(jù)按所在界面的status bar,navigationbar,與tabbar的高度,自動(dòng)調(diào)整scrollview的 inset,設(shè)置為no,不讓viewController調(diào)整,我們自己修改布局即可~

下面我還要花20000+ 的文字來(lái)描述SB 的好用之處.自己腦補(bǔ)去吧,任何技能你想要get記住,只能多谷歌,不要去百度.自己多去練習(xí),真的想別人免費(fèi)給你寫文章文字來(lái)告訴你技能?只能告訴你想多了,哈哈哈.一切再好的文章不如親手實(shí)操幾遍來(lái)的快.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 寫在前面 我不算是個(gè)資深碼農(nóng),有些iOS的編程經(jīng)驗(yàn)。希望找到一種高效的方式來(lái)創(chuàng)作出自己的iOS應(yīng)用。大家都知道純代...
    五九樓閱讀 14,818評(píng)論 3 40
  • 1.自定義控件 a.繼承某個(gè)控件 b.重寫initWithFrame方法可以設(shè)置一些它的屬性 c.在layouts...
    圍繞的城閱讀 3,704評(píng)論 2 4
  • 英文:raywenderlich譯文:伯樂(lè)在線專欄作者 - 陸熠十四 翻譯鏈接:http://ios.jobbol...
    飛天豬Pony閱讀 416評(píng)論 0 2
  • 前言 做iOS開發(fā)的童鞋都應(yīng)該會(huì)糾結(jié)一個(gè)問(wèn)題,那就是在做開發(fā)的時(shí)候是使用StoryBoard還是使用Nibs又或者...
    Arthury閱讀 829評(píng)論 1 3
  • 曲水繞林霜路寧,秋風(fēng)盡處謁先生。 憑欄長(zhǎng)望樓臺(tái)雨,持卷未聞金玉聲。 畫角清悠歌舊歲,鐘山蒼莽守高塋。 百年傲骨今安...
    銓齋閱讀 2,148評(píng)論 8 33

友情鏈接更多精彩內(nèi)容