美文网首页
SwiftUI-属性包装器介绍

SwiftUI-属性包装器介绍

作者: xiaofu666 | 来源:发表于2023-04-06 12:22 被阅读0次

属性包装器就是对属性的get和set方法经过包装处理,例如我们实现一个MyColor结构体,允许用户传入R,G,B三种颜色的值,但是RGB的值是限定在0-255之间,如何防范用户传入错误的值呢,此时我们可以实现自定义属性包装器,对R,G,B三种颜色的值进行包装,让其符合颜色的0-255之间的要求,示例代码如下:

@propertyWrapper
struct ClamppedValue {
    private var storedValue: Int = 0

    var wrappedValue: Int {
        get {
            return self.storedValue
        }
        set {
            if newValue < 0 {
                self.storedValue = 0
            } else if newValue > 255 {
                self.storedValue = 255
            } else {
                self.storedValue = newValue
            }
        }
    }

    init(wrappedValue initialValue: Int) {
        self.wrappedValue = initialValue
    }
}

struct MyColor {
    @ClamppedValue var red: Int
    @ClamppedValue var green: Int
    @ClamppedValue var blue: Int
}

let color: MyColor = MyColor(red: 50, green: 500, blue: 50)
print("color.red is \(color.red)")
print("color.green is \(color.green)")
print("color.blue is \(color.blue)")

相关文章

  • SwiftUI 属性包装器(property wrappers)

    包装属性包装器(Wrapping up property wrappers) 使用属性包装器(property w...

  • swift属性包装器 propertyWrapper

    swift属性包装器 propertyWrapper 什么是属性包装器「propertyWrapper」? 在类、...

  • DynamicProperty和propertyWrapper介

    本文分两部分,第一部分是介绍常用的属性包装器,第二步部分是自定义属性包装器 + 动态属性分析 一、SwiftUI常...

  • 属性包装器

    属性包装器

  • 属性包装器

    定义 管理属性如何存储和定义属性的代码之间添加一个分隔层,需存在一个wrappedValue属性的结构体,在结构体...

  • swift 属性专题

    计算属性 简写设置器 在swift中setter/getter方法的实现 属性观察者 属性包装 属性包装映射值

  • Swift中的 @property Wrapper

    属性包装器 属性包装器在管理属性如何存储和定义属性的代码之间添加了一个分隔层。举例来说,如果你的属性需要线程安全性...

  • Swift5.2 拾遗笔记(一)

    本文为私人学习笔记,仅仅做为记录使用,详情内容请查阅 中文官方文档。 属性 属性包装器 属性包装器在管理如何存储和...

  • SwiftUI:创建自定义绑定

    由于SwiftUI将绑定更新发送到属性包装器的方式,分配与属性包装器一起使用的属性观察器将无法正常工作,这意味着即...

  • Swift 属性包装器

    示例代码下载[https://github.com/jiuchabaikaishui/SwiftPropertyW...

网友评论

      本文标题:SwiftUI-属性包装器介绍

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