iOS 约束布局 子View如何获取Frame

问题

今天的开发中存在这个问题,在一个自定义的 collectionViewCell 中添加了另一个布满整个 cell 的子 view ,这个子 view 的通过 Snapkit 来布局, 子 view 的内部界面,如 iamgeview label 等也通过 它来布局。但这个时候有个异类出来了,设计要求这个子view必须带一个渐变的蒙层,我要加这个渐变的蒙层,必须知道 frame 之后才能正确的添加这个layer,目前我没有找到好的方法来处理这种情况,只能在这里先给它赋值,如下:

    override func updateConstraints() {
        super.updateConstraints()
        
        // TODO
        // 当父 view 约束改变的时候,应能可以从子 view
        // 拿到对应的约束 和 frame。从理论上来说,如果子 view 有需要拿到它的frame才能做得事情,
        // 一定能够直接从对应的继承的方法里在合适的时机获取 frame,然后执行那个方法。
        // 这里的情况就是如此, containView 需要添加一个渐变的 layer,
        // 必须知道 frame 之后才能正确的添加这个layer,目前我没有找到好的方法
        // 来处理这种情况,只能在这里先给它赋值,然后再通过调用更新的方法去在这个
        // 类中重写 UIView 的 系统方法 updateConstraints, 在此方法中添加渐变的 layer
        containView.frame = self.bounds
        containView.setNeedsUpdateConstraints()
    }

再通过调用更新的方法去在这个类中 containView重写 UIView 的 系统方法 updateConstraints, 在此方法中添加渐变的 layer,如下:

    override func updateConstraints() {
        super.updateConstraints()
        addGradientLayer()
    }

你可能感兴趣的:(iOS 约束布局 子View如何获取Frame)