gpt4 book ai didi

iOS UIView 阴影在模拟器中显示不同

转载 作者:行者123 更新时间:2023-11-29 00:35:54 25 4
gpt4 key购买 nike

我有一个 UIView 和它周围的阴影。问题是阴影在模拟器中看起来不错,但在真实设备上却不是。模拟器和我的iPhone都有iOS版本。

我的代码:我在 UITableViewCell 类中使用它。

override func awakeFromNib() {
super.awakeFromNib()

let shadowFrame: CGRect = cellView.layer.bounds
let shadowPath: CGPath = UIBezierPath(rect: shadowFrame).cgPath
cellView.layer.shadowOffset = CGSize(width: 0, height: 1)
cellView.layer.shadowColor = UIColor.gray.cgColor
cellView.layer.shadowRadius = 1
cellView.layer.shadowOpacity = 0.6
cellView.clipsToBounds = false
cellView.layer.shadowPath = shadowPath

}
  1. 模拟器,2. 我的 iPhone: simulator shadow

iPhone shadow

编辑iPhone 7 模拟器显示与我的 iPhone 6 相同的阴影。只有 iPhone 7plus Simulator 可以正确显示阴影。这是 Xcode 错误吗?

最佳答案

当 View 的尺寸与您的 Nib 相同时,此代码可以正常工作。但是,awakeFromNib 可能会在自动布局引擎完成其布局过程之前被调用,这意味着 cellView.layer.bounds 不会设置为在屏幕上呈现的尺寸。您应该尝试将阴影路径的设置移动到 UITableViewCell 子类中的 layoutSubviewsUITableViewDataSource 中的 cellForRowAtIndexPath/p>

更新

您也可以尝试只观察何时设置表格 View 单元格的框架,然后更新阴影路径。

class MyTableViewCell: UITableViewCell
{
var cellView: UIView?
override var frame: CGRect
{
didSet
{
guard let cellView = self.cellView, self.frame != oldValue else { return }
cellView.layer.shadowPath = UIBezierPath(rect: cellView.bounds).cgPath
}
}
}

关于iOS UIView 阴影在模拟器中显示不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40645197/

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