使用故事板中的属性字符串来定位UILabel

我有一个UILabel文本集被设置为故事板中的“归因”。 当我生成Main.strings文件以翻译成其他语言时,此标签的文本不会出现。

我试图通过复制对象ID手动添加一个条目到Main.strings文件中。 我尝试设置“text”属性和“属性文字”属性,但是当我运行应用程序时,翻译后的字符串不被使用。

那么,如何将UILabel集合本地化为故事板上的“归因”?


我最终用故事板和代码的组合来解决这个问题,并将此答案作为参考。

首先,我在故事板上使用的属性字符串仅对整个字符串应用了1.5行间距,因此在保留故事板标签格式的代码上设置文本更为容易。

故事板包含一个UILabel,其文本属性设置为Attributed和1.5行高度倍数。

在我的视图控制器代码中,我有一个setupUI方法和一个UILabel插座。

@interface MyClass ()
@property (weak, nonatomic) IBOutlet UILabel *aLabel;
@end

@implementation MyClass
- (void)setupUI {
    NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithAttributedString:self.aLabel.attributedText];
    [attributedString.mutableString setString:NSLocalizedString(@"This is the label text which should be localisable.", "")];
    self.aLabel.attributedText = attributedString;
}
@end

通过上面的代码,变量attributedString存储了故事板上设置的所有格式,所以当我更改“属性字符串”文本时,我不必再次设置格式。 当然,当我执行“导出本地化”命令时,标签文本出现在Localizable.strings中。

如果对于其内部子字符串,其属性字符串的格式不同,这种情况就不会奏效。 在这种情况下,格式化必须在代码上手动设置(或使用由Jelly发表的评论中所提供的答案所建议的rtf文件)。

链接地址: http://www.djcxy.com/p/90355.html

上一篇: Localising a UILabel with attributed string from a Storyboard

下一篇: NSString property gets null after init method in other methods?