【发布时间】: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