一周隨筆--15.10.27,隨筆--15.10.27

來源:互聯網
上載者:User

一周隨筆--15.10.27,隨筆--15.10.27
一周新知識點記錄(15.10.27)一、不規則按鈕OBShapedButton

常規按鈕都是一個矩形地區,即使設定了按鈕layer的cornerRadious,能響應點擊事件的依舊是整個矩形地區。

OBShapedButton是開源的第三方庫,直接繼承自UIButton,直接使用即可。它的響應地區只限定在button的圖片或者背景圖片地區,周圍空出的地區無法響應。

 二、 sendActionsForControlEvents

UIButton的執行個體方法,通過代碼手動發送按鈕的點擊事件觸發按鈕的回應程式法。

三、ios時間的時區瓜葛

代碼中所有得到的NSDate都是UTC時間(國際標準時間,同GMT時間),例如列印[NSDate date],列印結果總會是UTC時間,不管裝置的時區怎麼更變。

那麼在處理時間的時候是不是要在時區上下一番工夫呢?例如後台返回一個時間字串,我想改變它的格式,需要做的是先得到時間字串的date,然後重新設定格式得到新的時間字串。之前說過所有的Date都是UTC時間,因此,列印中間得到的date會發現時間比當前慢了8小時(假設當前系統時區為東8區),那麼用這個時間來產生新的string,結果會不會就慢8小時呢?答案是不會的,因為時間格式NSDateFormatter有timezone屬性,這個屬性的值預設為當前系統時區,因此從dete轉換到string的時候,系統計算時自動地在UTC時間上加了系統時區的偏差時,所以還是原來的時間,並不會慢8小時。另外中間date慢了8小時也是根據dateFormatter的timezone值來的。

除了NSDateFormatter,日曆類NSCalendar也有timeZone屬性。假設現在擷取到了一個日期date對應的dateComponents,列印date查看發現時間慢8小時,而列印dateComponents的hour查看,發現並不會慢8小時,列印結果就是當前小時。因為在從date->dateComponents需要藉助NSCalendar對象,而calendar同樣有個timeZone屬性,預設也是當前系統時區,轉換過程中會自動加上時區偏差小時數(時差)。

因此在時區問題上通常並不需要做多餘處理。

四、關於present popoverController時的警告

若當前視圖控制器的顯示是add視圖控制器的view是到上層視圖控制器的某個view中,而不是Push到UInavagationController中或者是在UITabbarController容器中的,也就是說這個控制器未處在當前app的堆棧中,那麼從這個視圖控制器present另一個視圖控制器或者popover會發出警告 Presenting view controllers on detached view controllers!

 

五、使用UITableView+FDTemplateLayoutCell自動計算Cell高度

之前計算Cell的高度都是根據Cell內容空間逐個計算高度然後相加得到一個確定值,這樣當控制項數量多,或者像label這種要根據文本長度自適應高度的控制項,在計算label的高度的時候也要計算文本高度才行,多麼蛋疼的事!有了UITableView+FDTemplateLayoutCell,cell高度計算問題會省力很多!

 UITableView+FDTemplateLayoutCell 簡單來說,一句話解決cell高度計算的問題。

在heightForRowAtIndexPath代理方法中寫

return [tableView fd_heightForCellWithIdentifier:@"identifierMyCell" cacheByIndexPath:indexPath configuration:^(id cell) {       //cell的可變內容配置 例如label的text,用來確定高度}];

這樣tableView就能自動根據cell的autoLayout情況計算出高度。

因此使用該方法的前提是cell內容控制項的自動布局一定要準確。可以IB中布局也可以純程式碼自動布局,個人習慣使用Masonry代碼布局。 

六、判斷是否是第一次使用app

[[NSUserDefaults standardUserDefaults] boolForKey:@"firstStart"]可以用來判斷是否是第一次使用app。

第一次啟動前為NO,啟動後要手動設為YES

 

七、 關於在 UINavagationController UItabBarController view 上添加視圖

若直接對UINavagationController.view或者UItabBarController.view添加視圖myView,對前者而言,push了一個viewController之後,myView不會被覆蓋,依舊顯示在螢幕最前面。對後者而言,切換viewController後,myView同樣顯示在老地方。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.