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

2017-05-08  本文已影响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)
    }
上一篇下一篇

猜你喜欢

热点阅读