AutoLayout:子视图超过父视图的界限

时间:2017-02-23 16:55:58

标签: ios swift autolayout uicollectionviewcell

我是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的边界!

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

1 个答案:

答案 0 :(得分:2)

你的常量都指向同一个方向,因此视图只是偏移。

这应该有效:

<xml>
    <access>
        <user>
            <name>user1</name>
            <group>testgroup</group>
            <group>testgroup2</group>
        </user>
        <user>
            <name>user2</name>
            <group>testgroup</group>
        </user>
    <access>
</xml>