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设值可以获得自己想要的效果。
KVO就看看这篇简书吧:http://www.jianshu.com/p/e59bb8f59302
网友评论