【问题标题】:How to set specific corner and shadow to UIView如何为 UIView 设置特定的角和阴影
【发布时间】:2021-06-03 11:23:40
【问题描述】:

我正在尝试设置标签栏的左上角和右上角以及阴影。

我正在使用 UIView 扩展中的以下函数:

func addShadowWithCurve(usingCorners corners : UIRectCorner,cornerRadii : CGSize, shadowColor:UIColor,shadowOpacity:Float,shadowRadius:CGFloat,shadowOffset:CGSize){
    let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: cornerRadii)
    layer.masksToBounds = false
  
    let frameLayer = CAShapeLayer()
    frameLayer.path = path.cgPath
    frameLayer.shadowPath = path.cgPath

    frameLayer.lineWidth = 1
    frameLayer.strokeColor = RRSTokens.colorGrey10.cgColor
    frameLayer.fillColor = backgroundColor?.cgColor
    frameLayer.shadowOffset = shadowOffset
    frameLayer.shadowOpacity = shadowOpacity
    frameLayer.shadowRadius = shadowRadius
    frameLayer.shadowColor = shadowColor.cgColor

    layer.mask = frameLayer
    layer.insertSublayer(frameLayer, at: 0)
}

但结果不是预期的,标签栏顶部有一条黑色边框线可见。我已经尝试过多次尝试围绕图层属性来删除那条黑线,但没有运气。这是它的样子:

【问题讨论】:

  • 你能展示你应用这个函数的视图的代码吗?例如rectangleView.addShadowWithCurve(...
  • self.tabBar.addShadowWithCurve(usingCorners: [.topLeft,.topRight],cornerRadii: CGSize(width: 20, height: 20), shadowColor: UIColor(red: 0, green: 0, blue : 0, alpha: 0.15), shadowOpacity: 1, shadowRadius: 6, shadowOffset: CGSize(width: 0, height: -2))
  • 对我来说很好用:screenshot。您可能在某处设置了tabBarborderWidthborderColor
  • 感谢您的检查,我们可以去除曲线周围的黄色以查看背景颜色吗?
  • 谢谢@aheze

标签: ios swift xcode uiview layer


【解决方案1】:

您的代码是完美的,只需在您的代码中添加以下行:

self.tabBar.barStyle = .blackOpaque

希望它能解决您的问题。谢谢。

【讨论】:

    猜你喜欢
    • 2014-09-15
    • 1970-01-01
    • 2011-06-12
    • 2018-08-05
    • 2012-07-11
    相关资源
    最近更新 更多