Ich muss die Bildlaufansicht animieren, um die gleichen Ansichten, aber mit unterschiedlichen Werten basierend auf der Auswahl auf dem segmentierten Steuerelement anzuzeigen. Ich brauche von links nach rechts & von rechts nach links Folie Animation, um verschiedene Werte auf derselben Benutzeroberfläche anzuzeigen. Ich möchte keine doppelten Ansichten erstellen.Animierte Bildlaufansicht, um denselben Inhalt mit verschiedenen Werten anzuzeigen iOS Swift
0
A
Antwort
0
Ich hatte genau das gleiche Problem. Wollte vermeiden, mehrere Tabellenansichten nur aus Gründen der Animation zu erstellen. Hier ist, wie ich es gelöst habe:
Grundidee: Machen Sie einen Screenshot von tableview und zeigen Sie es in der Stammansicht. Dann tun, um eine Dia-Animation von Tableview von links nach rechts (oder von rechts nach links in Abhängigkeit von der Schaltsegmentsteuerung)
-Code, wenn geklaut nach rechts
func switchToLeft() {
let newIndex = currentIndex - 1
if newIndex > 0 {
let sS = showScreenShot()
self.tableView.animateFromLeft(0.5){
sS.removeFromSuperview()
}
//update data and RELOAD your tableview here
}
}
func showScreenShot() -> UIView{
let image = getScreenShot()
let imageView = UIImageView(image: image)
let blankView = UIView(frame: self.view.frame)
blankView.addSubview(imageView)
self.tableView.superview?.addSubview(blankView)
self.tableView.superview?.bringSubviewToFront(self.tableView)
return blankView
}
func getScreenShot() -> UIImage?{
let viewToRender = self.tableView
let contentOffset = self.tableView.contentOffset
UIGraphicsBeginImageContext(viewToRender.bounds.size)
let ctx = UIGraphicsGetCurrentContext()!
// need to translate the context down to the current visible portion of the tableview
CGContextTranslateCTM(ctx, 0, -contentOffset.y-tableHeaderHt)
viewToRender.layer.renderInContext(ctx)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
Code Weglassen für animateFromLeft
als eine Übung!