mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-22 14:20:20 +00:00
[ASCellNode] Layout delegate should not be public as it must not be reset externally.
Do not call layout delegate method before the cell node is loaded. This can happen if application code calls -setNeedsLayout on the cell manually, and can confuse UIKit state because we submit an empty batch update call on the next runloop.
This commit is contained in:
@@ -8,6 +8,28 @@
|
||||
|
||||
#import "ASCellNode.h"
|
||||
|
||||
@interface ASCellNode (Internal)
|
||||
@protocol ASCellNodeLayoutDelegate <NSObject>
|
||||
|
||||
/**
|
||||
* Notifies the delegate that the specified cell node has done a relayout.
|
||||
* The notification is done on main thread.
|
||||
*
|
||||
* This will not be called due to measurement passes before the node has loaded
|
||||
* its view, even if triggered by -setNeedsLayout, as it is assumed these are
|
||||
* not relevant to UIKit. Indeed, these calls can cause consistency issues.
|
||||
*
|
||||
* @param node A node informing the delegate about the relayout.
|
||||
* @param sizeChanged `YES` if the node's `calculatedSize` changed during the relayout, `NO` otherwise.
|
||||
*/
|
||||
- (void)nodeDidRelayout:(ASCellNode *)node sizeChanged:(BOOL)sizeChanged;
|
||||
|
||||
@end
|
||||
|
||||
@interface ASCellNode ()
|
||||
|
||||
/*
|
||||
* A delegate to be notified (on main thread) after a relayout.
|
||||
*/
|
||||
@property (nonatomic, weak) id<ASCellNodeLayoutDelegate> layoutDelegate;
|
||||
|
||||
@end
|
||||
|
||||
Reference in New Issue
Block a user