mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-22 22:25:57 +00:00
Add 'submodules/AsyncDisplayKit/' from commit '02bedc12816e251ad71777f9d2578329b6d2bef6'
git-subtree-dir: submodules/AsyncDisplayKit git-subtree-mainline:d06f423e0egit-subtree-split:02bedc1281
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
//
|
||||
// LayoutExampleNode+Layouts.swift
|
||||
// Texture
|
||||
//
|
||||
// Copyright (c) Facebook, Inc. and its affiliates. All rights reserved.
|
||||
// Changes after 4/13/2017 are: Copyright (c) Pinterest, Inc. All rights reserved.
|
||||
// Licensed under Apache 2.0: http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
|
||||
import AsyncDisplayKit
|
||||
|
||||
extension HeaderWithRightAndLeftItems {
|
||||
|
||||
override func layoutSpecThatFits(_ constrainedSize: ASSizeRange) -> ASLayoutSpec {
|
||||
let nameLocationStack = ASStackLayoutSpec.vertical()
|
||||
nameLocationStack.style.flexShrink = 1.0
|
||||
nameLocationStack.style.flexGrow = 1.0
|
||||
|
||||
if postLocationNode.attributedText != nil {
|
||||
nameLocationStack.children = [userNameNode, postLocationNode]
|
||||
} else {
|
||||
nameLocationStack.children = [userNameNode]
|
||||
}
|
||||
|
||||
let headerStackSpec = ASStackLayoutSpec(direction: .horizontal,
|
||||
spacing: 40,
|
||||
justifyContent: .start,
|
||||
alignItems: .center,
|
||||
children: [nameLocationStack, postTimeNode])
|
||||
|
||||
return ASInsetLayoutSpec(insets: UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 10), child: headerStackSpec)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
extension PhotoWithInsetTextOverlay {
|
||||
|
||||
override func layoutSpecThatFits(_ constrainedSize: ASSizeRange) -> ASLayoutSpec {
|
||||
let photoDimension: CGFloat = constrainedSize.max.width / 4.0
|
||||
photoNode.style.preferredSize = CGSize(width: photoDimension, height: photoDimension)
|
||||
|
||||
// INFINITY is used to make the inset unbounded
|
||||
let insets = UIEdgeInsets(top: CGFloat.infinity, left: 12, bottom: 12, right: 12)
|
||||
let textInsetSpec = ASInsetLayoutSpec(insets: insets, child: titleNode)
|
||||
|
||||
return ASOverlayLayoutSpec(child: photoNode, overlay: textInsetSpec)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
extension PhotoWithOutsetIconOverlay {
|
||||
|
||||
override func layoutSpecThatFits(_ constrainedSize: ASSizeRange) -> ASLayoutSpec {
|
||||
iconNode.style.preferredSize = CGSize(width: 40, height: 40);
|
||||
iconNode.style.layoutPosition = CGPoint(x: 150, y: 0);
|
||||
|
||||
photoNode.style.preferredSize = CGSize(width: 150, height: 150);
|
||||
photoNode.style.layoutPosition = CGPoint(x: 40 / 2.0, y: 40 / 2.0);
|
||||
|
||||
let absoluteSpec = ASAbsoluteLayoutSpec(children: [photoNode, iconNode])
|
||||
|
||||
// ASAbsoluteLayoutSpec's .sizing property recreates the behavior of ASDK Layout API 1.0's "ASStaticLayoutSpec"
|
||||
absoluteSpec.sizing = .sizeToFit
|
||||
|
||||
return absoluteSpec;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
extension FlexibleSeparatorSurroundingContent {
|
||||
|
||||
override func layoutSpecThatFits(_ constrainedSize: ASSizeRange) -> ASLayoutSpec {
|
||||
topSeparator.style.flexGrow = 1.0
|
||||
bottomSeparator.style.flexGrow = 1.0
|
||||
textNode.style.alignSelf = .center
|
||||
|
||||
let verticalStackSpec = ASStackLayoutSpec.vertical()
|
||||
verticalStackSpec.spacing = 20
|
||||
verticalStackSpec.justifyContent = .center
|
||||
verticalStackSpec.children = [topSeparator, textNode, bottomSeparator]
|
||||
|
||||
return ASInsetLayoutSpec(insets:UIEdgeInsets(top: 60, left: 0, bottom: 60, right: 0), child: verticalStackSpec)
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user