美文网首页UI进价闻道丶iOS(尝鲜版)iOS Developer
RuntimePlayer-干掉「辅助功能」-「按钮形状」开启后

RuntimePlayer-干掉「辅助功能」-「按钮形状」开启后

作者: WELCommand | 来源:发表于2017-08-22 14:06 被阅读209次

    以后每用Runtime解决一个问题,就会记录在这个文集里。

    我将以真实的使用场景为大家讲述Runtime的各种用法,让Runtime真正的投入到生产中。

    合辑demo Github地址

    正文

    按照下面路径开启功能,会发几乎现所有的UIButton的文字下都被加上了下划线。

    设置-通用-辅助功能-按钮形状
    

    效果奇差,具体如下。


    ......

    其实我不知道这个功能的本意到底是什么....

    我只是觉得这个效果很难受,而不管用户是否选择开启这个功能,App里都不应该出现这个下滑线的效果。

    于是我就把这个加下划线的功能干掉了。

    干掉它的代码如下:

    BOOL wel_buttonShapesUnderline(id self, SEL _cmd) {
        return NO;
    }
    
    @implementation UILabel (WELButtonShapesUnderline)
    
    +(void)load {
        Method m = class_getInstanceMethod([UILabel class], NSSelectorFromString(@"_shouldShowAccessibilityButtonShapesUnderline"));
        method_setImplementation(m, (IMP)wel_buttonShapesUnderline);
    }
    
    @end
    

    做这个前后花了不到十分钟,算是这一堆里最好搞的一个。

    我用Aspects钩了Button的所有方法「返回值类型为结构体的方法不能钩,Aspects触发消息转发的方法有问题,只在i386和arm64上跑的通。可以用JSPatch的思路魔改。不过少钩几个方法在这个需求上也是没问题的,这里就不展开说了」

    去设置那里开启「按钮形状」这个功能,回到App,发现Button的几个方法被调用,跟堆栈,很轻松的就能找到这个方法。

    相关文章

      网友评论

      • Liric___:不是私有方法吗
        WELCommand:@liric 是私有方法啊
      • 春泥Fu::joy: 蜜汁笑点,那么多下划线
        春泥Fu:@Leecs 我只是被你妈伺候得很高兴,忍不住笑出声
        4aba49ccadea:@春泥Fu 笑你麻个比,烂人。

      本文标题:RuntimePlayer-干掉「辅助功能」-「按钮形状」开启后

      本文链接:https://www.haomeiwen.com/subject/fjhldxtx.html