From aece39240e3bffcfed9ec8a4b40a4b1551b8a25d Mon Sep 17 00:00:00 2001 From: Ilya Grechuhin Date: Thu, 28 Dec 2017 12:36:30 +0300 Subject: [PATCH] [iphonex] [ios] Updated route manager animation. --- .../RouteManager/RouteManagerTableView.swift | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/RouteManager/RouteManagerTableView.swift b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/RouteManager/RouteManagerTableView.swift index 1c34631abb..8a1a53704c 100644 --- a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/RouteManager/RouteManagerTableView.swift +++ b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/RouteManager/RouteManagerTableView.swift @@ -9,25 +9,23 @@ final class RouteManagerTableView: UITableView { var heightUpdateStyle = HeightUpdateStyle.deferred + private var scheduledUpdate: DispatchWorkItem? + override var contentSize: CGSize { didSet { guard contentSize != oldValue else { return } - let sel = #selector(updateHeight) - NSObject.cancelPreviousPerformRequests(withTarget: self, selector: sel, object: nil) + scheduledUpdate?.cancel() + let update = { [weak self] in + guard let s = self else { return } + s.tableViewHeight.constant = s.contentSize.height + } switch heightUpdateStyle { - case .animated: - guard let sv = superview else { return } - sv.setNeedsLayout() - updateHeight() - UIView.animate(withDuration: kDefaultAnimationDuration) { sv.layoutIfNeeded() } - case .deferred: perform(sel, with: nil, afterDelay: 0) + case .animated: superview?.animateConstraints(animations: update) + case .deferred: + scheduledUpdate = DispatchWorkItem(block: update) + DispatchQueue.main.async(execute: scheduledUpdate!) case .off: break } } } - - @objc - private func updateHeight() { - tableViewHeight.constant = contentSize.height - } }