如何为uiview制作淡出边框

How to make a fade out border for uiview

如何为 UIView 实现单边淡出边框。抱歉,我没有足够的声誉 post 截图。但是 iOS 本机联系人应用程序中有一个示例。如果你点击“+”然后"add phone",就会有一条垂直线,这正是我想要的。

我已经为 UIView 实现了单边边框,但找不到让它淡出的方法。我试过 CIFilter,但没有用。然后我注意到这种淡出效果类似于阴影。我试图通过设置阴影来模拟淡出,但又失败了。

提前感谢您的任何回答和建议。

您可以使用 CAGradientLayer:

let layer = CAGradientLayer()
layer.colors = [UIColor.white.cgColor, UIColor.gray.cgColor]
// play around with layer.locations and layer.{startPoint|endPoint} to suit your needs

然后您可以子类化 UIView 并将其 layerClass 覆盖为 return 渐变层,然后 尺寸和位置随心所欲:

override class func layerClass() -> AnyClass {
   return CAGradientLayer.self
}
// configure the layer with color, end/start and locations in init()

这使您可以将该视图放在任何地方,并使用自动布局根据需要调整大小和位置。

您可以创建一个 CAGradientLayer,但不要将 UIView 子类化,只需将其设置为图层的遮罩 属性:

let gradientMaskLayer = CAGradientLayer()
gradientMaskLayer.frame = maskedView.bounds

gradientMaskLayer.colors =  [UIColor.clear.cgColor, UIColor.white.cgColor]
gradientMaskLayer.locations = [0.8, 1]

maskedView.layer.mask = gradientMaskLayer