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

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

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

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

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

解决方法

为了更改文本标签,我做了这样的事情
  1. +(void) replaceTextWithLocalizedTextInSubviewsForView:(UIView*)view
  2. {
  3. for (UIView* v in view.subviews)
  4. {
  5. if (v.subviews.count > 0)
  6. {
  7. [self replaceTextWithLocalizedTextInSubviewsForView:v];
  8. }
  9.  
  10. if ([v isKindOfClass:[UILabel class]])
  11. {
  12. UILabel* l = (UILabel*)v;
  13. l.text = NSLocalizedString(l.text,nil);
  14. [l sizeToFit];
  15. }
  16.  
  17. if ([v isKindOfClass:[UIButton class]])
  18. {
  19. UIButton* b = (UIButton*)v;
  20. [b setTitle:NSLocalizedString(b.titleLabel.text,nil) forState:UIControlStateNormal];
  21. }
  22. }
  23. }

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

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

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

猜你在找的iOS相关文章