过滤UILable的特殊文字,重写setText

    xiaoxiao2025-01-10  11

    #import

    //重写initialize

    + (void)initialize

    {

        // 获取到UILabelsetText对应的method

        Method setText =class_getInstanceMethod([UILabel class], @selector(setText:));

        Method setTextMySelf =class_getInstanceMethod([self class],@selector(setTextHooked:));

        

        // 将目标函数的原实现绑定到setTextOriginalImplemention方法上

        IMP setTextImp =method_getImplementation(setText);

        class_addMethod([UILabelclass], @selector(setTextOriginal:), setTextImp,method_getTypeEncoding(setText));

        

       //然后用我们自己的函数的实现,替换目标函数对应的实现

        IMP setTextMySelfImp =method_getImplementation(setTextMySelf);

        class_replaceMethod([UILabelclass], @selector(setText:), setTextMySelfImp,method_getTypeEncoding(setText));

    }

     

    - (void)setTextHooked:(NSString *)string

    {

        

       //在这里插入过滤算法

        string = [stringstringByReplacingOccurrencesOfString:@" " withString:@"\r\n"];

        

        // do something what ever youwant

        

        // invoke originalimplemention

        [selfperformSelector:@selector(setTextOriginal:) withObject:string];

    }

    转载请注明原文地址: https://ju.6miu.com/read-1295343.html
    最新回复(0)