美文网首页
iOS tips(一)

iOS tips(一)

作者: George_Luofz | 来源:发表于2018-08-30 14:54 被阅读29次

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

    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<newLinesToPad; i++)
           self.text = [NSString stringWithFormat:@" \n%@",self.text];
    }
    思路就是在字符前边加 \n 换行符,\n前边需要加空格,代码里考虑到多行的情况,如果一行就很简单了,直接 \n+text就行;
    同理,居顶部也是类似的,在字符串尾部加 \n。
    
    1. 前后台切换,处理动画:

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

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

    后续再补充

    相关文章

      网友评论

          本文标题:iOS tips(一)

          本文链接:https://www.haomeiwen.com/subject/hzgrwftx.html