資源描述:
《ios9開發(fā)中總結(jié)的幾條小技巧-ios開發(fā)技巧》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、iOS9開發(fā)中總結(jié)的幾條小技巧〃小黃鴨〃法不僅適用于debug,也適用于學(xué)習(xí)新知識。表達是最好的吸收。木文原文發(fā)表在realm.io±Q我翻譯并整理成此文。希望可以為國內(nèi)的iOS朋友提供一些資料。LayoutGuide在iOS9.0和OSX10.11中,分別有兩個新的類:UTLayoutGuide和NSLayoutGuide。他們叫以作為一種類似View的對象,參與到AutoLayout的布局約束屮。作為一種新的布局解決方案,這兩個類的出現(xiàn)使你無需再創(chuàng)建、顯示無關(guān)的ViewTo舉個栗子,原本需要一個空的U
2、lView占位的地方,現(xiàn)在只需要用UILayoutGuide去替代它就可以了。//創(chuàng)建LayoutGuideletlayoutGuideA二UTLayoutGuide()letlayoutGuideB=UILayoutGuide()//添加到View±letview:UlView二???view.addLayoutGuide(layoutGuideA)vicw.addLayoutGuide(layoutGuidcB)//用UILayoutGuide來添加布局約束layoutGuideA.heightAnc
3、hor.constraintEqualToAnchor(layoutGuideB.heightAnchor)?active二true//設(shè)置Identifier,為了方便DEBUGlayoutGuideA.identifier二,/layoutGuideA,/layoutGuideB.identifier二,/layoutGuideB,///???然后看看他們的Frame吧print("layoutGuideA?layoutFrame->(layoutGuideA?layoutFrame)〃)NSLay
4、outAnchoriOS9中另一個新壇的APT是NSLayoutAnchoro它的出現(xiàn)不僅僅是讓使用代碼添加約束變得簡潔明了。通過該類強大的靜態(tài)檢查能力,還提供了額外的約束正確定保證。舉個栗子,考慮以下使用NSLayoutConstraintAPI創(chuàng)建的約束會出現(xiàn)什么問題:NSLayoutConstraint^constraint=[NSLayoutConstraintconstraintWithltem:viewlattributc:NSLayoutAttributcLeadingrelatedBy:N
5、SLayoutRel3tionEqualtoItem:view2attribute:NSLayoutAttributeTopmultiplier:1.0constants.0];這個約束是無效的。因為你將一個X軸上的屬性(leading)同一個Y軸屬性(top)綁定。然而,這個錯誤可以毫無警告地通過編譯,在運行的吋候默默地就失效了,最終留下一個出錯的布局。曲于這個錯誤不會產(chǎn)生任何的日志信息,導(dǎo)致極難dcbugo假如工程里有許多(成千上萬)這樣的約束代碼,那對于維護來說真是一場噩夢。好在NSLayoutAn
6、chor利用了〃泛型〃解決了這個問題?!ǚ盒汀ìF(xiàn)在在Swift和Objective-C中都已經(jīng)得到了支持oUTView中NSLayoutAnchor相關(guān)的存取方法,明確指出了需要哪些繼承自NSLayoutAnchor的子類。這些子類被分為了三類,X軸,Y軸,和尺寸(寬/高),一種類型的Anchor只允許綁定約束到另外一個相同類型的Anchor上。通過指定NSLayoutAnchor屮參數(shù)的類型,這個API可以通過類型檢查,來避免創(chuàng)建出例了中無效的約束。我們冋到之前的例子,用NSLayoutAnchor來實
7、現(xiàn)一下這個約朿:NSLayoutConstraint^constraint二[view1.leadingAnchorconstraintEqualToAnchor:vicw2?topAnchor];相比in的api,新的api非常明顯地提升了代碼可讀性。并且,當你傳入錯誤的Anchor類型時,新的API會拋出一個^Incompatiblepointertype〃警告,因為編譯器知道這個是兩個不同的類。想要了解更多,請查閱NSLayoutAnchor官方文檔IITTPS和HTTPApple介紹了iOS9中的
8、AppTransportSecurity,它要求所有App在默認情況下使用HTTPS來進行網(wǎng)絡(luò)請求。由于不是所有的服務(wù)器都運行在HTTPS環(huán)境一H,Apple也提供了相關(guān)的方法來禁用ATSo如果你的App需要請求的網(wǎng)址不口丁控(比如說UTWebVeiw請求的網(wǎng)站,冇口J能是HTTP的,也有可能是I1TTPS的),那么你應(yīng)當將Info.plist文件中的NSAllowsArbitraryLoads設(shè)置為YES,來完全禁用ATS。