mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-09-03 03:10:47 +00:00
Merge pull request #635 from garrettmoon/fixShouldRasterizeSubnodes
Fix should rasterize subnodes
This commit is contained in:
commit
de795d577a
@ -630,10 +630,10 @@ void ASDisplayNodeRespectThreadAffinityOfNode(ASDisplayNode *node, void (^block)
|
||||
{
|
||||
ASDisplayNodeAssertMainThread();
|
||||
ASDN::MutexLocker l(_propertyLock);
|
||||
if (CGRectEqualToRect(_layer.bounds, CGRectZero)) {
|
||||
if (CGRectEqualToRect(self.bounds, CGRectZero)) {
|
||||
return; // Performing layout on a zero-bounds view often results in frame calculations with negative sizes after applying margins, which will cause measureWithSizeRange: on subnodes to assert.
|
||||
}
|
||||
_placeholderLayer.frame = _layer.bounds;
|
||||
_placeholderLayer.frame = self.bounds;
|
||||
[self layout];
|
||||
[self layoutDidFinish];
|
||||
}
|
||||
|
@ -83,6 +83,13 @@ static void __ASDisplayLayerDecrementConcurrentDisplayCount(BOOL displayIsAsync,
|
||||
if (self.isHidden || self.alpha <= 0.0) {
|
||||
return;
|
||||
}
|
||||
|
||||
BOOL rasterizingFromAscendent = [self __rasterizedContainerNode] != nil;
|
||||
|
||||
// if super node is rasterizing descendents, subnodes will not have had layout calls becase they don't have layers
|
||||
if (rasterizingFromAscendent) {
|
||||
[self __layout];
|
||||
}
|
||||
|
||||
// Capture these outside the display block so they are retained.
|
||||
UIColor *backgroundColor = self.backgroundColor;
|
||||
@ -121,6 +128,11 @@ static void __ASDisplayLayerDecrementConcurrentDisplayCount(BOOL displayIsAsync,
|
||||
|
||||
CGContextTranslateCTM(context, frame.origin.x, frame.origin.y);
|
||||
|
||||
//support cornerRadius
|
||||
if (rasterizingFromAscendent && self.cornerRadius && self.clipsToBounds) {
|
||||
[[UIBezierPath bezierPathWithRoundedRect:bounds cornerRadius:self.cornerRadius] addClip];
|
||||
}
|
||||
|
||||
// Fill background if any.
|
||||
CGColorRef backgroundCGColor = backgroundColor.CGColor;
|
||||
if (backgroundColor && CGColorGetAlpha(backgroundCGColor) > 0.0) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user