最近一段时间开发过程中,积累了很多细碎的知识点,基本都不太复杂,属于会者不难,难者不会的类型,放这里正好整理一下:
1. UI类型
- UICollectionView 设置间距
- 由size和间距共同决定,分水平方向和垂直方向,
- 水平方向item间距是:lineSpace,行之间间距是itemSpace;垂直方向正相反
- 设置间距既可以用代理,也可以用属性;
- UITabelView 分割线、编辑态、不停留
- 分割线,使用多个分组,当有编辑态时可以这么干;如果没有编辑态,重写setFrame方法是最快的
- 编辑态,只需要实现 editActionsForRowAtIndexPath方法就够了
- header/footer不停留,参考:https://www.jianshu.com/p/01f61359b30d
- 瀑布流
- 主要是计算frame,思路是:下一个item放在当前最短的列里
- 宽、高都好算,拿到最短的列index,x = 左边距 + index * (columnMagin + itemWidth) ;y = 上边距 + 当前最短的列高
- 参考:https://juejin.im/post/5a309eee6fb9a045211eb14e
- 计算UILabel字符串的长度
CGSize size = [self.statusLabel.text sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:17.0f]}];
比boundingRect用起来简单一些
- 禁止view后边视图的响应?
- cancelTouchesInView
- 参考:https://blog.csdn.net/fys_0801/article/details/50605837
- UIView 显示图片
使用view.layer.content属性,结合contentCenter、contentScale处理拉伸
view.layer.contents = (id )image.CGImage;
view.layer.contentsCenter = CGRectMake(0, 0, 1, 1); // 默认值,这是一个比例系数,解释可参考:https://www.jianshu.com/p/401faa7952df
view.layer.contentsScale = image.scale;
-
UISearchBar 设置圆角
不仅要设置自身属性,还要设置内部textField透明,否则达不到想要效果 -
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动画,在切换后台时,动画会被停止,需要加前后台监听
-
position动画
- 做位置动画时,动画开始后,要把view frame设置为动画结束位置,因为动画移动得是展示层
- 动画原理通俗理解
1. 动画前,显示模型层的当前值; 2. 动画开始,切换显示展现层的值; 3. 动画过程中,展现层的值根据时间变化,我们看到的实际是展现层的值在变化; 4. 动画结束,切换回显示模型层的值,此时模型层的值应被修改为动画结束时的值。
后续再补充
网友评论