/// 寻找子视图
func findSubview(type: UIResponder.Type, resursion: Bool)-> UIView? {
for e in self.subviews.enumerated() {
if e.element.isKind(of: type) {
return e.element;
}
}
if resursion == true {
for e in self.subviews.enumerated() {
let tmpView = e.element.findSubview(type: type, resursion: resursion)
if tmpView != nil {
return tmpView;
}
}
}
return nil;
}
// 使用示例
@objc public extension UISearchBar{
var textfield: UITextField? {
get {
var obj = objc_getAssociatedObject(self, RuntimeKeyFromSelector(#function)) as? UITextField;
if obj == nil {
obj = self.findSubview(type: UITextField.self, resursion: true) as? UITextField
objc_setAssociatedObject(self, RuntimeKeyFromSelector(#function), obj, .OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
return obj;
}
}
var cancellBtn: UIButton? {
get {
var obj = objc_getAssociatedObject(self, RuntimeKeyFromSelector(#function)) as? UIButton;
if obj == nil {
obj = self.findSubview(type: (NSClassFromString("UINavigationButton") as! UIResponder.Type).self, resursion: true) as? UIButton
objc_setAssociatedObject(self, RuntimeKeyFromSelector(#function), obj, .OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
return obj;
}
}
}
网友评论