Swift 阴影没有正确传播
Swift shadow does not spread correctly
我一直在尝试为我的 UIView 创建阴影。我环顾四周,从这个 post 中找到了 CALayer class 的扩展。
到目前为止,在我尝试为点差输入一个非 0 数字之前,它对我来说一直很好用。
点差为0。这是结果
这是使用 1
传播的结果
当点差为 5
时,情况会变得更糟
我遇到的问题是它没有圆角,我不知道如何解决这个问题。这是我使用此视图的 UIView 的代码。用来制作阴影的扩展在上面的post
UIView代码
class FileCalculateOperatorSelectionButton : UIView {
private var isActivated : Bool = false
//Background colors
private var unSelectedBackgroundColor : UIColor = UIColor(red: 178/255, green: 90/255, blue: 253/255, alpha: 1.0)
private var selectedBackgroundColor : UIColor = UIColor.white
override init(frame: CGRect) {
super.init(frame: frame)
self.commonInit()
}
required init?(coder: NSCoder) {
super.init(coder: coder)
self.commonInit()
}
private func commonInit() {
self.layer.cornerRadius = self.frame.height/2
self.backgroundColor = self.unSelectedBackgroundColor
let shadowColor = UIColor(red: 0xC8, green: 0xC6, blue: 0xC6)
//Change the spread argument here
self.layer.applySketchShadow(color: .black, alpha: 0.5, x: 0, y: 0, blur: 5, spread: 0)
}
}
尝试将 layer's
masksToBounds
属性 设置为 true
。
self.layer.masksToBounds = true
在 CALayer
扩展中的 applySketchShadow
函数中更改 shadowPath
,如下所示;
// shadowPath = UIBezierPath(rect: rect).cgPath
shadowPath = UIBezierPath(roundedRect: rect, cornerRadius: cornerRadius).cgPath
当传播时:1
我一直在尝试为我的 UIView 创建阴影。我环顾四周,从这个 post 中找到了 CALayer class 的扩展。
到目前为止,在我尝试为点差输入一个非 0 数字之前,它对我来说一直很好用。
点差为0。这是结果
这是使用 1
传播的结果当点差为 5
时,情况会变得更糟我遇到的问题是它没有圆角,我不知道如何解决这个问题。这是我使用此视图的 UIView 的代码。用来制作阴影的扩展在上面的post
UIView代码
class FileCalculateOperatorSelectionButton : UIView {
private var isActivated : Bool = false
//Background colors
private var unSelectedBackgroundColor : UIColor = UIColor(red: 178/255, green: 90/255, blue: 253/255, alpha: 1.0)
private var selectedBackgroundColor : UIColor = UIColor.white
override init(frame: CGRect) {
super.init(frame: frame)
self.commonInit()
}
required init?(coder: NSCoder) {
super.init(coder: coder)
self.commonInit()
}
private func commonInit() {
self.layer.cornerRadius = self.frame.height/2
self.backgroundColor = self.unSelectedBackgroundColor
let shadowColor = UIColor(red: 0xC8, green: 0xC6, blue: 0xC6)
//Change the spread argument here
self.layer.applySketchShadow(color: .black, alpha: 0.5, x: 0, y: 0, blur: 5, spread: 0)
}
}
尝试将 layer's
masksToBounds
属性 设置为 true
。
self.layer.masksToBounds = true
在 CALayer
扩展中的 applySketchShadow
函数中更改 shadowPath
,如下所示;
// shadowPath = UIBezierPath(rect: rect).cgPath
shadowPath = UIBezierPath(roundedRect: rect, cornerRadius: cornerRadius).cgPath
当传播时:1