iOS tips(一)

最近一段時間開發(fā)過程中,積累了很多細(xì)碎的知識點(diǎn),基本都不太復(fù)雜,屬于會者不難,難者不會的類型,放這里正好整理一下:

1. UI類型

  1. UICollectionView 設(shè)置間距
    1. 由size和間距共同決定,分水平方向和垂直方向,
    2. 水平方向item間距是:lineSpace,行之間間距是itemSpace;垂直方向正相反
    3. 設(shè)置間距既可以用代理,也可以用屬性;
  2. UITabelView 分割線、編輯態(tài)、不停留
    1. 分割線,使用多個分組,當(dāng)有編輯態(tài)時可以這么干;如果沒有編輯態(tài),重寫setFrame方法是最快的
    2. 編輯態(tài),只需要實(shí)現(xiàn) editActionsForRowAtIndexPath方法就夠了
    3. header/footer不停留,參考:http://www.itdecent.cn/p/01f61359b30d
  3. 瀑布流
    1. 主要是計算frame,思路是:下一個item放在當(dāng)前最短的列里
    2. 寬、高都好算,拿到最短的列index,x = 左邊距 + index * (columnMagin + itemWidth) ;y = 上邊距 + 當(dāng)前最短的列高
    3. 參考:https://juejin.im/post/5a309eee6fb9a045211eb14e
  4. 計算UILabel字符串的長度
CGSize size = [self.statusLabel.text sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:17.0f]}];  

比boundingRect用起來簡單一些

  1. 禁止view后邊視圖的響應(yīng)?
    1. cancelTouchesInView
    2. 參考:https://blog.csdn.net/fys_0801/article/details/50605837
  2. UIView 顯示圖片
    使用view.layer.content屬性,結(jié)合contentCenter、contentScale處理拉伸
  view.layer.contents = (id )image.CGImage;
  view.layer.contentsCenter = CGRectMake(0, 0, 1, 1); // 默認(rèn)值,這是一個比例系數(shù),解釋可參考:http://www.itdecent.cn/p/401faa7952df
  view.layer.contentsScale = image.scale;
  1. UISearchBar 設(shè)置圓角
    不僅要設(shè)置自身屬性,還要設(shè)置內(nèi)部textField透明,否則達(dá)不到想要效果

  2. UILabel 文字底部對齊

- (void)alignBottom {
   CGSize fontSize = [self.text sizeWithFont:self.font];
   double finalHeight = fontSize.height * self.numberOfLines;
   double finalWidth = self.frame.size.width;    //expected width of label
   CGSize theStringSize = [self.text sizeWithFont:self.font constrainedToSize:CGSizeMake(finalWidth, finalHeight) lineBreakMode:self.lineBreakMode];
   int newLinesToPad = (finalHeight  - theStringSize.height) / fontSize.height;
   for(int i=0; i<newLinesToPad; i++)
       self.text = [NSString stringWithFormat:@" \n%@",self.text];
}
思路就是在字符前邊加 \n 換行符,\n前邊需要加空格,代碼里考慮到多行的情況,如果一行就很簡單了,直接 \n+text就行;
同理,居頂部也是類似的,在字符串尾部加 \n。
  1. 前后臺切換,處理動畫:

    1. CAAnimation動畫,在切換后臺時,動畫會被停止,需要加前后臺監(jiān)聽
  2. position動畫

    1. 做位置動畫時,動畫開始后,要把view frame設(shè)置為動畫結(jié)束位置,因?yàn)閯赢嬕苿拥檬钦故緦?/li>
    2. 動畫原理通俗理解
    1. 動畫前,顯示模型層的當(dāng)前值;
    2. 動畫開始,切換顯示展現(xiàn)層的值;
    3. 動畫過程中,展現(xiàn)層的值根據(jù)時間變化,我們看到的實(shí)際是展現(xiàn)層的值在變化;
    4. 動畫結(jié)束,切換回顯示模型層的值,此時模型層的值應(yīng)被修改為動畫結(jié)束時的值。
    
    1. 參考:解析 iOS 動畫原理與實(shí)現(xiàn)

后續(xù)再補(bǔ)充

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容