Swift 自动布局文本字段。中间,顶部
我试图理解自动布局。我有一个包含3个约束的文本字段: -将中心X与:Superview对齐 -顶部空间至:Superview 50 -宽度等于:150 我有一个警告:相等的约束可能会导致剪切 如果我换成 -宽度大于或等于150 我有一个警告:宽度和水平位置不明确 我很困惑。事实上,这些约束对于按钮或标签很有效。 -为什么文本字段不同?Swift 自动布局文本字段。中间,顶部,swift,macos,autolayout,Swift,Macos,Autolayout,我试图理解自动布局。我有一个包含3个约束的文本字段: -将中心X与:Superview对齐 -顶部空间至:Superview 50 -宽度等于:150 我有一个警告:相等的约束可能会导致剪切 如果我换成 -宽度大于或等于150 我有一个警告:宽度和水平位置不明确 我很困惑。事实上,这些约束对于按钮或标签很有效。 -为什么文本字段不同? -如何定位文本字段的水平中心、顶部50和宽度150 (似乎我必须添加一个大于或等于的前导和尾随。对于大于或等于150的宽度,这似乎是多余的。这可以使警告静音,但这
-如何定位文本字段的水平中心、顶部50和宽度150 (似乎我必须添加一个大于或等于的前导和尾随。对于大于或等于150的宽度,这似乎是多余的。这可以使警告静音,但这似乎是一个过于复杂和多余的解决方案。对吗?)
这是因为
UILabel
和UIButton
根据其内容调整其大小。在这种情况下,您需要指定一个适当的宽度,或者您可以提供一个带有所需填充的前导和尾随锚点
以下是在这种特殊情况下如何解决约束问题。为文本字段提供以下约束:
我刚刚检查了一下:
- 代码11.2.1
- 代码11.4.1
宽度:150
约束设置优先级:250
来消除该警告。单次快速测试表明,即使输入太多文本,字段宽度仍将保持在150。但是我不愿意依赖这种假设,如果字段宽度/前导/尾随等与任何其他UI元素相关,我不会指望它不会导致其他布局问题
我想说(仅限于我的意见)这是一个可以安全忽略的IB警告。UILabel会根据其内容自动调整大小。文本字段是否可编辑?请仔细检查您的约束。。。甚至可能删除它们并重新执行。红线表明出了问题。正如您所描述的,我只是尝试了一下,但没有得到警告(Xcode 11.4.1):我认为标签和按钮“可以”根据其内容调整大小。但是,如果我有一个宽度大于或等于150的按钮,我没有警告,就像我在这里有一个TextFieldOk一样,如果我放置一个宽度、一个前导和一个尾随大于或等于,我可以使警告静音。它工作,但我仍然不明白为什么我需要领先和落后。这似乎是多余的,太复杂了?把三个都给是多余的。如果您提供的是前导和尾随锚点,则不需要
宽度。也许我应该忽略那些毫无意义的黄色警告?不,你不应该忽略它们。当您运行的设备具有不同的屏幕大小时,它们将导致意外行为。在给出前导锚和尾随锚之后,你得到了什么警告?