Eli*_*one 5 uitableview ios swift
我正在寻找一种方法,当表处于编辑模式时,将默认删除图标颜色从红色更改为蓝色.
左边的红色图标就是我所说的,并且在将表视图设置为编辑模式时是默认的.
最好将红色图像更改_system.remove为您自己的蓝色图像。
func swizzle() {
guard let cls = NSClassFromString("UITableViewCellEditControl") else { return }
let originalSelector = NSSelectorFromString("_updateImageView")
let swizzledSelector = #selector(UIView._updateImageViewHijack)
let originMethod = class_getInstanceMethod(cls, originalSelector)
let swizzleMethod = class_getInstanceMethod(UIView.self, swizzledSelector)
if let swizzledMethod = swizzleMethod, let originalMethod = originMethod{
method_exchangeImplementations(originalMethod, swizzledMethod)
}
let originalS = NSSelectorFromString("layoutSubviews")
let swizzledS = #selector(UIView.layoutSubviewsHijack)
let originM = class_getInstanceMethod(cls, originalS)
let swizzleM = class_getInstanceMethod(UIView.self, swizzledS)
if let swizzledM = swizzleM, let originalM = originM{
method_exchangeImplementations(originalM, swizzledM)
}
}
extension UIView{
@objc func _updateImageViewHijack(){
_updateImageViewHijack()
for v in subviews{
if let img = v as? UIImageView{
img.image = UIImage(named: "one.png")
}
}
}
@objc func layoutSubviewsHijack(){
layoutSubviewsHijack()
for v in subviews{
if let img = v as? UIImageView{
img.image = UIImage(named: "one.png")
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
swizzle()应该只调用一次。
结果:
怎么知道UITableViewCellEditControl?
如何知道 的方法UITableViewCellEditControl?
通过runtime
var count: UInt32 = 0
guard let methodArr = class_copyMethodList(NSClassFromString("UITableViewCellEditControl"), &count) else { return }
let cnt = Int(count)
for i in 0..<cnt{
let method = methodArr[i]
let name = method_getName(method)
if let type = method_getTypeEncoding(method){
print(name, String(utf8String: type) ?? " _ | _ ")
}
}
Run Code Online (Sandbox Code Playgroud)
如何知道图像的大小_system.remove?
和
| 归档时间: |
|
| 查看次数: |
1072 次 |
| 最近记录: |