AutoLayout:子视图越过父视图的边界

AutoLayout: Child View goes Over Parent View's Bounds

我是 iOS 开发的新手。我有一个 contentView 对应一个 UICollectionViewCell,我想给它添加另一个视图。我希望将这个新视图拉伸到 contentView 边缘。我正在尝试使用 AutoLayout 来实现这一点,所以这是我所做的:

let view = UIView();
view.backgroundColor = UIColor.yellow
contentView.addSubview(view)

view.translatesAutoresizingMaskIntoConstraints = false
view.topAnchor.constraint(equalTo: contentView.topAnchor).isActive = true
view.bottomAnchor.constraint(equalTo: contentView.bottomAnchor).isActive = true
view.leadingAnchor.constraint(equalTo: contentView.leadingAnchor).isActive = true
view.trailingAnchor.constraint(equalTo: contentView.trailingAnchor).isActive = true

这按预期工作,我得到了我想要的行为。然后我希望 contentView 有 18 点的填充,所以我想我需要添加常量参数并将其设置为 18,如下所示:

view.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 18).isActive = true
view.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: 18).isActive = true
view.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 18).isActive = true
view.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: 18).isActive = true

我所期望的是,新视图现在的面积会比以前小,因为它现在从各个方向被推了 18 个点。不过,我得到的是一个与第一个场景中大小相同的视图,它从顶部和左侧被推动 18 个点,并越过 contentView 的边界!

你能告诉我我的代码有什么问题吗?

你的常数都指向同一个方向,所以视图只是偏移。

这应该有效:

view.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 18).isActive = true
view.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -18).isActive = true
view.leftAnchor.constraint(equalTo: contentView.leftAnchor, constant: 18).isActive = true
view.rightAnchor.constraint(equalTo: contentView.rightAnchor, constant: -18).isActive = true