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

时间:2016-11-17 01:20:47

标签: ios xcode uitableview uiview uibezierpath

我有paper-dropdown-menu{ -paper-input-container: { width: 100px; } } 并且周围有阴影。问题是阴影在模拟器中看起来不错,但在真实设备上却看不到。模拟器和我的iPhone都有iOS版本。

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

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

    修改 iPhone 7模拟器显示与iPhone 6相同的阴影。 只有iPhone 7plus模拟器才能正确显示阴影。这是一个Xcode错误吗?

1 个答案:

答案 0 :(得分:1)

当视图的尺寸与您的笔尖相同时,此代码将正常工作。但是,在自动布局引擎完成其布局传递之前,可能会调用awakeFromNib,这意味着cellView.layer.bounds将不会设置为在屏幕上呈现的尺寸。您应尝试将影子路径的设置移至layoutSubviews子类中的UITableViewCellcellForRowAtIndexPath

中的UITableViewDataSource

更新

您也可以尝试观察何时设置表格视图单元格的框架并更新阴影路径。

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
        }
    }
}