IOS開(kāi)發(fā)基本技能 CALyer 有一個(gè)屬性叫做contents,這個(gè)屬性的類型Swift中定義為Any,OC中被定義為id,意味著它可以是任何類型的對(duì)象。在這種情況下,你可以給contents屬性賦任何值,你的app仍然能夠編譯通過(guò)。但是,在實(shí)踐中,如果你給contents賦的不是CGImage,那么你得到的圖層將是空白的。 如下圖所示,為了通常我們賦值為CGImage后,圖片將會(huì)填充滿整個(gè)圖層,如果圖片的分辨率與圖層尺寸不成比率,就會(huì)造成圖片拉伸現(xiàn)象。 要解決圖片的拉伸問(wèn)題,得使用圖層的contentsGravity屬性。CALayer與 contentMode對(duì)應(yīng)的屬性叫做contentsGravity。contentsGravity可選的常量值有以下一些: 我們可以使用 kCAGravityResizeAspect 屬性值避免被拉伸填充圖層 當(dāng)然未填滿的區(qū)域還是已背景顏色顯示。 技能列表 技能列表 1、內(nèi)存管理,不需要防御式編程,但是大腦一定要清晰的知道自己使用的 對(duì)象的內(nèi)存情況。 2、UIKit,熟練掌握,能不看文檔就知道常用的控件有哪些方法以及能做 什么。 3、Storyboard(xib) 4、Auto Layout 和 Size Classes,前者更重要 5、各種手勢(shì)處理 6、KVO\KVC 7、GCD 8、delegate(不要與代理設(shè)計(jì)模式混淆) 9、Block 10、Notification 11、APNs,遠(yuǎn)程通知 12、視圖狀態(tài)保存 其實(shí)開(kāi)發(fā)中大多數(shù)問(wèn)題都是“臨時(shí)”遇到的問(wèn)題,只有平時(shí)積累的夠多,才能游刃有余的解決。上面的這些技能只能算是拋磚引玉,更多地學(xué)習(xí)主要還是在自己遇到問(wèn)題或者遇到不懂的知識(shí)點(diǎn)的時(shí)候,每一個(gè)困難都是財(cái)富,都是一個(gè)學(xué)習(xí)的機(jī)會(huì),像 CoreData、設(shè)計(jì)模式之類的技能你難道不學(xué)嗎?興趣和遇到問(wèn)題的切入點(diǎn)很重要,不要敷衍自己,多看教學(xué)視頻,教學(xué)視頻看的越多,越會(huì)覺(jué)得自己需要學(xué)的就越多。 另外,技能這塊也不要把關(guān)注點(diǎn)全放在 iOS 的平臺(tái)技術(shù)上,做開(kāi)發(fā)的一定不能偏科,有時(shí)候你覺(jué)得自己只是某一方面比較薄弱,比如說(shuō)“我就是記憶力不行”,其實(shí)差距是全面的。 怎樣成為一個(gè)高手?顯然高手總是通過(guò)學(xué)習(xí)產(chǎn)生的。 關(guān)于Objective-C 和 Swif Swift 目前非常不穩(wěn)定,連 Xcode 都對(duì)它兼容的不好,每次 Swift 有個(gè)稍大的更新就像是把項(xiàng)目推倒重來(lái),而且也不可能完全只用 Swift 來(lái)開(kāi)發(fā)一個(gè)項(xiàng)目,基于 Objective-C 和 C 的框架有很多,iOS 是開(kāi)發(fā)離不開(kāi) C 的。 除此之外,我覺(jué)得 OC 比 Swift 更加靈活,前者更依賴運(yùn)行時(shí),后者幾乎就是編譯時(shí),OC 能做很多 Swift 做不了的事情,如運(yùn)行時(shí)的關(guān)聯(lián)對(duì)象等,不過(guò)這并不是說(shuō) Swift 不重要,只是一定要排一個(gè)優(yōu)先級(jí)的話,我覺(jué)得短期內(nèi) Swift 無(wú)法對(duì) Objective-C 造成太大影響,所以先學(xué)好 OC 還是更好一些,而且技多不壓身嘛。 |
|