首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我想要有uiview的扩展来在swift中存储属性

在Swift中,可以通过扩展(extension)来为UIView添加存储属性。扩展允许我们向现有的类、结构体、枚举或协议添加新的功能。

首先,我们需要创建一个扩展来为UIView添加存储属性:

代码语言:swift
复制
extension UIView {
    private struct AssociatedKeys {
        static var customProperty: String = "customProperty"
    }
    
    var customProperty: Any? {
        get {
            return objc_getAssociatedObject(self, &AssociatedKeys.customProperty) as Any?
        }
        set {
            objc_setAssociatedObject(self, &AssociatedKeys.customProperty, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
        }
    }
}

上述代码中,我们使用了Objective-C的运行时特性来实现存储属性。通过AssociatedKeys结构体,我们定义了一个名为customProperty的关联键。在get和set方法中,我们使用objc_getAssociatedObject和objc_setAssociatedObject来获取和设置关联对象。

现在,我们可以在任何UIView的实例上使用customProperty存储属性。例如:

代码语言:swift
复制
let view = UIView()
view.customProperty = "Hello, World!"
print(view.customProperty) // 输出 "Hello, World!"

这样,我们就成功地为UIView添加了一个自定义的存储属性。

在云计算领域,UIView的扩展可以用于在移动应用开发中存储与界面相关的自定义属性。例如,可以使用customProperty来存储某个视图的唯一标识符,以便在后续的操作中进行识别和处理。

腾讯云相关产品和产品介绍链接地址:

请注意,以上仅为示例产品,实际应根据具体需求选择适合的腾讯云产品。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Swift 面向对象解析(二)

二:类构造与析构 由于类继承,子类不仅包括了自己定义存储属性,还包括从父类继承得到存储属性,类所有存储属性,包括所有的继承父类属性构造过程必须设置初始值,因此类构造过程相对比较复杂...先把扩展提供功能列举出来;         1:添加类型存储属性         2:添加实例计算属性和类型计算属性         3:添加实例方法和类型方法         4:添加新构造器,而且新添加构造器不影响原来构造器...看下面的代码例子,下面是给UIView扩展了两个方法: // MARK: - UIView扩展方法 extension UIView{ func containsSubView(subView...Swift学习笔记(十一)--拓展和协议 Swift协议和扩展 六  协议: Swift 协议作用类似于 OC协议,其实OC协议你理解的话,这里也就没多少需要在强加去解释。...协议基本用法以前博客当中也有说过 Swift 2.2 协议和代理          顺便指出,可选协议这一点,其实也挺简单,你在这些属性、方法、下标等让它是可选,让它加上 optional

95070

iOS从Xib设置样式

项目中找文件 有时候搜索一个文件,常规做法是鼠标点击左下角搜索框,再输入文字,这太慢了,快捷键是:Cmd + Option + J .h和.m切换 .h和.m直接切换从来不用触摸板和鼠标,因为...添加第三方字体 把字体ttf文件像普通文件加入到项目中,xib或storyboard中就可以直接使用新字体了 属性设置 但是很多属性设置 xib是不能完全自定义,作为一个喜欢用xib这种方式码客来说...,当然能最大限度使用xib可自定义属性当然是极好,下面就说一下一些不常用从xib可设置属性 这些属性设置右面设置菜单第三个选项卡User Defined Runtime Attributes...Xcode 6以上支持一种新方法,特好用 其实就是为UIView添加扩展 或 继承 添加IBInspectable属性 既可以图形化设置某些属性 这样右侧第四个选项卡神奇出现了自定义设置项...下实现方式(扩展) UIView+Border&CornerRadius.swift import Foundation import UIKit extension UIView {

2.3K20

《Motion Design for iOS》(十七)

iOS提供了一些内置技术创建动画:创建并添加一个CAAnimation到我们之后要讨论layer,或者使用简单基于block动画方法动画化UIView值。...Core Animation会自动球的当前尺寸值和你最终值之间更改来产生一个平滑动画。这一次,希望动画能最终让球变成两倍大,所以我设置了球transform属性为一个新值。...有很多方式操作一个视图transform(尺寸、旋转、位置),所以苹果提供了很多函数来改变你感兴趣值,我们例子,是尺寸。...将transform属性设为`CGAffineTransformMakeScale(2.0, 2.0)意味着我们想要其他所有的值都保持不变,除了尺寸,我们让尺寸变为原来两倍。...代码块我们可以改变很多视图相关属性,它们会在同一个持续时间内一起动画。

94020

Swift Runtime ?

你肯定也想过       OC相信每一个iOS开发都知道Runtime, 现在Swift也更新到4.0版本了,要是你也学习过Swift的话你可能也会想过这样一个问题,OC大家都知道是有动态性,你能通过...Swift 对于继承自OC类,为了兼容OC,凡是继承与OC都是保留了它特性,所以可以使用Runtime获取到它属性和方法等等其他我们OC获得东西。      ...想一,要是真的Swift没办法利用Runtime,那是一件得多让人失望事!答案也肯定是否定,我们还是能让Swift用Runtime。...对于纯粹Swift类,由于前面的测试你知道无法拿到类属性饭方法等,也就没办法进行方法替换,但是对于继承自NSObject类,由于集成了OC所有特性,所以是可以利用Runtime属性进行方法替换...") }       5、关联属性            说上面的方法Hook比较重要的话,这个关联属性也是比较重要,在前面总结OCRuntime时候方法添加这里专门有提过一个Demo

4.9K71

谈谈Swiftextension

而在Swift,Int是一个struct(结构体),并不是个class。但是Swiftstruct与别的语言中struct不同是,struct内部也可以定义方法。...嗯,很遗憾SwiftInt并没有times方法。不过没关系,这个时候extension就派上用场了。没有我们就自己写一个嘛,私人化定制,满足一切突如其需求。...extension不仅可以扩展方法,还可以扩展计算属性。...因为项目中Button是一个自定义贪婪Button,只要点击Button父视图就会响应点击事件,所以是Buttonsuperview调用了animateWhenClicked,这也是把这个动画扩展到...个人很喜欢extension,平常也经常使用。extension也可用于后期项目维护,可以不修改旧代码前提下扩展旧代码功能。

51420

Swift-Runtime总结

Swift 对于继承自OC类,为了兼容OC,凡是继承与OC都是保留了它特性,所以可以使用Runtime获取到它属性和方法等等其他我们OC获得东西。      ..."没有找到你要属性"); } 通过上面的方法我们获取到日志如下:     可以看到我们获取到了我们ViewController定义变量。这样也就证明了的确是上面答案说那样。 ...对于纯粹Swift类,由于前面的测试你知道无法拿到类属性饭方法等,也就没办法进行方法替换,但是对于继承自NSObject类,由于集成了OC所有特性,所以是可以利用Runtime属性进行方法替换...") }       5、关联属性       说上面的方法Hook比较重要的话,这个关联属性也是比较重要,在前面总结OCRuntime时候方法添加这里专门有提过一个Demo,我们把这个...Demo重新整理一下,导航渐变就是利用Runtime给导航添加属性实现

80230

iOS 面向协议封装全屏旋转功能

关于使用面向协议封装功能实战可以参考上篇文章 【iOS 面向协议方式封装空白页功能】,这里就不再赘述,我们直接进入使用阶段吧。...本篇文章只有一个目的,那就是只要遵守协议,一行代码随意切换全屏~ 如果对面向协议有疑问同学可以看下之前两篇文章 iOS - Swift 面向协议编程(一) iOS - Swift 面向协议编程...return UIInterfaceOrientationMask.landscape } return .portrait } 二、使用案例 方法与属性调用都需要命名空间加上 lxf...lxf_FullScreenable_3 结语 到这里相关说明已罗列完毕,有什么不清楚可以下载Demo看看,或者文章下方留言提问 LXFProtocolTool 主要是通过协议方式方便快捷地实现一些实用功能...如果你有什么实现功能也可以提出来,喜欢就给个Star鼓励下吧 ? ? ?,感谢支持!

1K60

【从零开始用Swift开发一个iOS应用(仿微博)】开篇-1. demo上手体验

三、上述示例swift与object-c语法对比 3.1 创建视图类比 - Swift: UIView(XXX:) - OC: [[UIView alloc] initWithXXX:] 类名()...== alloc / init 等价 3.2 类方法类比 Swift: UIColor.yellow OC: [UIColor yellow] 3.3 访问当前对象属性类比 建议:都不使用self...,不需要使用`:` OC: @selector 3.7 调试对比 Swift: print(xxx) 效率高,log不包含时间,用#function打印当前执行方法 OC: NSLog,用__FUNCTION...__ 打印当前执行方法 四、注释妙用 当我们标注某段代码是需要refine,我们可以添加注释标签:TODO。...如下图所示,注释添加了MARK、TODO、FIXME标签前缀,这些特殊标记锚点菜单将会显示导航栏上,点击菜单即可跳转到对应注释地方,非常方便。 ?

3.8K31

【Dev Club分享】JSPatch成长之路

JS 写 UIView.allOC(), 然后传给 JavascriptCore 执行,JavascriptCore 把要调用信息,这里类名是 UIView,类方法名是 alloc 传递给 OC...要让这条语句 JS 环境可以执行, JS 语言规则下,UIView 必须是一个对象,alloc 必须这个对象一个方法。 也就是说要像这样定义后才可以执行: ?...二、发展 接下来说说 JSPatch 是怎样进行进一步发展完善 JSPatch 同时,也在想,如何把 hotfix 做得更好。 主要有两个思路: 降低使用门槛 提高使用效率 ?...Swift 相关问题在 wiki 里有提到: 只支持调用继承自 NSObject Swift 类 继承自 NSObject Swift 类,其继承自父类方法和属性可以 JS 调用,其他自定义方法和属性同样需要加...若方法参数/属性类型为 Swift 特有(如 Character / Tuple),则此方法和属性无法通过 JS 调用。 Swift 项目 JSPatch 新增类与 OC 无异,可以正常使用。

1.6K40

Swift开发规范-修订版

前言 《Swift开发规范》发布之后得到了很多Swifter关注,很多读者提议最好为每条规约添加一些代码示例,其实在发布之前,就考虑到要加代码示例这件事,但是后来还是因为偷懒没加。...正例:kMaxLocaolStoreCount 【推荐】扩展文件,用“原始类型名+扩展名”作为扩展文件名,其中原始类型名及扩展名也使用 UpperCamelCase 风格,如果扩展文件功能不属于同一类...,也可使用“原生类型名 +Extensions”形式; 正例:UIView+Frame.swift / MessageViewController+Request.swift / UIViewExtensions.swift...【推荐】代码灵活使用一些地标注释,如MARK、FIXME、TODO,当同一文件存在多种类型定义或者多种逻辑时,可以使用Mark进行分组注释,方便通过Xcode顶部面包屑进行切换; 代码示例: /...,最后一个选项后面也添加逗号;这样未来如果有元素加入会更加方便; 【推荐】布尔类型属性使用 is 作为属性名前缀,返回值为布尔型类型方法名使用 is 作为方法名作为前缀; 【推荐】使用 guard 提前结束条件

1.7K50

Swift3.0 - 设计技巧_扩展深入

本机重点探讨扩展写法 需求:给UIView 扩展一个获取width 和height 属性 extension UIView{ var width:CGFloat{ return...,或者系统框架以后也增加了一个这样属性,你写这个就会报冲突错误 有人说好办,加个前缀,我们继续改进一下 extension UIView{ var os_width:CGFloat{...,当然Swift 有自己更优雅写法,过程有点复杂,按照步骤写 第一步 创建一个泛型结构体,里面定义一个属性,接受传进来值 struct Auto{ let base:Base...,因为UIView 下载是没有实现协议Compatible 所以不能调用os这个属性, 刚才说Auto 是泛型,where 后面的意思就是Base 如果是UIView类型,这个扩展才有效,即给base...为UIView 类型对象扩展属性,这个时候系统会自动推断Base 为UIView 类型,所以能调出frame属性 第五步 让UIView 实现协议 extension UIView:Compatible

32330

抓住iOS未来 - 30天学习编写30个Swift小程序

其实并不是唯一国内发起这个30天30个Swift小程序并且将其开源作者,但是可能是唯一一个从头到尾用XCode 8 + Swift3环境编写作者。...- PositionAnimation既可以通过直接修改frameorigin属性,也可以直接通过UIViewtransform进行修改 - Opacity直接改Alpha值就可以了 - Scale...double(forKey: "lefttime") 为了让widget里数据也进行同步更新,可以extension代码里也加入一个timer进行同步操作。...Custom Font.gif 学到了 如何修改字体属性,熟悉字体属性 字体名称可以去storyboard查询,或者通过如下代码进行查询: func printAllSupportedFontNames...image.png 下一步,打算再重新梳理下Swift语法,对这些项目进行小规模重构,从结构上去看看能否挖掘到Swift特性,从另一个角度(目前是功能角度)学习Swift

2.4K20

Swift基础语法(四)

} extension TestProtocol where Self : UIView{ } @objc关键字 Swift,很多地方都用到了@objc关键字,尤其是一些混编项目中。...出于安全考虑,我们需要在暴露给OC使用类、属性和方法前面加上@objc。那么Swift,哪些地方用到了这个关键字呢?...private:只在当前类能被访问。需要注意是,Swift4之后,private属性作用域扩大到了extention,也就是说,扩展也能访问private属性。...4,Swift文件内容如下: import UIKit class NormanPerson: NSObject { //Swift代码,将需要暴露给OC调用属性和方法前面加上@objc...Swift类名完整形式是:“命名空间+类名”,我们可以尝试打印当前类查看一下完整名字: class ViewController: UIViewController { override

3.9K20

Ios常用第三方框架(一)

SnapKit - 就是“snap”, --swift 喜欢自动布局吗?当然喜欢!至少storyboard创建时会喜欢。...代码纯手工创建约束灰常痛苦,但幸运是我们有了SnapKit,board中用上它,你可以简单直观地编写约束了。...PureLayout 通过一个全面的Auto Layout API 扩展UIView/NSView, NSArray 和 NSLayoutConstraint,仿照苹果自身框架。...第二个Demo模拟了一个经典FlowLayout,任意一个元素隐藏时,底下元素需要自动“顶”上来,配合这个扩展,你可以IB里连一连,选一选,不用一行代码就能搞定。...简单易用属性文本控件(无需了解CoreText),支持富文本,图文混排显示,支持添加链接,image和UIView控件,支持自定义排版显示。

5.4K31

MyLayout和XIB或SB混合使用方法

MyLayout是一个可以非常简单和方便实现各种界面布局第三方开源库。github项目中大部分DEMO都是通过代码实现界面布局,但这并不是表示MyLayout不支持XIB和SB。...当某个自定义属性无法attributes inspector标签设置时,您可以User Defined Runtime Attributes 进行设置,在这里添加了对布局视图gravity设置...(假如你用AutoLayout设置约束的话,相信要实现同样功能,您一定要设置非常多约束完成吧。)在这里唯一缺陷就是MyLayout属性设置无法XCODE界面编辑器中所见即所得。...布局套布局 上图中将中间视图UIView类改为了MyLinearLayout。并设置了orientation属性为1也就是水平线性布局方向,同时设置了水平线性布局四周边界为10。...因此当你用TangramKit进行界面布局时,您可以XCODE界面编辑器中将对应界面视图添加上去。然后通过建立插座变量代码设置各种布局属性

86040

202 - Swift 核心是什么?

直到去年,也就是16 年, 2.2 版本出来之后,感觉 Swift 还算比较稳定了,才决定使用 Swift 开发一个简单项目,当时决定模仿一个 app 练手,也就是现在在 github 上那个项目了...,只能说 OC 是 C 语言超集,或者说是 C 语言扩展 C 语言基础上增加了面向对象思想。...如今已经过去两年, struct 数量应该更多了。既然 Swift 里用了这么多 struct,为什么我们不试试用 struct 呢?...当我自定义 UIView 时候,让 view 从 xib 加载,那么就需要在每个类里都写一个从 xib 加载类方法,如下代码: static func classMethodCreateView...,可以阅读下面的文章:理解Swiftstruct和class不同情况下性能差异,文章介绍很详细,这里也不再详细介绍了。

94620

AVKit框架详细解析(四) —— 基于AVKit 和 AVFoundation框架视频流App构建

有些人制作关于他们旅行艺术电影,有些人想在自己舒适床上享受这些体验。 你这里是为了让这两个梦想成真。 在此过程,您将学习 AVKit 和 AVFoundation 框架基础知识。...Adding Local Playback 您可以播放两种类型视频。 您将看到第一个是当前位于手机存储类型。 稍后,您将学习如何从服务器播放视频流。...这就是应用程序如何用数据填充现有列表方式。 视频本身来自嵌入应用程序包 JSON 文件。 如果您好奇,您可以查看 Video.swift 以了解它们是如何获取。...添加以下属性覆盖告诉 LoopingPlayerView.swift 它应该使用 AVPlayerLayer 而不是普通 CALayer: override class var layerClass...要在 Swift 中使用 KVO——比 Objective-C 好得多——你需要保留对观察者引用。

6.9K10
领券