如何为uiview制作淡出边框

时间:2016-12-01 09:15:36

标签: ios swift uiview calayer

如何为UIView实现单边和淡出边框。对不起,我没有足够的声誉来发布截图。但iOS原生联系人应用程序中有一个示例。如果你点击" +"那么"添加手机",会有一条垂直线,这正是我想要的。

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

感谢您提前给出任何答案和建议。

2 个答案:

答案 0 :(得分:0)

您可以使用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以返回渐变图层,然后 可随意查看的大小和位置:

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

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

答案 1 :(得分:0)

您可以创建一个CAGradientLayer,但是不必继承UIView,只需将其设置为图层的mask属性即可。

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

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

maskedView.layer.mask = gradientMaskLayer