5

我正在使用新的 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 文件中获取自动翻译。

有人有想法吗?

谢谢 !

4

3 回答 3

1

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

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

你提交过错误吗?

于 2013-06-26T19:33:45.233 回答
1

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

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

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

在您的故事板中,选择您的标签,选择身份检查器并添加以下用户定义的运行时属性

键路径: thinText类型:布尔值 –:选中

于 2013-11-11T11:31:08.273 回答
0

我也遇到了这个问题。我解决了它在每个 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 中删除自定义类。

于 2013-11-28T16:32:30.203 回答