iosswift的简单介绍

本篇文章给大家谈谈iosswift,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

iOS Swift 相机步骤与注意事项

第一步:初始化 AVCaptureDevice

let capDevice = AVCaptureDevice.default(for: .video)

第二步:初始化 设备会话管理器  管理输入输出

let  capDevicetureSession = AVCaptureSession.init()

        ///设置

       capDevicetureSession?.canSetSessionPreset(AVCaptureSession.Preset.init(rawValue: "AVCaptureSessionPreset1280x720"))

       capDevicetureSession?.sessionPreset = AVCaptureSession.Preset.init(rawValue: "AVCaptureSessionPreset1280x720")

第三步:初始化相机设备输入流

do {

            ///初始化输入流

          let  capDeviceInput= try AVCaptureDeviceInput.init(device:capDevice!)

            ///添加输入流

            if capDevicetureSession?.canAddInput(capDeviceInput!) == true {

                capDevicetureSession?.addInput(capDeviceInput!)

            }

        } catch {

            print("相机初始化失败")

        }

第四步: 拍照 初始化照片输出流

///初始化照片输出流

       let 腔哪毕 capDeviceImgOutput = AVCapturePhotoOutput.init()

        ///添加输出缓脊流

     伍芹   if capDevicetureSession?.canAddOutput(capDeviceImgOutput!) == true {

            capDevicetureSession?.addOutput(capDeviceImgOutput!)

        }

第五步:录像 初始化视频输出流

///初始化视频数据输出流

        let capDeviceVideoOutput = AVCaptureVideoDataOutput.init()

        ///添加输出流

        if capDevicetureSession?.canAddOutput(capDeviceVideoOutput!) == true {

            capDevicetureSession?.addOutput(capDeviceVideoOutput!)

        }

        capDeviceVideoOutput?.alwaysDiscardsLateVideoFrames = true //kCVPixelBufferPixelFormatTypeKey

        capDeviceVideoOutput?.videoSettings = [String(kCVPixelBufferPixelFormatTypeKey):kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange]

        capDeviceVideoOutput?.setSampleBufferDelegate( self , queue:DispatchQueue.init(label:"video"))

第六步:因为录像肯定还需要同步录制音频所以初始化音频的输入  输出

因为音频不能用上面的相机device所以

///初始化麦克风设备

        let audioDevice =AVCaptureDevice.default(for: .audio)

        do {

            // Wrap the audio device in a capture device input.

            capDeviceAudioInput= try AVCaptureDeviceInput(device: audioDevice!)

            // If the input can be added, add it to the session.

            if capDevicetureSession!.canAddInput(capDeviceAudioInput!) {

                capDevicetureSession!.addInput(capDeviceAudioInput!)

            }

        } catch {

            print("麦克风失败")

        }

 ///初始化音频输出流

       let   capDeviceAudioOutput=  AVCaptureAudioDataOutput.init()

        if capDevicetureSession!.canAddOutput(capDeviceAudioOutput!){

           capDevicetureSession!.addOutput(capDeviceAudioOutput!)

        }

        capDeviceAudioOutput?.setSampleBufferDelegate( self , queue:DispatchQueue.init(label:"audio"))

第七步:初始化视频连接器

let  videoConnection = capDeviceVideoOutput?.connection(with: .video)

        videoConnection?.automaticallyAdjustsVideoMirroring = false

        //设置视频输出方向

        videoConnection?.videoOrientation = .portrait

        //判断是否支撑视频稳定 可以显著提高视频的质量 只会在录制视频文件涉及到

        if videoConnection!.isVideoStabilizationSupported {

            videoConnection?.preferredVideoStabilizationMode = .auto

        }

第八步:最重要的一步:将所有的输入输出流都添加到设备会话管理器

前面几步已经添加了

最后就是初始化预览相机的视图了

///初始化相机输出流预览图层

        let capDevicePreViewLayer = AVCaptureVideoPreviewLayer.init(session: capDevicetureSession!)

         capDeviceContentView=SYDIYCameraContentView.init(frame: preViewLayerFrame)

         capDevicePreViewLayer?.frame=CGRect.init(x:0, y:0, width: preViewLayerFrame.size.width, height: preViewLayerFrame.size.height)

         capDevicePreViewLayer?.videoGravity = .resizeAspectFill

然后开启会话管理器启动设备运行

capDevicetureSession?.startRunning()

注意事项就是:所有设置必须在会话管理器启动前初始化并且设置,不然拍照 和 录像 会有很多小问题

[img]

swift是什么

Swift是一种新的编程语言,用于编衫唤写iOS和macOS应用。

一、主要功能帆陵

Swift是编程语言的最新研究成果,并结合数十年的经验建设苹果平台的结果。结转自Objective-C的命名参数表示在一个干净的语法,使得Swift的API更容易阅读和维护。

推断类型使代码更干净,不易犯错误,而模块消除了头态塌戚,并提供命名空间。内存自动管理,而你甚至都不需要输入分号。

二、应用范围

Swift的开发从很久之前就开始了。为了给Swift打好基础,苹果公司改进了编译器,调试器和框架结构。我们使用自动引用计数(Automatic Reference Counting, ARC)来简化内存管理。我们在Foundation和Cocoa的基础上构建框架栈并将其标准化。Objective-C本身支持块、集合语法和模块,所以框架可以轻松支持现代编程语言技术。

Objective-C开发者对Swift并不会感到陌生。它采用了Objective-C的命名参数以及动态对象模型,可以无缝对接到现有的Cocoa框架,并且可以兼容Objective-C代码。在此基础之上,Swift还有许多新特性并且支持过程式编程和面向对象编程。

三、操作优点

Swift 对于初学者来说也很友好。它是第一个既满足工业标准又像脚本语言一样充满表现力和趣味的编程语言。它支持代码预览,这个革命性的特性可以允许程序员在不编译和运行应用程序的前提下运行Swift代码并实时查看结果。

四、应用优势

Swift将现代编程语言的精华和苹果工程师文化的智慧结合了起来。编译器对性能进行了优化,编程语言对开发进行了优化,两者互不干扰,鱼与熊掌兼得。Swift 既可以用于开发“hello, world”这样的小程序,也可以用于开发一套完整的操作系统。所有的这些特性让 Swift对于开发者和苹果来说都是一项值得的投资。

iOS开发中OC和swift的对比

1.import的类

OC:某个只要要使用某个类就要将该类import。

swift:如果是用户自己创建类,其他类无需import可以直接使用。pod的一些三方类和系统的一些类,在使用的时候需要import

2.遵守协议实现协议中的代理方法

OC:

swift:

3.函数的返回值放在了后面

4.函数的参数类型放在了参数搏链弯名的后面

5.函数的所有参数放在了一个"()"里,并且有了一个参数标签

看swift和OC的对比

枚举:

OC中:

swift中:

6.swift中的闭包和OC中的block

OC中的block:

swift中的闭包:

6.1解决swift中的闭包引起的循环引基闷用(使用weak)

7.swift中的可选类型

8.swift中的基本运算

只有相同数据类型的数据才能进行运算(Int类型要想和Double类型数据运行,需要先将Int类型数据强唤漏转成Double类型数据)

9.swift中的guard

增强了可读性

9.1.swift中的if

没有了OC中的”非0即真"

10.swift中的switch

可以判断多个条件

可以判断多种类型

不用写break了

11.swift中的区间

12.swift中的元组

取数据更加方便

取出之后就知道元素的类型了

13.swift中的可选类型

swift是强类型语言。nil在swift中成了一种特殊类型,不能直接赋值给对象。只有可选类型才能赋值为nil

13.swift中的类型转化

as as? as!

14.swift中的结构体

14.swift中的属性

存储属性、计算属性、类属性

本篇文章会持续更新,愿大家加班不多工资多,男同胞都有女朋友,女同胞都有男朋友。

标签列表