美文网首页
iOS 开发常见问题汇总

iOS 开发常见问题汇总

作者: 我丑我先睡 | 来源:发表于2019-04-18 11:47 被阅读0次
    • \color{red}{应用无法全屏显示}
      每次当iPhone发布新尺寸的设备的时候,程序员都要对新尺寸的屏幕做适配,比如iPhone 5和 iPhone X 系列发布后,有的APP会出现无法占满屏幕的情况。这种情况只要将启动图的尺寸配置好就可以了。
    对应位置拖入对应的启动图片就可以啦
    • \color{red}{导航控制器过渡动画}
      如果想给控制添加炫酷一点的动画,苹果提供了几个漂亮好用的API,如果一些波纹效果,翻页效果等。
     kCATransitionFade   交叉淡化过渡 
     kCATransitionMoveIn 新视图移到旧视图上面 
     kCATransitionPush   新视图把旧视图推出去 
     kCATransitionReveal 将旧视图移开,显示下面的新视图 
    
     pageCurl            向上翻一页 
     pageUnCurl          向下翻一页 
     rippleEffect        滴水效果 
     suckEffect          收缩效果,如一块布被抽走 
     cube                立方体效果 
     oglFlip             上下翻转效果
    

    例子:

    CATransition *animation = [CATransition animation];
    animation.duration = 0.7;
    animation.timingFunction = UIViewAnimationCurveEaseInOut;
    
    // 下面代码会出现水波纹的效果
    animation.type = @"rippleEffect";
    // type 和 subtype 配合使用 下面两行代码的作用
    //  新页面从左侧进入将原来界面退出窗口
    animation.type=kCATransitionPush;
    animation.subtype=kCATransitionFromLeft;
    [self.view.window.layer addAnimation:animation forKey:nil];
    [self presentViewController:viewController animated:NO completion:completion];
    
    • \color{red}{修改父视图透明度不影响子视图}
      如果直接修改父容器的透明度的话,包含在内的自视图也会变透明,只需要如下做法
    self.view.backgroundColor = [[UIColor whiteColor]colorWithAlphaComponent:0.7f];
    
    • \color{red}{UIButton的子视图不影响本身点击事件}
      在比较负责的cell中 往往是点击不同的部分进行不同的操作,比如:微博的每个Cell,有原创的,有转发的,有带图片的 有带视频的 不能只通过 didSelectRowAt 来处理点击。我把需要点击的部分用一个button容器包装起来,这样根据button的点击来处理就简单多了。
    // 关闭交互 将事件传递给父button
    self.PTView.isUserInteractionEnabled = false
    
    • \color{red}{保留小数并且 不四舍五入}
      项目需求是不要求四舍五入保留1位小数,而String(format: "%.2f", 3.14) 都是会四舍五入的,而且这么个功能用截取字符串的方式总感觉笨拙,可以用一下的方法
    /// 保留N为小数 并且不四舍五入
    ///
    /// - Parameters:
    ///   - orgNumber: 要格式化的数值 (可以根据需要修改类型 String|float...)
    ///   - savePoint: 希望保留的小数位
    ///   - keepZero: 如果遇到0是否保留 比如 true : 2.08 -> 2.0 反之 2
    /// - Returns: 返回一个NSDecimalNumber
    func formatNumber(orgNumber: Double, savePoint: Int16, keepZero: Bool = true)-> NSDecimalNumber{
        
        let behavior = NSDecimalNumberHandler.init(roundingMode: .bankers, scale: savePoint, raiseOnExactness: false, raiseOnOverflow: false, raiseOnUnderflow: false, raiseOnDivideByZero: keepZero)
        
        return NSDecimalNumber(value: orgNumber).rounding(accordingToBehavior: behavior)
    }
    

    相关文章

      网友评论

          本文标题:iOS 开发常见问题汇总

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