本地化的UILabel与背景

时间:2014-02-24 19:13:07

标签: ios objective-c localization uilabel

我有两种语言的应用程序(英语和德语),应用程序包含带背景的标签。在英语中,一切都还可以,但是在德语中,UIL用于缩短,文本中的文本缩短为3个点。喜欢:

enter image description here

我可以添加一些自动调整大小的属性,将标签大小调整为正确的大小吗?最后一件事是我有很多标签只有界面。我想节省一些时间并在界面中弄明白。是否可以或唯一的方法是将sizeToFit设置为标签?谢谢你的建议。

3 个答案:

答案 0 :(得分:2)

所以你想要做的是,在界面中设置sizeToFit。

这很容易。

在“属性”检查器中设置AutoShrink属性,它将等于适合的大小。

此外,您甚至可以指定最小字体大小和字体比例。

Reference : Side screen screenshot for better understanding

答案 1 :(得分:1)

Kakshil的答案适用于您不想调整标签大小以实际适合所包含文本的情况。它将减少文本的磅值以尝试适合可用空间。对于真正动态的文本,这可能是最好的选择。

另一方面,如果您想要实际调整标签大小以适合文本,则可以在更改标签文本后调用[label sizeToFit]。或者,您可以使用sizeThatFits:来使用修改后的边界,您不希望标签过大或过小。

答案 2 :(得分:1)

我自定义了我的标签,添加了本地化并设置了嵌入框架。怎么样简单但一个缺点是我必须将tag设置为关键。我的解决方案是:

- (void)layoutSubviews {
    NSString *key = [NSString stringWithFormat:@"%d", self.tag];
    self.text = NSLocalizedString(key, nil);

    CGSize textSize = [self.text sizeWithAttributes:@{NSFontAttributeName:self.font}];
    CGFloat strikeWidth = textSize.width;

    [self setFrame:CGRectMake(self.frame.origin.x, self.frame.origin.y, strikeWidth + 20, self.frame.size.height)];
    [super layoutSubviews];
}

- (void)drawTextInRect:(CGRect)rect {
    UIEdgeInsets insets = {0, 5, 0, 5};
    [super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)];
}