ios - nslayout 约束不使对象出现
问题描述
我下面的代码使用代码没有故事板来显示对象。项目构建,但我看不到我试图以编程方式放置的文本字段。我不知道为什么代码没有出现。我试图不使用情节提要。
var enterWeight = UITextField()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(enterWeight)
enterWeight.backgroundColor = UIColor.blue
NSLayoutConstraint.activate ([
enterWeight.topAnchor.constraint(equalTo: view.topAnchor, constant : 20),
enterWeight.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant : 20),
enterWeight.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant : 20),
enterWeight.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant : 20),
enterWeight.widthAnchor.constraint(equalToConstant: 50),
enterWeight.heightAnchor.constraint(equalToConstant: 30)
])
}
解决方案
您有相互冲突的约束,它们永远不会以这种方式工作。
首先,如 iFlames 所述,您需要设置translatesAutoresizingMaskIntoConstraints
为false
:
enterWeight.translatesAutoresizingMaskIntoConstraints = false
然后:
NSLayoutConstraint.activate ([
enterWeight.topAnchor.constraint(equalTo: view.topAnchor, constant : 20),
enterWeight.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant : 20),
enterWeight.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant : 20),
enterWeight.heightAnchor.constraint(equalToConstant: 30)
])
通过给 textField 一个前导和尾随,你已经隐式地给了它一个宽度约束,它是view
减去常量(20 * 2)的宽度,所以你不应该给它一个宽度约束,它会导致冲突。
推荐阅读
- node.js - 我可以在 Mongo/Mongoose 中使用 $pull 并更新同一数组中的剩余元素吗?
- sql-server - 我可以更改域用户的 SID 吗?
- charts - Oracle Apex 18.1 基于一个查询/功能的多个图表
- python - 有没有办法在python的后台向窗口发送点击事件?
- android - 应用程序进程未运行时不会发生同步
- python - 为什么我们要写“ plt.imshow(generated_image[0, :, :, 0])” 结尾是零?
- json - 使用 shell 脚本创建嵌套的 json 文件
- python - 归一化函数
- javascript - 解决函数内部的语句工作问题?
- c# - 加密仅包含图像的 PDF 文件