【发布时间】:2017-02-23 16:55:58
【问题描述】:
我是 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 的边界!
你能告诉我我的代码有什么问题吗?
【问题讨论】:
-
尝试使用 -18 代替顶部和左侧
-
如果您愿意不使用 AutoLayout,只需一行即可轻松完成:
view.frame = contentView.bounds.insetBy(dx: 18, dy: 18)
标签: ios swift autolayout uicollectionviewcell