Shadow 在 iphone 上很完美,但在 ipad 上它变得很短

Posted

技术标签:

【中文标题】Shadow 在 iphone 上很完美,但在 ipad 上它变得很短【英文标题】:Shadow is perfect on iphone but on ipad its just become very short 【发布时间】:2018-02-19 12:26:36 【问题描述】:

这是来自 iphone 的屏幕截图,这里的阴影非常好,但是当我在 ipad 上运行应用程序时,它变成了这样..

现在这是我希望它像 ipad 上的第一张图片一样的问题..

我正在使用此代码来投影

extension UIView 

    // OUTPUT 1
    func dropShadow(scale: Bool = true) 
        layer.masksToBounds = false
        layer.shadowColor = UIColor.black.cgColor
        layer.shadowOpacity = 0.5
        layer.shadowOffset = CGSize(width: -1, height: 1)
        layer.shadowRadius = 1
        layer.shadowPath = UIBezierPath(rect: bounds).cgPath
        layer.shouldRasterize = true
        layer.rasterizationScale = scale ? UIScreen.main.scale : 1
    

    // OUTPUT 2
    func dropShadow(color: UIColor, opacity: Float = 0.5, offSet: CGSize, radius: CGFloat = 1, scale: Bool = true) 
        layer.masksToBounds = false
        layer.shadowColor = color.cgColor
        layer.shadowOpacity = opacity
        layer.shadowOffset = offSet
        layer.shadowRadius = radius
        layer.shadowPath = UIBezierPath(rect: self.bounds).cgPath
        layer.shouldRasterize = true
        layer.rasterizationScale = scale ? UIScreen.main.scale : 1
    

使用这条线在任何视图上投射阴影

shadowView.dropShadow(color: .black, opacity: 0.7, offSet: CGSize(width: -1, height: 1), radius: 5, scale: true)

有人知道问题出在哪里吗??

提前感谢:)

【问题讨论】:

你能用阴影显示视图的框架 没有给框架..我用户自动布局。视图位于 tableviews 单元格中,从单元格的内容视图中具有前导 = 8、traling = 8、顶部 = 8 和底部 = 8 你有没有尝试将你的代码移动到 did layoutsubviews 中?(不要忘记调用 super.didlayoutsubviews() ) @roozbehmo 不,我没试过 你在哪里运行 shadowView.dropShadow 【参考方案1】:

问题是当视图尚未正确布局时,您正在使用边界值。

在 viewDidLayoutSubviews 中设置阴影。别忘了拨打super.didlayoutsubviews()

或者你可以打电话

view.layoutIfNeeded()

【讨论】:

以上是关于Shadow 在 iphone 上很完美,但在 ipad 上它变得很短的主要内容,如果未能解决你的问题,请参考以下文章

ALAssetPropertyLocation 在 3gs iPhone 上无法在任何 iOS 4.0+ 上运行,但在 iPhone4 上完美运行

Flutter App 在模拟器(Iphone 12 mini)上完美运行,但在设备上崩溃(Iphone 8 plus)

iOS 内容拦截器在 iPad 上不起作用(在 iPhone 上很好)

UIWebview 在 iPhone 设备上很慢,在模拟器上很快

CoreData 在设备上发生错误,但在模拟器上很好

iPhone 核心数据 - 获取的托管对象未在设备上发布(在模拟器上很好)