2016-10-13 1 views
1

Ich habe eine Sektion UITableView, die eine Kopfzeile der Höhe 10 hat und backgroundColor als clearColor nur, um die Abschnitte mehr getrennt zu zeigen. Jetzt muss ich nur einen Schatten am unteren Rand jedes Abschnitts hinzufügen. Ich habe versucht, der Methode viewForHeaderInSection Schatten hinzuzufügen, aber das Ergebnis ist sehr schlecht. Irgendwelche Tipps, um das zu erreichen?Wie Schatten nur am unteren Rand des Abschnitts von UITableView hinzufügen?

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

Welchen Code haben Sie ausprobiert? – Rob

+0

Ich habe die Frage bearbeitet. – Slavcho

+0

Sie können eine Bildansicht hinzufügen (zusammen mit einem Schattenbild) die Bildansicht für alle Zellen ausblenden, die die letzte Zelle verlassen. Dies wird dein Problem lösen. –

Antwort

5

Ich habe diese beiden Beispiele Swift 3. Der erste ist ein klassischer Schatten, ich habe CAGradientLayer verwendet. Die zweite ist ein Schattenbogen, ich benutzte UIBezierPath, CAShapeLayer und CAGradiantLayer.


Klassische Schatten:

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 
} 

Dies ist das Ergebnis:

enter image description here

Schatten Arc:

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 


} 

Dies ist das Ergebnis:

enter image description here

+0

Das ist was ich brauchte. Der erste Ansatz ist gut. Wenn Sie den in der Frage implementieren, wird die Fußzeilenansicht hinzugefügt und dann wird der Schatten darunter angezeigt. – Slavcho

Verwandte Themen