ios - 自动布局 : empty UITextField is only wide enough for 1 character

标签 ios swift uitableview autolayout uitextfield

我正在尝试设置一个简单的 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(.Horizo​​ntal) 检查内容拥抱优先级。并使用 yourTextField.setContentHuggingPriority(250, forAxis: .Horizo​​ntal) 进行设置。您也可以在界面构建器中执行此操作(我更喜欢)。

尝试将文本字段的内容拥抱优先级设置为 250,并将提示设置为 251。

关于ios - 自动布局 : empty UITextField is only wide enough for 1 character,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32419042/

相关文章:

ios - 在 UITableView 中隐藏单元格(在 Xamarin 中)

ios - 如何在 iOS 14.4+ 设备上触发系统诊断

ios - Swift 货币格式 ISO 标准转换问题

swift - 从 UIViewController 类隐藏自定义 View UIButton

swift - 在 UIDatePicker 中删除日期的可选字符串

ios - 取消选中 UITableview 中的单元格时,如何从数组中删除数据?

objective-c - 加载 View 时重置 UILabels 的边界会出现故障 (iOS)

ios - 目标中的 SwiftUI(自定义键盘)

ios - 如何从多个 Realm 模型创建一个 tableview?

ios - 在 UITabBarController 中强制横向显示特定的 View Controller