runtime实现全屏滑动

2015-10-14  本文已影响260人  RealSlimAlan

通过运行时机制可以获取到苹果一些私有(没有暴露在外的属性),通过kvc后可以取出来进行修改

使用运行时机制需要先导入头文件#import <objc/runtime.h>

例子:

unsigned int count  = 0;
// 获取UIGestureRecognizer里所有的成员属性数组
Ivar *ivars = class_copyIvarList([UIGestureRecognizer class], &count);
for (int i = 0; i < count; i++) {
    // 获取成员属性
    Ivar ivar =  ivars[i];

    // 获取成员属性的属性名
   NSString *name =   @(ivar_getName(ivar));

//        NSLog(@"%@",name);
}
//发现里面的targets是一个数组,继续向下
NSArray *targets = [gesture valueForKeyPath:@"_targets"];
//发现是个UIGestureRecognizerTarget对象,继续向下,发现里面就是调用对象及方法
id targetGesture = targets[0];
//(action=handleNavigationTransition:, target=<_UINavigationInteractiveTransition>)
//通过kvc取出对象
id target = [targetGesture valueForKeyPath:@"target"];
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc]initWithTarget:target action:@selector(handleNavigationTransition:)];
上一篇 下一篇

猜你喜欢

热点阅读