Link to the subclass of UITableViewWie führe ich Aktualisierungen mit UITableView beim Scrollen mit CADisplayLink und UITableViewAutomaticDimension ohne Springen durch?
Warum springt UITableView beim Scrollen? Können Sie mir helfen?
für den, der mir helfen, ich beginnen und preis später ANOTHER Prämie von 100 :-)
Wie einige Änderungen auf UITableView
zusammen mit der Einstellung seiner contentOffset
auszuführen?
Dies ist, wie ich meine eingerichtet scrollDisplayLink
:
scrollDisplayLink = CADisplayLink(target: self, selector: Selector("scrollTable"))
scrollDisplayLink?.addToRunLoop(NSRunLoop.mainRunLoop(), forMode: NSRunLoopCommonModes)
cellForCurrentIndexPath?.hidden = true
und dann innerhalb von scrollTable
ich Dinge tun folgendes:
func scrollTable() {
var newOffset = CGPointMake(currentContentOffset.x, currentContentOffset.y + scrollRate * 10)
if currentContentSize.height < frame.size.height {
newOffset = currentContentOffset
} else if newOffset.y > currentContentSize.height - frame.size.height {
newOffset.y = currentContentSize.height - frame.size.height
} else if newOffset.y < 0 {
newOffset = CGPointZero
}
contentOffset = newOffset
if coveredIndexPath != nil && coveredIndexPath! != currentIndexPath! {
let verticalPositionInCoveredCell = longPressGestureRecognizer.locationInView(cellForRowAtIndexPath(coveredIndexPath!)).y
if direction == .Down && heightForCoveredCell - verticalPositionInCoveredCell <= heightForCurrentCell/2 {
print("moved down")
beginUpdates() //1
moveRowAtIndexPath(currentIndexPath!, toIndexPath: coveredIndexPath!) //2
currentIndexPath = coveredIndexPath //3
endUpdates() //4
}
}
}
Scrolling ist in Ordnung, es sei denn, Linien 1-4
kommentiert oder deaktiviere ich UITableViewAutomaticDimension
. Wenn sie nicht kommentiert werden, springt die Tabelle, wenn sich currentContentOffset
während des Scrollens 0
unterscheidet. Warum passiert es so? Ist es ein Problem mit Threads oder etwas anderem?
HINWEIS:
UITableView
arbeitet mit UITableViewAutomaticDimension
:
func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}