搜索
您的当前位置:首页正文

KVC/KVO 简单理解

来源:二三娱乐

KVC-键值编码,如何使用是关键,其实就是利用KVC动态的取值和设值是最基本的用途;对于类里的私有属性,Objective-C是无法直接访问的,但是KVC是可以的;结合Runtime修改基本控件的属性,比如UITextField改变其placeHolder的颜色值,但是不清楚他的属性值怎么办?Runtime就可以实现

let count:UnsafeMutablePointer<UInt32> =  UnsafeMutablePointer<UInt32>()
var properties = class_copyIvarList(UITextField.self, count)
while properties.memory.debugDescription !=  "0x0000000000000000"{
    let t = ivar_getName(properties.memory)
    let n = NSString(CString: t, encoding: NSUTF8StringEncoding)
    print(n)                                                         //打印出所有属性,这里我用了Swift语言
    properties = properties.successor()
}

//上面省略了部分属性
Optional(_disabledBackgroundView)
Optional(_systemBackgroundView)
Optional(_floatingContentView)
Optional(_contentBackdropView)
Optional(_fieldEditorBackgroundView)
Optional(_fieldEditorEffectView)
Optional(_displayLabel)
Optional(_placeholderLabel)                                         //这个正是我想要修改的属性。
Optional(_dictationLabel)
Optional(_suffixLabel)
Optional(_prefixLabel)
Optional(_iconView)
//下面省略了部分属性

可以从里面看到其他还有很多东西可以修改,运用KVC设值可以获得自己想要的效果。

Top