我正在尝试设置一个简单的 UITableViewCell,其中左侧有一个提示,然后旁边有一个文本字段,它占据了单元格的其余宽度;但是,由于以下限制,无论我将 UITextField 的宽度设置为什么,该字段的宽度都只够 1 个字符。注意:UITextField 出现在正确的位置(它直接在提示的右侧),它真的很小。
cell.contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-[prompt]-[uitextfield]", options: NSLayoutFormatOptions.AlignAllCenterY, metrics: nil, views: views))
cell.contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-[promt]-|", options: nil, metrics: nil, views: views))
cell.contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-[uitextfield]-|", options: nil, metrics: nil, views: views))
一个有效的解决方案是将 uitextfield 的宽度设置为高得离谱的数字:
cell.contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-[prompt]-[uitextfield(1000)]", options: NSLayoutFormatOptions.AlignAllCenterY, metrics: nil, views: views))
但是我不能使用这个解决方案,因为有时 UITextField 是一个 UISegmentedControl(或其他控件),我不想扩展这些控件。
为什么即使我将 frame.size.width 显式设置为较大的值,UITextField 也会强制其宽度非常小?
最佳答案
UITextField
沿水平轴的内容拥抱优先级应低于提示元素的内容拥抱优先级。
您可以通过执行 yourTextField.contentHuggingPriorityForAxis(.Horizontal)
检查内容拥抱优先级。并使用 yourTextField.setContentHuggingPriority(250, forAxis: .Horizontal)
进行设置。您也可以在界面构建器中执行此操作(我更喜欢)。
尝试将文本字段的内容拥抱优先级设置为 250,并将提示设置为 251。
关于ios - 自动布局 : empty UITextField is only wide enough for 1 character,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32419042/