【问题标题】:Adding shadow to UIView that is positioned using SnapKit向使用 SnapKit 定位的 UIView 添加阴影
【发布时间】:2017-04-19 01:49:14
【问题描述】:

我使用 SnapKit 定位了一个 UIView,需要找到一种添加阴影的方法。因为我相对于其他 UIView 定位了视图,所以我没有视图的高度、宽度或起始坐标。如何向使用 SnapKit 自动布局定位的 UIView 添加阴影。定位 UIView 的代码是这样的:

tableViewBackground.snp.makeConstraints{ (make) -> Void in
        make.width.lessThanOrEqualToSuperview()
        make.height.lessThanOrEqualToSuperview()
        make.right.equalToSuperview().offset(-20)
        make.left.equalToSuperview().offset(20)
        make.bottom.equalToSuperview().offset(-20)
        make.top.equalTo(poiLabel.snp.bottom).offset(20)
}

【问题讨论】:

  • 为什么不使用layer 阴影设置,就像任何其他视图阴影一样?
  • @matt 我尝试过使用tableViewBackground.layer.shadowPath = UIBezierPath(rect: tableViewBackground.bounds).cgPath。问题是 tableViewBackground.bounds 等于 [0,0,0,0] 因为视图是使用 snapkit 定位的
  • 这只是表明你做得太早了。等到视图已经被定位之后,你就有了实际的边界。
  • @matt 感谢您的建议。目前,在视图控制器方法 onViewDidLoad 中设置 Snap Kit 约束后立即添加阴影层。我应该在哪里添加阴影层?
  • viewDidLayoutSubviews 可能是最早的可靠时刻。但要小心,因为它可能会被多次调用。

标签: ios swift uiview autolayout snapkit


【解决方案1】:

将阴影层的创建从viewDidLoad移动到viewDidLayoutSubviews

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-23
    • 2018-11-06
    • 1970-01-01
    • 2017-10-17
    • 2020-07-22
    • 2020-05-21
    • 1970-01-01
    相关资源
    最近更新 更多