從code7到xcode8都有哪些坑?

沖動的懲罰

自從有那段使用beta版本的Mac OSX系統(tǒng),導致機器時常開機卡死的經(jīng)歷之后,就盡量不敢在第一時間使用蘋果的beta版系統(tǒng)。但是,由于自己是名iOS開發(fā)者,當Xcode出了beta版本無疑是需要第一時間體驗一下的,即使Xcode beta版本可以不體驗,但是出了第一個Release版本卻是不得不更新。接下來講的就是在使用Xcode8.0所遇到的坑。

坑與填平坑

Storyboard

對于Storyboard相信大家對它都不陌生,自從iOS5之后就開始支持了,是一種可視化開發(fā)組件。本人使用過Android、Windows Phone以及iOS的可視化組件,可以說Storyboard是這三個平臺中最流暢、最好用的可視化開發(fā)組件,采用StoryBoard雖然會比純代碼寫UI效率上會有那么一點損耗,但對于一般的應用,在開發(fā)之初它確實可以大大的提高開發(fā)效率、也易于維護(可以想想當年那些不采用Storyboard編寫的代碼,即使更改一個坐標位置都是極其痛苦的),可以說是利大于弊。但是就在最近升級到Xcode8之后,發(fā)現(xiàn)StoryBoard有如下幾點變動(坑)。

所有UI控件的寬高設定了同一個初始值:1000。

在Xcode7的時候,StoryBoard生成的UI控件的默認寬高都是3.5英寸的寬高。采用自動布局時,在load完Storyboard之后,讀取到UI控件的寬雖然不正確,但是大部分情況下高卻是我們想要的,并且由于寬是320,是小于等于任何尺寸的寬,所以在UI渲染上并沒有可見性的問題。
但是對于Xcode8則不同,只要是通過Storyboard生成的UI都是統(tǒng)一給定一個固定值:1000。在load完Storyboard之后,自動布局計算完高度之前,讀出來的寬高都是1000。這就導致原先所有依賴于bounds計算位置寬高,沒有任何問題的UI展示邏輯,采用Xcode8一編譯就亂套了,比如會看到:圖片無故拉長后再恢復原狀,原先好好的布局出現(xiàn)了UI重疊在一起,有的UI甚至刷新不出來等。解決的辦法主要有兩個:

  • 將Storyboar的打開方式選擇xcode7.x(在右側Show the file inspector->interface Builder Document->open in)。但這么做的缺點是:當你再次打開Storyboard,Xcode又幫你自動選中打開方式為Xcode8.0。而且為了以后著想,還是采用下面這種方式吧。
  • 在代碼要使用UI寬高做些計算之前,調用一下layoutIfNeeded。這樣就能獲得在Storyboard設計的寬高(當使用4.0英寸來設計獲得就是在4.0英寸下的寬高,采用的是3.0英寸來設計獲得的就是3.0英寸的寬高)。

cornerRadius

本人在開發(fā)過程中還遇到了這么一個問題:明明之前顯示得好好的控件,為什么采用Xcode8編譯之后,就消失不見了呢?并且采用Capture view Hierarchy工具查看又能看見這個控件,但是在模擬器或者真機上就是死活渲染不出來。經(jīng)過各種調試最后發(fā)現(xiàn)是因為cornerRadius設置了一個比自己寬高還大的值(類似bounds.size.width / 2這樣的邏輯,由于默認寬高為1000,因此計算出來的cornerRadius就是500了,比我的控件的寬高都大),導致了控件渲染不出來。這種情況采用上面的第二種方法,在使用bounds之前l(fā)ayoutIfNeeded一下,就基本跟以前一樣了。

TableView static cells

當采用Taleview的的靜態(tài)cell之后,如果header的高度是動態(tài)變化的,不管你如何reload data,底下的cell的frame都不會發(fā)生改變,除非你自己手動設置目標cell的frame。

不支持iOS7,卻可以提交iOS7應用

Xcode8之后就不支持iOS7設備的調試了,但是Apptore卻可以提交iOS7系統(tǒng)的應用。當在iOS7設備上遇到bug的時候,調試就成了困難。你不得不再下載一個xcode7來進行iOS7的調試,并且前提是你沒有升級macOS為10.12,否則你連xcode7都打不開,更談不上調試了。雖然現(xiàn)在確實iOS7的用戶量很少,可對于一個步入正軌的app,只能是慢慢的放棄。開發(fā)工具雖不支持調試,但卻可以提交Appstore,這對于開發(fā)者來說,對老板,用戶都不好交代。既然想要放棄iOS7,為啥不干脆整個入口都封死呢?

卡卡卡

最后一點就是卡頓啊,特別是與macOS10.12配合一起,一編譯,好幾次機器幾乎就變成了單進程應用了,其他的應用瞬間失靈。大好心情轉瞬即逝啊!

最后

這次的Xcode8的升級之旅太不愉快了。經(jīng)過這幾年的iOS開發(fā),一路走來感覺蘋果的產品bug越來越多,也越來越不穩(wěn)定,真為自己擔憂啊。不知道看到這篇吐槽的iOS開發(fā)者們,你們是否也遇到了一些Xcode8的坑?

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 發(fā)現(xiàn) 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,241評論 4 61
  • 長期飯票哪有那么好找,《謎城》里古天樂這句話戳破了多少人的美夢! 這其中也包括我!就知道也包括你! 為什么王思聰是...
    歌舒雪閱讀 363評論 0 0
  • 秋季已過了大半,孩子們開學也有一個半月。今日帶孩子在院子里開會,一個孩子看著眼前的桂花樹,感嘆道:桂花都開了。 是...
    任亞閱讀 312評論 0 0
  • 深夜里,深夜食堂總是發(fā)生著有意思的故事。 高中時代的F4,一起上課,一起玩鬧,一起打籃球,一起吃煎餅果子,一起走過...
    溪谷Y閱讀 812評論 1 2
  • 又是一個秋 又有幾多愁; 今夜相思苦 明朝向誰求。 云低愁眉索 瀟瀟清淚流, 君若知我意 月上柳稍頭。 玉指拂琴瑟...
    貨車司機牛二哥閱讀 221評論 0 1