自定義
NavigationController
繼承于系統(tǒng)UINavigationController
導(dǎo)入頭文件
#import <objc/runtime.h>
-
NavigationController
中實(shí)現(xiàn)如下方法// OBJC - (void)viewDidLoad { [super viewDidLoad]; // 取出系統(tǒng)pop手勢(shì)的`target`和`action` NSArray *targetObjs = [self.interactivePopGestureRecognizer valueForKey:@"_targets"]; id target = [targetObjs.firstObject valueForKey:@"target"]; SEL sel = NSSelectorFromString(@"handleNavigationTransition:"); UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:target action:sel]; [self.view addGestureRecognizer:panGesture]; } // swift override func viewDidLoad() { super.viewDidLoad() // 獲取系統(tǒng)pop手勢(shì)的target和action guard let targets = interactivePopGestureRecognizer?.value(forKey: "_targets") as? [NSObject] else { return } let targetObj = targets.first let target = targetObj?.value(forKey: "target") let action = Selector(("handleNavigationTransition:")) let panGesture = UIPanGestureRecognizer(target: target, action: action) view.addGestureRecognizer(panGesture) }
-
runtime
的使用- OBJC unsigned int outCount = 0; Ivar *ivars = class_copyIvarList([UIGestureRecognizer class], &outCount); unsigned int outCountMethod = 0; Method *methods = class_copyMethodList([UIGestureRecognizer class], &outCountMethod); for (unsigned int i = 0; i < outCount; i++) { Ivar ivar = ivars[i]; NSString *key = [NSString stringWithUTF8String:ivar_getName(ivar)]; NSLog(@"%@", key); } NSLog(@"=========="); for (unsigned int i = 0; i < outCountMethod; i++) { Method method = methods[i]; SEL sel = method_getName(method); NSString *selName = NSStringFromSelector(sel); NSLog(@"%@", selName); } - swift // 獲取 UIGestureRecognizer 的屬性列表 var count: UInt32 = 0 let ivars = class_copyIvarList(UIGestureRecognizer.self, &count)! for i in 0..<count { let nameP = ivar_getName(ivars[Int(i)])! let name = String(cString: nameP) print(name) }
runtime實(shí)現(xiàn)全屏pop手勢(shì)
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
推薦閱讀更多精彩內(nèi)容
- 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
- 運(yùn)行時(shí)(runtime)簡單來說就是我們通常用swift或oc編寫的代碼在運(yùn)行的時(shí)候都會(huì)通過運(yùn)行時(shí)轉(zhuǎn)換成底層的C(...
- Runtime是一套比較底層的純C語言API,包含了很多底層的C語言API。在我們平時(shí)編寫的OC代碼中,程序運(yùn)行時(shí)...
- 轉(zhuǎn)載:http://yulingtianxia.com/blog/2014/11/05/objective-c-r...
- 最近有朋友想了解runtime在這里軍哥就淺析一下runtime 1.首先你要了解什么是runtime答: run...