【问题标题】:iOS Storyboard localizable strings do not work on UILabel subclassesiOS Storyboard 可本地化字符串不适用于 UILabel 子类
【发布时间】:2013-05-31 11:43:45
【问题描述】:

我正在使用新的 iOS 功能来翻译情节提要 (http://developer.apple.com/library/ios/#referencelibrary/GettingStarted/RoadMapiOS/chapters/InternationalizeYourApp/InternationalizeYourApp/InternationalizeYourApp.html)

这个解决方案的问题,它不适用于我的 UILabel 子类。

这是我的 UILabel 子类的代码:

.h:

#import <UIKit/UIKit.h>
@interface LabelThinText : UILabel
- (void)awakeFromNib;
-(id)initWithFrame:(CGRect)frame;
@end

.m :

@implementation LabelThinText

- (void)awakeFromNib
{
    [super awakeFromNib];
    [self setFont:[UIFont fontWithName:@"Raleway-Light" size:[[self font] pointSize]]];
}

-(id)initWithFrame:(CGRect)frame
{
    id result = [super initWithFrame:frame];
    if (result) {
        [self setFont:[UIFont fontWithName:@"Raleway-Light" size:[[self font] pointSize]]];
    }
    return result;
}

@end    

我想我缺少一些东西来从我的 Storyboard.strings 文件中获取自动翻译。

有人有想法吗?

谢谢!

【问题讨论】:

标签: ios fonts localization translation uistoryboard


【解决方案1】:

我也遇到了这个问题。我解决了它在每个 ViewController 中设置自定义字体。让我给你举个例子:

 CustomViewController.h
@interface CustonViewController

@property (strong, nonatomic) IBOutlet UILabel* someLabel;

@end

CustomViewController.m

- (void)viewDidLoad
{
  [self setUoFonts];
}

- (void)setUpFonts
{
    self.someLabel.font = [UIFont fontWithName:@"AmaticSC-Regular" size:self.someLabel.font.pointSize];  
}

就是这样!您将获得翻译和自定义字体。

记得从 StoryBoard 中删除自定义类。

【讨论】:

    【解决方案2】:

    遇到了同样的问题,我是这样解决的:

    删除您的自定义类,并在 UILabel 上创建一个类别,在您的情况下为 UILabel+ThinText:

    - (void) setThinText:(BOOL)thinText
    {
        if (thinText) {
            [self setFont:[UIFont fontWithName:@"Raleway-Light" size:[[self font] pointSize]]];
        }
    }
    

    在您的故事板中,选择您的标签,选择 Identity Inspector 并添加以下用户定义的运行时属性

    Keypath:thinText – Type:布尔值 – Value:选中

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,出于同样的原因,我在标签中设置了自定义字体。不过,我的策略更笼统一些。我的自定义字体类似于 Helvetica,所以我在 IB 中使用 Helvetica Neue 作为占位符字体。 UILabel 子类将其转换为我的自定义字体,保留字体大小和粗细,因此我可以通过 IB 控制所有这些。

      这让我更容易解决翻译错误(我认为这是一个错误)。我在 viewDidLoad 中递归遍历所有视图,并映射所有 UILabel 字体(如果它们与占位符字体匹配),在我的情况下对 UIButton 也是如此。

      你提交过错误吗?

      【讨论】:

      • 我没有提交错误,但我向 Apple 请求了技术支持。他们告诉我他们必须与工程师详细研究(1 个月前)。还在等待回复...
      • 我遇到了类似的问题。请在收到 Apple 的消息后更新。
      • 还是坏了。奇怪的是,它适用于附加设备的 Xcode 构建,包括模拟器。但分布式构建不会本地化。
      猜你喜欢
      • 1970-01-01
      • 2016-07-09
      • 2015-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-27
      • 2015-04-20
      相关资源
      最近更新 更多