国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

一周隨筆--15.10.27

2019-11-14 18:04:14
字體:
供稿:網(wǎng)友

一周新知識(shí)點(diǎn)記錄(15.10.27)

一、不規(guī)則按鈕OBShapedButton

常規(guī)按鈕都是一個(gè)矩形區(qū)域,即使設(shè)置了按鈕layer的cornerRadious,能響應(yīng)點(diǎn)擊事件的依舊是整個(gè)矩形區(qū)域。

OBShapedButton是開源的第三方庫,直接繼承自UIButton,直接使用即可。它的響應(yīng)區(qū)域只限定在button的圖片或者背景圖片區(qū)域,周圍空出的區(qū)域無法響應(yīng)。注意只是響應(yīng)區(qū)域縮小了,frame還是原來的frame。


 二、sendActionsForControlEvents

UIButton的實(shí)例方法,通過代碼手動(dòng)發(fā)送按鈕的點(diǎn)擊事件觸發(fā)按鈕的響應(yīng)方法。


三、ios時(shí)間的時(shí)區(qū)瓜葛

代碼中所有得到的NSDate都是UTC時(shí)間(國際標(biāo)準(zhǔn)時(shí)間,同GMT時(shí)間),例如打印[NSDate date],打印結(jié)果總會(huì)是UTC時(shí)間,不管設(shè)備的時(shí)區(qū)怎么更變。

那么在處理時(shí)間的時(shí)候是不是要在時(shí)區(qū)上下一番工夫呢?例如后臺(tái)返回一個(gè)時(shí)間字符串,我想改變它的格式,需要做的是先得到時(shí)間字符串的date,然后重新設(shè)置格式得到新的時(shí)間字符串。之前說過所有的Date都是UTC時(shí)間,因此,打印中間得到的date會(huì)發(fā)現(xiàn)時(shí)間比當(dāng)前慢了8小時(shí)(假設(shè)當(dāng)前系統(tǒng)時(shí)區(qū)為東8區(qū)),那么用這個(gè)時(shí)間來生成新的string,結(jié)果會(huì)不會(huì)就慢8小時(shí)呢?答案是不會(huì)的,因?yàn)闀r(shí)間格式NSDateFormatter有timezone屬性,這個(gè)屬性的值默認(rèn)為當(dāng)前系統(tǒng)時(shí)區(qū),因此從dete轉(zhuǎn)換到string的時(shí)候,系統(tǒng)計(jì)算時(shí)自動(dòng)地在UTC時(shí)間上加了系統(tǒng)時(shí)區(qū)的偏差時(shí),所以還是原來的時(shí)間,并不會(huì)慢8小時(shí)。另外中間date慢了8小時(shí)也是根據(jù)dateFormatter的timezone值來的。

除了NSDateFormatter,日歷類NSCalendar也有timeZone屬性。假設(shè)現(xiàn)在獲取到了一個(gè)日期date對應(yīng)的dateComponents,打印date查看發(fā)現(xiàn)時(shí)間慢8小時(shí),而打印dateComponents的hour查看,發(fā)現(xiàn)并不會(huì)慢8小時(shí),打印結(jié)果就是當(dāng)前小時(shí)。因?yàn)樵趶膁ate->dateComponents需要借助NSCalendar對象,而calendar同樣有個(gè)timeZone屬性,默認(rèn)也是當(dāng)前系統(tǒng)時(shí)區(qū),轉(zhuǎn)換過程中會(huì)自動(dòng)加上時(shí)區(qū)偏差小時(shí)數(shù)(時(shí)差)。

因此在時(shí)區(qū)問題上通常并不需要做多余處理。


四、關(guān)于PResent popoverController時(shí)的警告

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


 

五、使用UITableView+FDTemplateLayoutCell自動(dòng)計(jì)算Cell高度

之前計(jì)算Cell的高度都是根據(jù)Cell內(nèi)容空間逐個(gè)計(jì)算高度然后相加得到一個(gè)確定值,這樣當(dāng)控件數(shù)量多,或者像label這種要根據(jù)文本長度自適應(yīng)高度的控件,在計(jì)算label的高度的時(shí)候也要計(jì)算文本高度才行,多么蛋疼的事!有了UITableView+FDTemplateLayoutCell,cell高度計(jì)算問題會(huì)省力很多!

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

在heightForRowAtIndexPath代理方法中寫

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

這樣tableView就能自動(dòng)根據(jù)cell的autoLayout情況計(jì)算出高度。

因此使用該方法的前提是cell內(nèi)容控件的自動(dòng)布局一定要準(zhǔn)確。可以IB中布局也可以純代碼自動(dòng)布局,個(gè)人習(xí)慣使用Masonry代碼布局。 


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

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

第一次啟動(dòng)前為NO,啟動(dòng)后要手動(dòng)設(shè)為YES

 


七、關(guān)于在UINavagationControllerUItabBarControllerview上添加視圖

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

 


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 通河县| 五河县| 环江| 敦化市| 峨眉山市| 会同县| 南汇区| 甘德县| 汤原县| 万载县| 玉山县| 西乌珠穆沁旗| 荃湾区| 灵台县| 资阳市| 广东省| 霍山县| 九龙城区| 大足县| 新营市| 寿宁县| 中方县| 北碚区| 天峻县| 皮山县| 石家庄市| 顺昌县| 许昌县| 克山县| 桦南县| 商都县| 湖州市| 梅州市| 临桂县| 沂水县| 丰镇市| 本溪市| 孟连| 上饶县| 濮阳县| 永川市|