mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-07 14:53:35 +00:00
Various fixes
This commit is contained in:
parent
bb44454500
commit
7a58ac1bfc
@ -10,7 +10,7 @@ public protocol GridSection {
|
||||
|
||||
public protocol GridItem {
|
||||
var section: GridSection? { get }
|
||||
func node(layout: GridNodeLayout) -> GridItemNode
|
||||
func node(layout: GridNodeLayout, synchronousLoad: Bool) -> GridItemNode
|
||||
func update(node: GridItemNode)
|
||||
var aspectRatio: CGFloat { get }
|
||||
var fillsRowWithHeight: CGFloat? { get }
|
||||
|
||||
@ -97,8 +97,9 @@ public struct GridNodeTransaction {
|
||||
public let stationaryItems: GridNodeStationaryItems
|
||||
public let updateFirstIndexInSectionOffset: Int?
|
||||
public let updateOpaqueState: Any?
|
||||
public let synchronousLoads: Bool
|
||||
|
||||
public init(deleteItems: [Int], insertItems: [GridNodeInsertItem], updateItems: [GridNodeUpdateItem], scrollToItem: GridNodeScrollToItem?, updateLayout: GridNodeUpdateLayout?, itemTransition: ContainedViewLayoutTransition, stationaryItems: GridNodeStationaryItems, updateFirstIndexInSectionOffset: Int?, updateOpaqueState: Any? = nil) {
|
||||
public init(deleteItems: [Int], insertItems: [GridNodeInsertItem], updateItems: [GridNodeUpdateItem], scrollToItem: GridNodeScrollToItem?, updateLayout: GridNodeUpdateLayout?, itemTransition: ContainedViewLayoutTransition, stationaryItems: GridNodeStationaryItems, updateFirstIndexInSectionOffset: Int?, updateOpaqueState: Any? = nil, synchronousLoads: Bool = false) {
|
||||
self.deleteItems = deleteItems
|
||||
self.insertItems = insertItems
|
||||
self.updateItems = updateItems
|
||||
@ -108,6 +109,7 @@ public struct GridNodeTransaction {
|
||||
self.stationaryItems = stationaryItems
|
||||
self.updateFirstIndexInSectionOffset = updateFirstIndexInSectionOffset
|
||||
self.updateOpaqueState = updateOpaqueState
|
||||
self.synchronousLoads = synchronousLoads
|
||||
}
|
||||
}
|
||||
|
||||
@ -346,7 +348,7 @@ open class GridNode: GridNodeScroller, UIScrollViewDelegate {
|
||||
generatedScrollToItem = nil
|
||||
}
|
||||
|
||||
self.applyPresentaionLayoutTransition(self.generatePresentationLayoutTransition(stationaryItems: transaction.stationaryItems, layoutTransactionOffset: layoutTransactionOffset, scrollToItem: generatedScrollToItem), removedNodes: removedNodes, updateLayoutTransition: updateLayoutTransition, customScrollToItem: transaction.scrollToItem != nil, itemTransition: transaction.itemTransition, updatingLayout: transaction.updateLayout != nil, completion: completion)
|
||||
self.applyPresentaionLayoutTransition(self.generatePresentationLayoutTransition(stationaryItems: transaction.stationaryItems, layoutTransactionOffset: layoutTransactionOffset, scrollToItem: generatedScrollToItem), removedNodes: removedNodes, updateLayoutTransition: updateLayoutTransition, customScrollToItem: transaction.scrollToItem != nil, itemTransition: transaction.itemTransition, synchronousLoads: transaction.synchronousLoads, updatingLayout: transaction.updateLayout != nil, completion: completion)
|
||||
}
|
||||
|
||||
public func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
|
||||
@ -368,7 +370,7 @@ open class GridNode: GridNodeScroller, UIScrollViewDelegate {
|
||||
|
||||
public func scrollViewDidScroll(_ scrollView: UIScrollView) {
|
||||
if !self.applyingContentOffset {
|
||||
self.applyPresentaionLayoutTransition(self.generatePresentationLayoutTransition(layoutTransactionOffset: 0.0), removedNodes: [], updateLayoutTransition: nil, customScrollToItem: false, itemTransition: .immediate, updatingLayout: false, completion: { _ in })
|
||||
self.applyPresentaionLayoutTransition(self.generatePresentationLayoutTransition(layoutTransactionOffset: 0.0), removedNodes: [], updateLayoutTransition: nil, customScrollToItem: false, itemTransition: .immediate, synchronousLoads: false, updatingLayout: false, completion: { _ in })
|
||||
}
|
||||
}
|
||||
|
||||
@ -744,7 +746,7 @@ open class GridNode: GridNodeScroller, UIScrollViewDelegate {
|
||||
return lowestHeaderNode
|
||||
}
|
||||
|
||||
private func applyPresentaionLayoutTransition(_ presentationLayoutTransition: GridNodePresentationLayoutTransition, removedNodes: [GridItemNode], updateLayoutTransition: ContainedViewLayoutTransition?, customScrollToItem: Bool, itemTransition: ContainedViewLayoutTransition, updatingLayout: Bool, completion: (GridNodeDisplayedItemRange) -> Void) {
|
||||
private func applyPresentaionLayoutTransition(_ presentationLayoutTransition: GridNodePresentationLayoutTransition, removedNodes: [GridItemNode], updateLayoutTransition: ContainedViewLayoutTransition?, customScrollToItem: Bool, itemTransition: ContainedViewLayoutTransition, synchronousLoads: Bool, updatingLayout: Bool, completion: (GridNodeDisplayedItemRange) -> Void) {
|
||||
let boundsTransition: ContainedViewLayoutTransition = updateLayoutTransition ?? .immediate
|
||||
|
||||
var previousItemFrames: [WrappedGridItemNode: CGRect]?
|
||||
@ -806,7 +808,7 @@ open class GridNode: GridNodeScroller, UIScrollViewDelegate {
|
||||
itemNode.frame = item.frame
|
||||
}
|
||||
} else {
|
||||
let itemNode = self.items[item.index].node(layout: presentationLayoutTransition.layout.layout)
|
||||
let itemNode = self.items[item.index].node(layout: presentationLayoutTransition.layout.layout, synchronousLoad: synchronousLoads)
|
||||
itemNode.frame = item.frame
|
||||
self.addItemNode(index: item.index, itemNode: itemNode, lowestSectionNode: lowestSectionNode)
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -108,13 +108,15 @@ public struct ListViewDeleteAndInsertOptions: OptionSet {
|
||||
public struct ListViewUpdateSizeAndInsets {
|
||||
public let size: CGSize
|
||||
public let insets: UIEdgeInsets
|
||||
public let scrollIndicatorInsets: UIEdgeInsets?
|
||||
public let duration: Double
|
||||
public let curve: ListViewAnimationCurve
|
||||
public let ensureTopInsetForOverlayHighlightedItems: CGFloat?
|
||||
|
||||
public init(size: CGSize, insets: UIEdgeInsets, duration: Double, curve: ListViewAnimationCurve, ensureTopInsetForOverlayHighlightedItems: CGFloat? = nil) {
|
||||
public init(size: CGSize, insets: UIEdgeInsets, scrollIndicatorInsets: UIEdgeInsets? = nil, duration: Double, curve: ListViewAnimationCurve, ensureTopInsetForOverlayHighlightedItems: CGFloat? = nil) {
|
||||
self.size = size
|
||||
self.insets = insets
|
||||
self.scrollIndicatorInsets = scrollIndicatorInsets
|
||||
self.duration = duration
|
||||
self.curve = curve
|
||||
self.ensureTopInsetForOverlayHighlightedItems = ensureTopInsetForOverlayHighlightedItems
|
||||
|
||||
@ -33,7 +33,7 @@ public struct ListViewItemConfigureNodeFlags: OptionSet {
|
||||
}
|
||||
|
||||
public protocol ListViewItem {
|
||||
func nodeConfiguredForParams(async: @escaping (@escaping () -> Void) -> Void, params: ListViewItemLayoutParams, previousItem: ListViewItem?, nextItem: ListViewItem?, completion: @escaping (ListViewItemNode, @escaping () -> (Signal<Void, NoError>?, () -> Void)) -> Void)
|
||||
func nodeConfiguredForParams(async: @escaping (@escaping () -> Void) -> Void, params: ListViewItemLayoutParams, synchronousLoads: Bool, previousItem: ListViewItem?, nextItem: ListViewItem?, completion: @escaping (ListViewItemNode, @escaping () -> (Signal<Void, NoError>?, () -> Void)) -> Void)
|
||||
func updateNode(async: @escaping (@escaping () -> Void) -> Void, node: @escaping () -> ListViewItemNode, params: ListViewItemLayoutParams, previousItem: ListViewItem?, nextItem: ListViewItem?, animation: ListViewItemUpdateAnimation, completion: @escaping (ListViewItemNodeLayout, @escaping () -> Void) -> Void)
|
||||
|
||||
var accessoryItem: ListViewAccessoryItem? { get }
|
||||
|
||||
@ -32,6 +32,9 @@ public let UIScreenScale = UIScreen.main.scale
|
||||
public func floorToScreenPixels(_ value: CGFloat) -> CGFloat {
|
||||
return floor(value * UIScreenScale) / UIScreenScale
|
||||
}
|
||||
public func ceilToScreenPixels(_ value: CGFloat) -> CGFloat {
|
||||
return ceil(value * UIScreenScale) / UIScreenScale
|
||||
}
|
||||
|
||||
public let UIScreenPixel = 1.0 / UIScreenScale
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user