美文网首页
自动布局,layoutSubViews方法中获取子控件frame

自动布局,layoutSubViews方法中获取子控件frame

作者: 回南路宋三万 | 来源:发表于2021-01-05 15:04 被阅读0次

需求:cell中有一个卡片子控件,需要设置shadowPath属性来实现四周阴影效果。动态获取子控件的大小,来确定path
问题:采取自动布局,cell自动设置行高。layoutSubViews方法中打印子控件frame值,为zero
解决办法:调用setNeedsLayout,layoutIfNeeded及时更新布局
代码:

  override func layoutSubviews() {
        super.layoutSubviews()
        
        contentView.setNeedsLayout()
        contentView.layoutIfNeeded()
        
        containerView.layer.shadowColor = UIColor.black.cgColor
        containerView.layer.shadowOpacity = 0.2
        containerView.layer.shadowOffset = CGSize(width: 1.0, height: 1.0)
        
        let path = UIBezierPath(roundedRect: CGRect(x: -2, y: -2, width: containerView.width+4, height: containerView.height+4), cornerRadius: 1.0)
        containerView.layer.shadowPath = path.cgPath
    }

相关文章

网友评论

      本文标题:自动布局,layoutSubViews方法中获取子控件frame

      本文链接:https://www.haomeiwen.com/subject/zrxwoktx.html