2017-12-17 14 views
0

ich einen Bildschirm mit einer UIImageView oben und ein UITableView darunter haben -Scroll ein UIImageView oben auf UITableView automatisch mit UITableView

enter image description here

Ich will nach oben und unten der Bildansicht, wenn der Tisch Die Ansicht wird gescrollt, so dass die Tabellenansicht schließlich den gesamten Bildschirm einnehmen kann und dann wieder in ihre ursprüngliche Position zurückkehrt, wenn der Inhalt der Tabellenansicht vollständig zurückgescrollt wird. Ich implementiert diese so weit wie unten -

func scrollViewDidScroll(_ scrollView: UIScrollView) { 
    print("scrolled") 
    print(scrollView.contentOffset) 

    let currentOffset = scrollView.contentOffset.y 

    let netOffset = previousOffset + currentOffset 

    self.previousOffset = currentOffset 

    if netOffset > 0 { 
     self.imageViewTopConstraint.constant = -netOffset 
    } else if netOffset < 0 { 
     self.imageViewTopConstraint.constant = netOffset 
    } else { 
     self.imageViewTopConstraint.constant = self.imageViewOriginalTop 
     self.previousOffset = 0.0 
    } 

} 

Der obige Code scheint zu funktionieren gut, aber wenn die Tabellenansicht des ganzen Weg hinunter die Zellen gescrollt scheint zu flackern (werden, da die Scroll-Ereignisse kontinuierlich durch übergeben bekommen Prellen, wenn der Inhalt der Tabellenansicht ganz nach oben oder unten gescrollt wird?)

Wie kann ich das beheben?

Antwort

0

Sie können die UIImageView programmatisch als UITableViewHeader

@IBOutlet weak var tableView: UITableView! 

let imageView = UIImageView(image: UIImage(named: "myImage.png")) 
imageView.contentMode = .scaleAspectFit 
tableView.tableHeaderView = imageView 
+0

Dieser Ansatz gibt mir die Lösung ohne den ganzen Scrollen und dynamischen Einschränkungen Komplexität hinzuzufügen. Vielen Dank! – cubsnlinux