2016-10-13 66 views
1

我有一个标题为UITableView,它有一个高度为10的标题,它的backgroundColorclearColor,只是为了显示更分离的部分。现在我只需要在每个部分的底部添加阴影。我已经尝试向viewForHeaderInSection方法添加阴影,但结果非常糟糕。任何提示实现这一目标?如何仅在UITableView的底部添加阴影?

func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? { 
    let shadowView = UIView() 

    shadowView.layer.shadowColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.5).CGColor 
    shadowView.layer.shadowOffset = CGSizeMake(0.0, 2.0) 
    shadowView.layer.shadowOpacity = 1.0 
    shadowView.layer.shadowRadius = 0.0 
    shadowView.layer.masksToBounds = false 

    return shadowView 
} 

func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { 
    return 2 
} 
+0

您试过了哪些代码? – Rob

+0

我编辑了这个问题。 – Slavcho

+0

您可以使用添加图像视图(以及阴影图像)来隐藏离开最后一个单元格的所有单元格的图像视图。这将解决您的问题。 –

回答

5

我提出这两个例子夫特3。首先它是一个经典的影子,我用CAGradientLayer。第二个是阴影弧,我用UIBezierPath,CAShapeLayerCAGradientLayer


经典影:

func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? { 
    let shadowView = UIView() 




    let gradient = CAGradientLayer() 
    gradient.frame.size = CGSize(width: myTab.bounds.width, height: 15) 
    let stopColor = UIColor.gray.cgColor 

    let startColor = UIColor.white.cgColor 


    gradient.colors = [stopColor,startColor] 


    gradient.locations = [0.0,0.8] 

    shadowView.layer.addSublayer(gradient) 


    return shadowView 
} 

这是结果:

enter image description here

影弧:

func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? { 
let shadowView = UIView() 

let path = UIBezierPath() 
     path.move(to: CGPoint.zero) 
     path.addLine(to: (CGPoint(x: (myTab.bounds.maxX), y: 0.0))) 
     path.addLine(to: (CGPoint(x: (myTab.bounds.maxX), y: 15))) 
     path.addCurve(to: (CGPoint(x: 0.0, y: 15)), controlPoint1: (CGPoint(x: (myTab.bounds.midX), y: -10)), controlPoint2: (CGPoint(x: 0.0, y: 15))) 
     path.addLine(to: CGPoint.zero) 



     let shape = CAShapeLayer() 
     shape.path = path.cgPath 

     let gradient = CAGradientLayer() 

     gradient.frame.size = CGSize(width: myTab.bounds.width, height: 15) 
     let stopColor = UIColor.gray.cgColor 

     let startColor = UIColor.white.cgColor 


     gradient.colors = [stopColor,startColor] 


     gradient.locations = [0.0,0.9] 

     gradient.mask = shape 

     shadowView.backgroundColor = UIColor.white 
     shadowView.layer.addSublayer(gradient) 




     return shadowView 


} 

这是结果:

enter image description here

+0

这是我需要的。第一种方法很好。如果你在问题中实现了它,它会添加页脚视图,然后在它下面会出现阴影。 – Slavcho