2014-05-17 34 views
1

我使用NSLocalizableStringFromTable來設置我的用戶界面的各種組件的文本。當文本比「界面」構建器中的佔位符文本長時,我遇到了UIButton的問題。這是比較英語和西班牙語的「保存」按鈕的例子:UIButton沒有正確調整currentTitle

Save/Guardar

當我使用的NSLog檢查_theSaveButton的價值,我得到

_theSaveButton。 titleLabel =「保存」
_theSaveButton。 currentTitle = 「和保存」

我一直在使用[_theSaveButton sizeToFit]試過了,但這似乎總是大小的titleLabel而非currentTitle

下面是一個簡單的代碼片段:

[_theSaveButton setAttributedTitle:nil forState:UIControlStateNormal]; 
[_theSaveButton setTitle:NSLocalizedStringFromTable(@"Save", applicationLanguage,nil) forState: UIControlStateNormal]; 

NSLog(@"%@",_theSaveButton.currentTitle); 
NSLog(@"%@",_theSaveButton.titleLabel); 

[_theSaveButton sizeToFit]; 

第一行:我已經包括了setAttributedTitle:這裏nil元素,因爲我在其他地方,這種解決別人的問題看,但它只是在這裏娛樂據我所知。

第二行:setTitle方法似乎正確設置了currentTitle,並且UI上的文本更改如上所示。

所以,最後,我只是想要按鈕來調整大小來處理本地化的標題。

其他說明:
- 我正在使用AutoLayout。我曾嘗試設置寬度約束。目前,我只對後緣和垂直線有限制。沒有什麼應該限制寬度。 - 我嘗試在界面生成器中將文本更改爲非常長的內容,但這沒有任何影響。

回答

0

它看起來像你有固定寬度約束。請記住,如果您只設置了兩個約束,尾隨和垂直,則會添加缺少的約束。

如果你建立和不添加任何約束的元素, 你會發現,Interface Builder的固定元素的寬度和 高度,並且相對於 上海華盈的左上角的定位銷運行;這意味着調整窗口的大小不會移動或調整元素的大小 。爲了讓您的界面正確反應尺寸或方向的變化,您需要開始添加約束。 - Auto Layout Guide

要修復它,指定所有常量。基本上你需要一個關係等於或小於一個關係的主導常量。然後,應根據內容自動調整寬度。

+0

感謝您的回覆。那是我第一次猜測。但我已經嘗試了從太陽下的所有東西的完全約束定義到沒有約束的每個變體。我再次嘗試,使用你的建議,不幸的是,我得到了和以前一樣的結果。我認爲正在發生的一部分是文本大小計算來自UIButton.textLabel.text而不是UIButton.currentTitle。但這是一個猜測。 – plm

0

那麼,這會不會是在任何情況下的答案,但這裏是最後的工作:

我去庫/ Application Support位置/ iPhone模擬器/ ...並清除了所有的各種建築產品。然後再次運行該應用程序。瞧...我甚至不會講法語,但似乎已經解決了所有的難題。即使是Clean和一個Xcode重啓也沒有解決這個問題,但是這個清理沒有辦法。

我猜測,當Xcode沒有意義時,試試這個[Xcode knockSomeSenseIntoMe:(DoItWithFinder *)cleanEverythingOutByHand];

它乘飛機飛行把它整理出來。也許這也是解決方案的一部分!