2014-02-24 55 views
0

我有兩種語言(英語和德語)的應用程序,應用程序包含帶背景的標籤。在英語中,一切都很好,但德語中的UILabels要短一些,其中的文字短3點。像:帶背景的本地化UILabel

enter image description here

我可以添加一些自動調整大小屬性,它調整標籤正確的大小?最後一件事是我有很多標籤只有界面。我想節省一些時間,並在界面中找出它。是否有可能或唯一的方法是將sizeToFit設置爲標籤?謝謝你的建議。

回答

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)]; 
} 
2

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

這很容易。

在屬性檢查器中設置自動收縮屬性,並且它將等於適合的大小。

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

Reference : Side screen screenshot for better understanding

+0

謝謝你的建議,但是當我有3個標籤時,他們每個人將有不同的字體大小或規模。我的項目經理會殺了我,因爲它看起來絕對可怕:) –

1

Kakshil的回答會爲你沒有想調整標籤實際上適合包含的文本的情況下工作。它將減少文本的點大小,以適應可用空間。真正的動態文本可能是最好的選擇。另一方面,如果您想要實際調整標籤的大小以適應文本,則可以在更改標籤文本後調用[label sizeToFit]。或者,您可以使用sizeThatFits:使用修改邊界,您不希望標籤變得太大或太小。