objective-c - iOS如何使用runtime对富文本进行国际化
PHPz
PHPz 2017-04-18 09:05:24
0
1
263

使用runtime对程序进行国际化之后发现之前的富文本没有更改,后来单独对富文本重写方法,但是进行国际化之后原本的富文本字符串就变回了普通的字符串,下面是我偷换方法的代码

SEL selA1 = @selector(changeTitle:); Method methodA1 = class_getInstanceMethod(self, selA1); Method methodB1 = class_getInstanceMethod(self, @selector(setAttributedText:)); method_exchangeImplementations(methodA1, methodB1); - (void)changeTitle:(NSAttributedString *)title{ NSString *anotherString=[title string]; NSString *str = NSLocalizedStringFromTable(anotherString, @"File", nil); NSMutableAttributedString *attributedString=[[NSMutableAttributedString alloc] initWithString:str attributes:nil]; // [attributedString setAttributes:@{NSForegroundColorAttributeName:[NSColor redColor]} range:NSMakeRange(0, 5)]; [self changeTitle:attributedString]; }

当前类是UILabel类,我偷换的是setAttributedText:方法.还有一个问题就是即时我对富文本本地化成功了,但是富文本的格式也会变化,range会改变,请问如何解决此问题

PHPz
PHPz

学习是最好的投资!

reply all (1)
大家讲道理

= = Personally, I don’t recommend doing this. Runtime must be used with restraint. I feel that it is abused when used for localization.

If you want to use it, it is recommended to only slightly modify iton the basis of the original method, and finally adjust the original method. Rather than changing the meaning of the entire method. In your code, the lineloses attributes and becomes a normal string.NSString *anotherString=[title string];

    Latest Downloads
    More>
    Web Effects
    Website Source Code
    Website Materials
    Front End Template
    About us Disclaimer Sitemap
    php.cn:Public welfare online PHP training,Help PHP learners grow quickly!