xcode – 故事板/ XIB和本地化最佳实践

前端之家收集整理的这篇文章主要介绍了xcode – 故事板/ XIB和本地化最佳实践前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
XIB / Storyboard本地化的 officially recommended method是为您要支持的每个本地化的xx.lproj(其中xx是双字母语言ID)创建.xib和.storyboard文件.

这会产生一个问题,因为您有多个文件在许多情况下共享相同的UI,容易发生变化.如果您想重新设计一个视图的UI,则必须多次执行(更糟糕的是,如果您在xib本身中输入了可本地化的字符串值).这违反了DRY原则.

调用需要它的NSLocalizedString()似乎更有效率,只需使用一个XIB或Storyboard进行一个本地化.

那么,为什么(不)我创建本地化的XIB / Storyboard文件

解决方法

为了更改文本标签,我做了这样的事情
+(void) replaceTextWithLocalizedTextInSubviewsForView:(UIView*)view
{
    for (UIView* v in view.subviews)
    {
        if (v.subviews.count > 0)
        {
            [self replaceTextWithLocalizedTextInSubviewsForView:v];
        }

        if ([v isKindOfClass:[UILabel class]])
        {
            UILabel* l = (UILabel*)v;
            l.text = NSLocalizedString(l.text,nil);
            [l sizeToFit];
        }        

        if ([v isKindOfClass:[UIButton class]])
        {
            UIButton* b = (UIButton*)v;
            [b setTitle:NSLocalizedString(b.titleLabel.text,nil) forState:UIControlStateNormal];
        }        
    }    
}

在你的viewDidLoad中调用函数:像这样:

[[self class] replaceTextWithLocalizedTextInSubviewsForView:self.view];

当我们想要的是本地化的标签时,它节省了大量的工作声明和连接IBOutlets.

原文链接:https://www.f2er.com/iOS/336297.html

猜你在找的iOS相关文章