美文网首页
iOS开发 -- 查漏补缺--1

iOS开发 -- 查漏补缺--1

作者: 奇董 | 来源:发表于2017-05-08 16:36 被阅读68次

    多任务

    在应用挂起状态下,如果其他内存紧张,会被系统系统直接杀掉。
    解决办法:
    当应用程序内存小于16M的时候,应用程序挂起的时候,系统会将应用程序的内存存储到闪存中。 所以16M是个关键点

    后台执行:
    1 进入后台执行扫尾操作

    var backgroundTask :UIBackgroundTaskIdentifier! = nil
            backgroundTask =  application.beginBackgroundTask {
                //超时 处理
                application.endBackgroundTask(backgroundTask)
                backgroundTask = UIBackgroundTaskInvalid
            }
    

    当你调用 application.beginBackgroundTask的时候,系统就会给你10分钟的时间,来让你完成扫尾工作。
    然后就可以在下面进行一些时长的的工作 例如下载什么的

    2 进入后台定期执行任务(麻蛋 坑比)
    首先告诉 系统多长时间执行一次

    UIApplication.shared.setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum)
    

    系统默认从不执行

    func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
            print("11111")
            completionHandler(UIBackgroundFetchResult.newData)
        }
    

    然后在代理方法中执行任务。
    这个东西 真是坑的不行。贼不好用
    具体看着https://www.v2ex.com/t/90479

    3 通知触发后台任务

    func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
            ///--
        }
    
    绘制
    override func draw(_ rect: CGRect)
    

    当系统需要显示一个视图的时候。则调用draw方法
    参数:需要更新的矩形的区域

    选择绘制的颜色

    //填充颜色
            UIColor.green.setFill()
            //边界颜色
            UIColor.green.setStroke()
    

    当要当前操作不污染 当前上下文 例如阴影填充颜色 等等
    可以保存上下文状态

    CGContextSaveGState(context)
    //进行一些操作
    CGContextRestoreGState(context)
    

    UIBezier类 不仅可以绘制贝塞尔曲线 还可以绘制自定义图形

    addline()
    addCurve()
    ---
    

    音视频

    音频操作对象类
    AVFounction - AVPlayer
    AVKit -AVPlayerViewController

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
            if segue.identifier == "videoSegue" {
                let urlStr = Bundle.main.url(forResource: "11", withExtension: "mp4");
                let vc: AVPlayerViewController = segue.destination as! AVPlayerViewController
                vc.player = AVPlayer(url: urlStr!)
            }
        }
    

    具体操作都在AVPlayer对象方法中,使用AVPlayerViewController 系统都在自己实现。 自定义可使用AVPlayerLayer播放
    相册操作类
    UIImagePickerController

        @IBAction func imageAction(_ sender: Any) {
            let imagePick = UIImagePickerController()
            imagePick.sourceType = .photoLibrary
            imagePick.delegate = self
            imagePick.allowsEditing = true
    
            present(imagePick, animated: true, completion: nil)
        }
        // MARK: delegate
        func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
            let orginImage = info[UIImagePickerControllerOriginalImage]
            let aa = info[UIImagePickerControllerEditedImage]
        }
        func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
            picker.dismiss(animated: true, completion: nil)
        }
    

    相关文章

      网友评论

          本文标题:iOS开发 -- 查漏补缺--1

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