swift view 和 uiview_Swift笔记2:从类的概念到UI界面

906ea3aa40f2270a63600b1073a9659f.png
写代码的前期真的很需要一个开放的心态,例如:某段代码比较晦涩,就先假设自己知道它的原理 ,在了解功能的基础上先继续学下去

这篇文章主要介绍类的概念,以及如何使用storyboard或代码进行UI布局,所以也会介绍很多常用的UI控件~

不会继续描述每个代码的基础原理了,只会从执行思路上,在代码的注释上写一下思路,想要了解更细致,可以去翻一下苹果的官方文档。


类class

//生成类,可以理解类为我们自己定义的和Int一样的数类型
class Lego{
    //定义属性
    var color:String = "blue"
    var size:Int = 8
    //定义方法 connect
    func connect(){
        print("connect with another block")
    }
    //定义方法 remove
    func remove(){
        print("disconnect with another block")
    }
}

//调用类,并指定为 oneBlock
let oneBlock:Lego = Lego()
//查看类的属性
oneBlock.color
//修改类的属性
oneBlock.size = 4
//调用类别的方法
oneBlock.connect()
oneBlock.remove()

带参数的初始化类

class Baby{
    var name:String
    var age:Int
    func sleep(){
        print("sleep")
    }
    //init是初始化类时会执行的功能,通常在这里面定义类的初始值
    init(){
        name = "Tom"
        age = 1
        //在生成初始值之后可以调用类里的方法
        sleep()
    }
    //有参数的初始化方法
    init(name:String,age:Int){
        //记得加self
        self.name = name
        self.age = age
    }
}

//查看类
Baby()

//初始化类,命名为 newBaby
let newBaby = Baby()
//初始化类(有参数),命名为 newBaby2,并设置name为Sopia
let newBaby2 = Baby(name: "Sophia”,age: 1)

子类别的覆写

//定义一个类 Baby
class Baby{
    var name:String
    var age:Int
    func sleep(){
        print("sleep")
    }
    init(name:String,age:Int){
        //记得加self
        self.name = name
        self.age = age
    }
}
//定义 Baby 的子类 cuteBaby,他拥有Baby所有的特性,还有自己专属的内容
class cuteBaby:Baby{
    var nickname:String
    func danceAndSing(){
        print("dance and sing")
    }
    //通过 override 覆写父类别中的功能,这样就只会调用自己覆写后的功能
    override func sleep() {
        print("sleep with cute smile")
        //使用 super 方法执行父类别中的原始功能
        super.sleep()
    }
    //覆写init
    override init(name:String,age:Int){
        nickname = "QQ"
        super.init(name:"Bill", age: 1)
    }
}

内存的生成和回收机

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SwiftUI是苹果公司推出的一款全新的UI框架,可以用于开发iOS、iPadOS、macOS、watchOS等操作系统上的应用程序。在SwiftUI中,开发者可以使用简单易懂的语法和组件来构建应用程序的UI界面,同时也可以方便地实现各种交互效果和动画效果。 对于视频播放器的开发,SwiftUI也提供了相关的组件和API,可以轻松实现视频的播放和控制。同时,SwiftUI也提供了对核心图像的实时处理支持,开发者可以使用Metal等技术对视频图像进行实时处理,实现各种特效和滤镜效果。 在SwiftUI中,实现视频播放器可以使用`AVPlayer`和`AVPlayerLayer`等组件,同时也可以使用`VideoPlayer`组件快速构建一个基本的视频播放器。对于实时处理核心图像,可以使用`MTKView`组件和`MetalPerformanceShaders`框架来实现。 下面是一个示例代码,演示如何使用SwiftUI实现一个简单的视频播放器,并对视频进行实时处理: ```swift import SwiftUI import AVKit import MetalKit import MetalPerformanceShaders struct VideoPlayerView: UIViewRepresentable { let player: AVPlayer let filter: MPSImageGaussianBlur func makeUIView(context: Context) -> some UIView { let playerLayer = AVPlayerLayer(player: player) playerLayer.videoGravity = .resizeAspectFill playerLayer.frame = UIScreen.main.bounds let metalView = MTKView(frame: UIScreen.main.bounds) metalView.device = MTLCreateSystemDefaultDevice() metalView.colorPixelFormat = .bgra8Unorm let commandQueue = metalView.device?.makeCommandQueue() let textureDescriptor = MTLTextureDescriptor.texture2DDescriptor( pixelFormat: .bgra8Unorm, width: Int(metalView.frame.width), height: Int(metalView.frame.height), mipmapped: false) let texture = metalView.device?.makeTexture(descriptor: textureDescriptor) filter.encode(commandBuffer: commandQueue!.makeCommandBuffer()!, sourceTexture: texture!, destinationTexture: texture!) metalView.texture = texture let stackView = UIStackView(frame: UIScreen.main.bounds) stackView.axis = .vertical stackView.distribution = .fillEqually stackView.addArrangedSubview(playerLayer) stackView.addArrangedSubview(metalView) return stackView } func updateUIView(_ uiView: UIViewType, context: Context) { } } struct ContentView: View { let player: AVPlayer var body: some View { VideoPlayerView(player: player, filter: MPSImageGaussianBlur(device: MTLCreateSystemDefaultDevice()!, sigma: 10.0)) } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView(player: AVPlayer(url: URL(string: "https://example.com/video.mp4")!)) } } ``` 在上面的示例代码中,`VideoPlayerView`是一个UIViewRepresentable,用于将AVPlayer和实时处理的MetalView结合起来。在`makeUIView`方法中,首先创建一个AVPlayerLayer和一个MTKView,并将它们添加到一个UIStackView中。然后,创建一个MPSImageGaussianBlur实例,并使用MetalPerformanceShaders框架对视频图像进行高斯模糊处理,最后将处理结果渲染到MTKView中。 在`ContentView`中,创建AVPlayer实例并将其传递给VideoPlayerView。通过这种方式,可以轻松实现一个支持实时处理核心图像的视频播放器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值