我正在使用NSLocalizableStringFromTable来设置用户界面的各种组件的文本。当文本比“接口”构建器中的占位符文本长时,我遇到了UIButtons的问题。这是一个比较" save"英语和西班牙语按钮:
当我使用NSLog检查_theSaveButton的值时,我得到
_theSaveButton。 titleLabel ="保存"
_theSaveButton。 currentTitle =" Guardar"
我尝试过使用[_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 :(得分:0)
看起来你有一个固定的宽度约束。请记住,如果仅设置2个约束,则尾随和垂直,将添加缺少的约束。
如果构建并运行而不向元素添加任何约束, 你会发现Interface Builder修复了元素的宽度和 高度,并固定其相对于左上角的位置 上海华;这意味着调整窗口大小不会移动或调整大小 要素。使您的界面对更改做出正确的反应 大小或方向,您需要开始添加约束。 - Auto Layout Guide
要修复它,请指定所有常量。基本上你需要一个领先常数,其关系等于或小于等于。然后,应根据内容自动调整宽度。
答案 1 :(得分:0)
嗯,这不是每个案例的答案,但这是最终奏效的:
我去了图书馆/应用程序支持/ iPhone模拟器/ ...的位置,并清除了各种构建的所有产品。然后再次运行应用程序。 Voilá......我甚至不会说法语,但它似乎修复了所有的难题。即使是Clean和Xcode重新启动也无法解决这个问题,但这种清理工作确实很有效。
我猜测当Xcode没有意义时,试试这个[Xcode knockSomeSenseIntoMe:(DoItWithFinder *)cleanEverythingOutByHand];
飞机飞行需要整理出来。也许这也是解决方案的一部分!