提问人:Swift 提问时间:1/13/2020 最后编辑:nopassport1Swift 更新时间:1/13/2020 访问量:179
如何去除某些 iPhone 中多余的黑影,同时在 swift 中为 UIView 提供阴影?
How to remove extra black shadow in some iPhones while giving shadow for UIView in swift?
问:
我给三个视图提供了阴影。iPhone 8 plus、iPhone 11、iPhone 11 pro max中的阴影完美呈现,如下图所示
我在 iPhone 8、iPhone 7 plus、iPhone 7 的右侧出现深黑色阴影,为什么?如下图
如何在iPhone8中去除右侧的黑色。
以下 UIView 阴影代码:
firstContainerView.clipsToBounds = false
firstContainerView.layer.shadowColor = UIColor.black.cgColor
firstContainerView.layer.shadowOpacity = 1
firstContainerView.layer.shadowOffset = CGSize(width: 0.2, height: 0.2)
firstContainerView.layer.shadowRadius = 1
firstContainerView.layer.shadowPath = UIBezierPath(roundedRect:
firstContainerView.bounds, cornerRadius: cornerRadius).cgPath
为什么某些设备会出现额外的黑影。 请帮我从iPhone 8,iPhone 7 plus的阴影中去除多余的黑色。
答:
2赞
Vadim Nikolaev
1/13/2020
#1
根据这个答案,你可以用你的参数创建扩展:
extension UIView {
func addShadow() {
layer.shadowColor = UIColor.black.cgColor
layer.shadowOffset = CGSize(width: 0.2, height: 0.2)
layer.shadowRadius = 1
layer.shadowOpacity = 1
layer.masksToBounds = false
updateShadow()
}
func updateShadow() {
layer.shadowPath = UIBezierPath(roundedRect: self.bounds,cornerRadius: 5).cgPath
}
}
并像这里一样调用它viewDidLayoutSubviews()
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
viewTest.addShadow()
}
我希望这对iPhone 7等有所帮助。
评论
0赞
Swift
1/13/2020
是的,它完美地工作,我可以知道我在上面的帖子中犯了什么错误。为什么我用来获得额外的黑色??为什么我没有得到你的答案?
1赞
Vadim Nikolaev
1/13/2020
@iPhoneDev我想说这与视图控制器的生命周期有关。您可以签入,iPhone 7/8 的尺寸很可能会有所不同,但 iPhone 8 Plus 也是如此(为什么 - 老实说,我不知道),因为 сalled 通知视图控制器其视图刚刚布置了它的子视图。因此,有必要根据视图控制器上有关我们大小的当前(最新)信息来更新我们。viewTest.bounds
viewDidLoad()
viewDidLayoutSubviews
viewDidLayoutSubviews
shadowPath
view
评论