最近一段時間開發(fā)過程中,積累了很多細(xì)碎的知識點(diǎn),基本都不太復(fù)雜,屬于會者不難,難者不會的類型,放這里正好整理一下:
1. UI類型
- UICollectionView 設(shè)置間距
- 由size和間距共同決定,分水平方向和垂直方向,
- 水平方向item間距是:lineSpace,行之間間距是itemSpace;垂直方向正相反
- 設(shè)置間距既可以用代理,也可以用屬性;
- UITabelView 分割線、編輯態(tài)、不停留
- 分割線,使用多個分組,當(dāng)有編輯態(tài)時可以這么干;如果沒有編輯態(tài),重寫setFrame方法是最快的
- 編輯態(tài),只需要實(shí)現(xiàn) editActionsForRowAtIndexPath方法就夠了
- header/footer不停留,參考:http://www.itdecent.cn/p/01f61359b30d
- 瀑布流
- 主要是計算frame,思路是:下一個item放在當(dāng)前最短的列里
- 寬、高都好算,拿到最短的列index,x = 左邊距 + index * (columnMagin + itemWidth) ;y = 上邊距 + 當(dāng)前最短的列高
- 參考:https://juejin.im/post/5a309eee6fb9a045211eb14e
- 計算UILabel字符串的長度
CGSize size = [self.statusLabel.text sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:17.0f]}];
比boundingRect用起來簡單一些
- 禁止view后邊視圖的響應(yīng)?
- cancelTouchesInView
- 參考:https://blog.csdn.net/fys_0801/article/details/50605837
- 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;
UISearchBar 設(shè)置圓角
不僅要設(shè)置自身屬性,還要設(shè)置內(nèi)部textField透明,否則達(dá)不到想要效果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。
-
前后臺切換,處理動畫:
- CAAnimation動畫,在切換后臺時,動畫會被停止,需要加前后臺監(jiān)聽
-
position動畫
- 做位置動畫時,動畫開始后,要把view frame設(shè)置為動畫結(jié)束位置,因?yàn)閯赢嬕苿拥檬钦故緦?/li>
- 動畫原理通俗理解
1. 動畫前,顯示模型層的當(dāng)前值; 2. 動畫開始,切換顯示展現(xiàn)層的值; 3. 動畫過程中,展現(xiàn)層的值根據(jù)時間變化,我們看到的實(shí)際是展現(xiàn)層的值在變化; 4. 動畫結(jié)束,切換回顯示模型層的值,此時模型層的值應(yīng)被修改為動畫結(jié)束時的值。
后續(xù)再補(bǔ)充