iOS tips(一)

最近一段时间开发过程中,积累了很多细碎的知识点,基本都不太复杂,属于会者不难,难者不会的类型,放这里正好整理一下:

1. UI类型

  1. UICollectionView 设置间距
    1. 由size和间距共同决定,分水平方向和垂直方向,
    2. 水平方向item间距是:lineSpace,行之间间距是itemSpace;垂直方向正相反
    3. 设置间距既可以用代理,也可以用属性;
  2. UITabelView 分割线、编辑态、不停留
    1. 分割线,使用多个分组,当有编辑态时可以这么干;如果没有编辑态,重写setFrame方法是最快的
    2. 编辑态,只需要实现 editActionsForRowAtIndexPath方法就够了
    3. header/footer不停留,参考:https://www.jianshu.com/p/01f61359b30d
  3. 瀑布流
    1. 主要是计算frame,思路是:下一个item放在当前最短的列里
    2. 宽、高都好算,拿到最短的列index,x = 左边距 + index * (columnMagin + itemWidth) ;y = 上边距 + 当前最短的列高
    3. 参考:https://juejin.im/post/5a309eee6fb9a045211eb14e
  4. 计算UILabel字符串的长度
CGSize size = [self.statusLabel.text sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:17.0f]}];  

比boundingRect用起来简单一些

  1. 禁止view后边视图的响应?
    1. cancelTouchesInView
    2. 参考:https://blog.csdn.net/fys_0801/article/details/50605837
  2. 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;
  1. UISearchBar 设置圆角
    不仅要设置自身属性,还要设置内部textField透明,否则达不到想要效果

  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
  1. 前后台切换,处理动画:

    1. CAAnimation动画,在切换后台时,动画会被停止,需要加前后台监听
  2. position动画

    1. 做位置动画时,动画开始后,要把view frame设置为动画结束位置,因为动画移动得是展示层
    2. 动画原理通俗理解
    1. 动画前,显示模型层的当前值;
    2. 动画开始,切换显示展现层的值;
    3. 动画过程中,展现层的值根据时间变化,我们看到的实际是展现层的值在变化;
    4. 动画结束,切换回显示模型层的值,此时模型层的值应被修改为动画结束时的值。
    
    1. 参考:解析 iOS 动画原理与实现

后续再补充

你可能感兴趣的:(iOS tips(一))