【问题标题】:UIButton not properly sizing for currentTitleUIButton 没有正确调整 currentTitle 的大小
【发布时间】:2014-05-17 22:12:30
【问题描述】:

我正在使用 NSLocalizableStringFromTable 来设置我的用户界面的各个组件的文本。当文本长于界面构建器中的占位符文本时,我遇到了 UIButtons 的问题。下面是一个比较英语和西班牙语“保存”按钮的示例:

当我使用 NSLog 检查 _theSaveButton 的值时,我得到了

_theSaveButton.titleLabel = "保存"
_theSaveButton.currentTitle = "Guardar"

我曾尝试使用 [_theSaveButton sizeToFit],但这似乎总是调整为 titleLabel 而不是 currentTitle

这是一个快速的代码 sn-p:

[_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 上的文本发生了变化,如上所示。

所以,最后,我只希望按钮调整大小以处理本地化标题。

其他说明:
- 我正在使用自动布局。我尝试设置宽度约束。目前,我只对后缘和垂直有限制。没有什么应该限制宽度。 - 我尝试在界面构建器中将文本更改为很长的内容,但这没有任何影响。

【问题讨论】:

    标签: ios objective-c uibutton


    【解决方案1】:

    看起来您有固定宽度限制。请记住,如果您仅设置 2 个约束,即尾随和垂直,则会添加缺失的约束。

    如果您在没有向元素添加任何约束的情况下构建和运行, 你会发现 Interface Builder 修复了元素的宽度和 高度,并固定其相对于左上角的位置 监督;这意味着调整窗口大小不会移动或调整大小 要素。使您的界面正确响应 大小或方向,您需要开始添加约束。 - Auto Layout Guide

    要修复它,请指定所有常量。基本上,您需要一个关系等于或小于的前导常数。然后根据内容自动调整宽度。

    【讨论】:

    • 感谢您的回复。这是我的第一个猜测。但是我已经尝试了从阳光下所有事物的完整约束定义到无约束的所有变体。我再次尝试,使用你的建议,不幸的是,我得到了和以前一样的结果。我认为正在发生的部分原因是文本大小计算来自 UIButton.textLabel.text 而不是 UIButton.currentTitle。但这是一个猜测。
    【解决方案2】:

    嗯,这不是所有情况下的答案,但这是最终奏效的方法:

    我去了Library/Application Support/iPhone Simulator/...中的位置并清除了各种构建的所有产品。然后再次运行该应用程序。瞧……我什至不会说法语,但它似乎解决了所有的难题。即使 Clean 和 Xcode 重新启动也不能解决这个问题,但这次清理成功了。

    我猜当 Xcode 没有意义时,试试这个 [Xcode knockSomeSenseIntoMe:(DoItWithFinder *) cleanEverythingOutByHand];

    需要一架飞机才能解决这个问题。也许这也是解决方案的一部分!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多