gpt4 book ai didi

ios - UIView 的阴影效果显示不正确

转载 作者:搜寻专家 更新时间:2023-10-30 21:56:31 25 4
gpt4 key购买 nike

我有一个登录屏幕,如下所示。我在每个文本字段周围添加了一个 View ,并且我想为该 View 显示一个投影。我有点实现了我的尝试,但这个东西不适用于 iPhone Plus (6+,8+) 设备。

您可以在下面看到不同之处。

iPhone 8+:-

enter image description here

iPhone 8:-

enter image description here

这是我的代码

extension UIView {
func addShadow() {
layer.cornerRadius = 8
layer.masksToBounds = true

layer.shadowColor = UIColor.lightGray.cgColor
layer.shadowOffset = CGSize(width: 0, height: 1.0)
layer.shadowRadius = 2.0
layer.shadowOpacity = 0.5
layer.masksToBounds = false

layer.shadowPath = UIBezierPath(roundedRect: self.bounds,cornerRadius:8).cgPath
}
}

我该如何正确解决这个问题?

最佳答案

由于 View 可能会调整大小,因此您应该在调整大小后更新您的 shadowPath,因为它具有固定大小。不幸的是,这不能在扩展中完成,因为您需要覆盖 layoutSubview()。但是您可以从 View Controller 再次为每个文本字段从 viewDidLayoutSubviews() 调用 addShadow()

您还可以修改您的扩展以仅更新路径:

extension UIView {
func addShadow() {
layer.cornerRadius = 8

layer.shadowColor = UIColor.lightGray.cgColor
layer.shadowOffset = CGSize(width: 0, height: 1.0)
layer.shadowRadius = 2.0
layer.shadowOpacity = 0.5
layer.masksToBounds = false

updateShadow()
}
func updateShadow() {
layer.shadowPath = UIBezierPath(roundedRect: self.bounds,cornerRadius:8).cgPath
}
}

有了这个,您应该从 viewDidLayoutSubviews() 为每个带有阴影的 View 调用 updateShadow()

如果您为文本字段使用自定义子类,您可以将 updateShadow() 调用放入 layoutSubviews()。所以你不需要从 View Controller 调用它。

关于ios - UIView 的阴影效果显示不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49664951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com