More RTL fixes

Fixed in-call speaker mode
This commit is contained in:
Peter 2018-10-03 01:37:43 +04:00
parent 606e607de4
commit 4617a5b0c4
14 changed files with 63 additions and 70 deletions

View File

@ -7,7 +7,7 @@
<key>TelegramUI.xcscheme</key>
<dict>
<key>orderHint</key>
<integer>3</integer>
<integer>2</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>

View File

@ -328,7 +328,7 @@ final class ChatMessageAttachedContentNode: ASDisplayNode {
var inlineImageDimensions: CGSize?
var inlineImageSize: CGSize?
var updateInlineImageSignal: Signal<(TransformImageArguments) -> DrawingContext?, NoError>?
var textCutout: TextNodeCutout?
var textCutout = TextNodeCutout()
var initialWidth: CGFloat = CGFloat.greatestFiniteMagnitude
var refineContentImageLayout: ((CGSize, ImageCorners) -> (CGFloat, (CGFloat) -> (CGSize, (ContainedViewLayoutTransition) -> ChatMessageInteractiveMediaNode)))?
var refineContentFileLayout: ((CGSize) -> (CGFloat, (CGFloat) -> (CGSize, () -> ChatMessageInteractiveFileNode)))?
@ -435,7 +435,7 @@ final class ChatMessageAttachedContentNode: ASDisplayNode {
inlineImageSize = CGSize(width: 54.0, height: 54.0)
if let inlineImageSize = inlineImageSize {
textCutout = TextNodeCutout(position: .TopRight, size: CGSize(width: inlineImageSize.width + 10.0, height: inlineImageSize.height + 10.0))
textCutout.topRight = CGSize(width: inlineImageSize.width + 10.0, height: inlineImageSize.height + 10.0)
}
}
@ -508,7 +508,12 @@ final class ChatMessageAttachedContentNode: ASDisplayNode {
updatedAdditionalImageBadge = currentAdditionalImageBadgeNode ?? ChatMessageInteractiveMediaBadge()
}
let (textLayout, textApply) = textAsyncLayout(TextNodeLayoutArguments(attributedString: textString, backgroundColor: nil, maximumNumberOfLines: 12, truncationType: .end, constrainedSize: textConstrainedSize, alignment: .natural, cutout: textCutout, insets: UIEdgeInsets()))
var upatedTextCutout = textCutout
if statusInText, let (statusSize, _) = statusSizeAndApply {
upatedTextCutout.bottomRight = statusSize
}
let (textLayout, textApply) = textAsyncLayout(TextNodeLayoutArguments(attributedString: textString, backgroundColor: nil, maximumNumberOfLines: 12, truncationType: .end, constrainedSize: textConstrainedSize, alignment: .natural, cutout: upatedTextCutout, insets: UIEdgeInsets()))
var textFrame = CGRect(origin: CGPoint(), size: textLayout.size)

View File

@ -168,7 +168,7 @@ class ChatMessageTextBubbleContentNode: ChatMessageBubbleContentNode {
var cutout: TextNodeCutout?
if let statusSize = statusSize {
cutout = TextNodeCutout(position: .BottomRight, size: statusSize)
cutout = TextNodeCutout(bottomRight: statusSize)
}
let (textLayout, textApply) = textLayout(TextNodeLayoutArguments(attributedString: attributedText, backgroundColor: nil, maximumNumberOfLines: 0, truncationType: .end, constrainedSize: textConstrainedSize, alignment: .natural, cutout: cutout, insets: UIEdgeInsets()))

View File

@ -4,7 +4,7 @@ import AsyncDisplayKit
final class ChatRequestInProgressTitlePanelNode: ChatTitleAccessoryPanelNode {
private let separatorNode: ASDisplayNode
private let titleNode: ASTextNode
private let titleNode: ImmediateTextNode
private var theme: PresentationTheme?
private var strings: PresentationStrings?
@ -13,7 +13,7 @@ final class ChatRequestInProgressTitlePanelNode: ChatTitleAccessoryPanelNode {
self.separatorNode = ASDisplayNode()
self.separatorNode.isLayerBacked = true
self.titleNode = ASTextNode()
self.titleNode = ImmediateTextNode()
self.titleNode.maximumNumberOfLines = 1
super.init()
@ -38,7 +38,7 @@ final class ChatRequestInProgressTitlePanelNode: ChatTitleAccessoryPanelNode {
let panelHeight: CGFloat = 40.0
let titleSize = self.titleNode.measure(CGSize(width: width - leftInset - rightInset, height: 100.0))
let titleSize = self.titleNode.updateLayout(CGSize(width: width - leftInset - rightInset, height: 100.0))
transition.updateFrame(node: self.titleNode, frame: CGRect(origin: CGPoint(x: floor((width - titleSize.width) / 2.0), y: floor((panelHeight - titleSize.height) / 2.0)), size: titleSize))
transition.updateFrame(node: self.separatorNode, frame: CGRect(origin: CGPoint(x: 0.0, y: panelHeight - UIScreenPixel), size: CGSize(width: width, height: UIScreenPixel)))

View File

@ -14,7 +14,7 @@ enum ChatTitleContent {
private final class ChatTitleNetworkStatusNode: ASDisplayNode {
private var theme: PresentationTheme
private let titleNode: ASTextNode
private let titleNode: ImmediateTextNode
private let activityIndicator: ActivityIndicator
var title: String = "" {
@ -28,11 +28,10 @@ private final class ChatTitleNetworkStatusNode: ASDisplayNode {
init(theme: PresentationTheme) {
self.theme = theme
self.titleNode = ASTextNode()
self.titleNode = ImmediateTextNode()
self.titleNode.isLayerBacked = true
self.titleNode.displaysAsynchronously = false
self.titleNode.maximumNumberOfLines = 1
self.titleNode.truncationMode = .byTruncatingTail
self.titleNode.isOpaque = false
self.titleNode.isUserInteractionEnabled = false
@ -57,7 +56,7 @@ private final class ChatTitleNetworkStatusNode: ASDisplayNode {
let indicatorSize = self.activityIndicator.bounds.size
let indicatorPadding = indicatorSize.width + 6.0
let titleSize = self.titleNode.measure(CGSize(width: max(1.0, size.width - indicatorPadding), height: size.height))
let titleSize = self.titleNode.updateLayout(CGSize(width: max(1.0, size.width - indicatorPadding), height: size.height))
let combinedHeight = titleSize.height
let titleFrame = CGRect(origin: CGPoint(x: indicatorPadding + floor((size.width - titleSize.width - indicatorPadding) / 2.0), y: floor((size.height - combinedHeight) / 2.0)), size: titleSize)
@ -81,11 +80,11 @@ final class ChatTitleView: UIView, NavigationBarTitleView {
private var dateTimeFormat: PresentationDateTimeFormat
private let contentContainer: ASDisplayNode
private let titleNode: ASTextNode
private let titleNode: ImmediateTextNode
private let titleLeftIconNode: ASImageNode
private let titleRightIconNode: ASImageNode
private let infoNode: ASTextNode
private let typingNode: ASTextNode
private let infoNode: ImmediateTextNode
private let typingNode: ImmediateTextNode
private var typingIndicator: TGModernConversationTitleActivityIndicator?
private let button: HighlightTrackingButtonNode
@ -412,10 +411,9 @@ final class ChatTitleView: UIView, NavigationBarTitleView {
self.contentContainer = ASDisplayNode()
self.titleNode = ASTextNode()
self.titleNode = ImmediateTextNode()
self.titleNode.displaysAsynchronously = false
self.titleNode.maximumNumberOfLines = 1
self.titleNode.truncationMode = .byTruncatingTail
self.titleNode.isOpaque = false
self.titleLeftIconNode = ASImageNode()
@ -428,16 +426,14 @@ final class ChatTitleView: UIView, NavigationBarTitleView {
self.titleRightIconNode.displayWithoutProcessing = true
self.titleRightIconNode.displaysAsynchronously = false
self.infoNode = ASTextNode()
self.infoNode = ImmediateTextNode()
self.infoNode.displaysAsynchronously = false
self.infoNode.maximumNumberOfLines = 1
self.infoNode.truncationMode = .byTruncatingTail
self.infoNode.isOpaque = false
self.typingNode = ASTextNode()
self.typingNode = ImmediateTextNode()
self.typingNode.displaysAsynchronously = false
self.typingNode.maximumNumberOfLines = 1
self.typingNode.truncationMode = .byTruncatingTail
self.typingNode.isOpaque = false
self.button = HighlightTrackingButtonNode()
@ -532,9 +528,9 @@ final class ChatTitleView: UIView, NavigationBarTitleView {
}
if size.height > 40.0 {
let titleSize = self.titleNode.measure(CGSize(width: clearBounds.width - leftIconWidth - rightIconWidth, height: size.height))
let infoSize = self.infoNode.measure(clearBounds.size)
let typingSize = self.typingNode.measure(clearBounds.size)
let titleSize = self.titleNode.updateLayout(CGSize(width: clearBounds.width - leftIconWidth - rightIconWidth, height: size.height))
let infoSize = self.infoNode.updateLayout(clearBounds.size)
let typingSize = self.typingNode.updateLayout(clearBounds.size)
let titleInfoSpacing: CGFloat = 0.0
var titleFrame: CGRect
@ -574,9 +570,9 @@ final class ChatTitleView: UIView, NavigationBarTitleView {
self.titleRightIconNode.frame = CGRect(origin: CGPoint(x: titleFrame.maxX + 3.0, y: titleFrame.minY + 7.0), size: image.size)
}
} else {
let titleSize = self.titleNode.measure(CGSize(width: floor(clearBounds.width / 2.0 - leftIconWidth - rightIconWidth), height: size.height))
let infoSize = self.infoNode.measure(CGSize(width: floor(clearBounds.width / 2.0), height: size.height))
let typingSize = self.typingNode.measure(CGSize(width: floor(clearBounds.width / 2.0), height: size.height))
let titleSize = self.titleNode.updateLayout(CGSize(width: floor(clearBounds.width / 2.0 - leftIconWidth - rightIconWidth), height: size.height))
let infoSize = self.infoNode.updateLayout(CGSize(width: floor(clearBounds.width / 2.0), height: size.height))
let typingSize = self.typingNode.updateLayout(CGSize(width: floor(clearBounds.width / 2.0), height: size.height))
let titleInfoSpacing: CGFloat = 8.0
let combinedWidth = titleSize.width + leftIconWidth + rightIconWidth + infoSize.width + titleInfoSpacing

View File

@ -10,8 +10,8 @@ final class EditAccessoryPanelNode: AccessoryPanelNode {
let closeButton: ASButtonNode
let lineNode: ASImageNode
let titleNode: ASTextNode
let textNode: ASTextNode
let titleNode: ImmediateTextNode
let textNode: ImmediateTextNode
let imageNode: TransformImageNode
private let activityIndicator: ActivityIndicator
@ -68,13 +68,11 @@ final class EditAccessoryPanelNode: AccessoryPanelNode {
self.lineNode.displaysAsynchronously = false
self.lineNode.image = PresentationResourcesChat.chatInputPanelVerticalSeparatorLineImage(theme)
self.titleNode = ASTextNode()
self.titleNode.truncationMode = .byTruncatingTail
self.titleNode = ImmediateTextNode()
self.titleNode.maximumNumberOfLines = 1
self.titleNode.displaysAsynchronously = false
self.textNode = ASTextNode()
self.textNode.truncationMode = .byTruncatingTail
self.textNode = ImmediateTextNode()
self.textNode.maximumNumberOfLines = 1
self.textNode.displaysAsynchronously = false
self.textNode.isUserInteractionEnabled = true
@ -308,10 +306,10 @@ final class EditAccessoryPanelNode: AccessoryPanelNode {
}
self.imageNode.frame = CGRect(origin: CGPoint(x: leftInset + 9.0, y: 8.0), size: CGSize(width: 35.0, height: 35.0))
let titleSize = self.titleNode.measure(CGSize(width: bounds.size.width - leftInset - textLineInset - rightInset - textRightInset - imageTextInset, height: bounds.size.height))
let titleSize = self.titleNode.updateLayout(CGSize(width: bounds.size.width - leftInset - textLineInset - rightInset - textRightInset - imageTextInset, height: bounds.size.height))
self.titleNode.frame = CGRect(origin: CGPoint(x: leftInset + textLineInset + imageTextInset, y: 7.0), size: titleSize)
let textSize = self.textNode.measure(CGSize(width: bounds.size.width - leftInset - textLineInset - rightInset - textRightInset - imageTextInset, height: bounds.size.height))
let textSize = self.textNode.updateLayout(CGSize(width: bounds.size.width - leftInset - textLineInset - rightInset - textRightInset - imageTextInset, height: bounds.size.height))
self.textNode.frame = CGRect(origin: CGPoint(x: leftInset + textLineInset + imageTextInset, y: 25.0), size: textSize)
self.tapNode.frame = CGRect(origin: CGPoint(x: leftInset, y: 0.0), size: CGSize(width: bounds.width - leftInset - rightInset - closeButtonSize.width - 4.0, height: bounds.height))

View File

@ -64,8 +64,8 @@ final class ForwardAccessoryPanelNode: AccessoryPanelNode {
let closeButton: ASButtonNode
let lineNode: ASImageNode
let titleNode: ASTextNode
let textNode: ASTextNode
let titleNode: ImmediateTextNode
let textNode: ImmediateTextNode
var theme: PresentationTheme
@ -83,13 +83,11 @@ final class ForwardAccessoryPanelNode: AccessoryPanelNode {
self.lineNode.displaysAsynchronously = false
self.lineNode.image = PresentationResourcesChat.chatInputPanelVerticalSeparatorLineImage(theme)
self.titleNode = ASTextNode()
self.titleNode.truncationMode = .byTruncatingTail
self.titleNode = ImmediateTextNode()
self.titleNode.maximumNumberOfLines = 1
self.titleNode.displaysAsynchronously = false
self.textNode = ASTextNode()
self.textNode.truncationMode = .byTruncatingTail
self.textNode = ImmediateTextNode()
self.textNode.maximumNumberOfLines = 1
self.textNode.displaysAsynchronously = false
@ -174,10 +172,10 @@ final class ForwardAccessoryPanelNode: AccessoryPanelNode {
self.lineNode.frame = CGRect(origin: CGPoint(x: leftInset, y: 8.0), size: CGSize(width: 2.0, height: bounds.size.height - 10.0))
let titleSize = self.titleNode.measure(CGSize(width: bounds.size.width - leftInset - textLineInset - rightInset - textRightInset, height: bounds.size.height))
let titleSize = self.titleNode.updateLayout(CGSize(width: bounds.size.width - leftInset - textLineInset - rightInset - textRightInset, height: bounds.size.height))
self.titleNode.frame = CGRect(origin: CGPoint(x: leftInset + textLineInset, y: 7.0), size: titleSize)
let textSize = self.textNode.measure(CGSize(width: bounds.size.width - leftInset - textLineInset - rightInset - textRightInset, height: bounds.size.height))
let textSize = self.textNode.updateLayout(CGSize(width: bounds.size.width - leftInset - textLineInset - rightInset - textRightInset, height: bounds.size.height))
self.textNode.frame = CGRect(origin: CGPoint(x: leftInset + textLineInset, y: 25.0), size: textSize)
}

View File

@ -96,7 +96,7 @@ class ItemListActivityTextItemNode: ListViewItemNode {
titleString.addAttributes([NSAttributedStringKey.font: titleFont], range: NSMakeRange(0, titleString.length))
}
let (titleLayout, titleApply) = makeTitleLayout(TextNodeLayoutArguments(attributedString: titleString, backgroundColor: nil, maximumNumberOfLines: 0, truncationType: .end, constrainedSize: CGSize(width: params.width - params.rightInset - 20.0 - 22.0, height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: TextNodeCutout(position: .TopLeft, size: CGSize(width: activityWidth, height: 4.0)), insets: UIEdgeInsets()))
let (titleLayout, titleApply) = makeTitleLayout(TextNodeLayoutArguments(attributedString: titleString, backgroundColor: nil, maximumNumberOfLines: 0, truncationType: .end, constrainedSize: CGSize(width: params.width - params.rightInset - 20.0 - 22.0, height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: TextNodeCutout(topLeft: CGSize(width: activityWidth, height: 4.0)), insets: UIEdgeInsets()))
let contentSize: CGSize
let insets: UIEdgeInsets

View File

@ -286,7 +286,7 @@ final class ListMessageSnippetItemNode: ListMessageNode {
let (descriptionNodeLayout, descriptionNodeApply) = descriptionNodeMakeLayout(TextNodeLayoutArguments(attributedString: descriptionText, backgroundColor: nil, maximumNumberOfLines: 3, truncationType: .end, constrainedSize: CGSize(width: params.width - leftInset - 8.0 - params.rightInset - 12.0, height: CGFloat.infinity), alignment: .natural, lineSpacing: 0.3, cutout: nil, insets: UIEdgeInsets(top: 1.0, left: 1.0, bottom: 1.0, right: 1.0)))
let (linkNodeLayout, linkNodeApply) = linkNodeMakeLayout(TextNodeLayoutArguments(attributedString: linkText, backgroundColor: nil, maximumNumberOfLines: 0, truncationType: .end, constrainedSize: CGSize(width: params.width - leftInset - 8.0 - params.rightInset - 12.0, height: CGFloat.infinity), alignment: .natural, lineSpacing: 0.3, cutout: isInstantView ? TextNodeCutout(position: .TopLeft, size: CGSize(width: 14.0, height: 8.0)) : nil, insets: UIEdgeInsets(top: 1.0, left: 1.0, bottom: 1.0, right: 1.0)))
let (linkNodeLayout, linkNodeApply) = linkNodeMakeLayout(TextNodeLayoutArguments(attributedString: linkText, backgroundColor: nil, maximumNumberOfLines: 0, truncationType: .end, constrainedSize: CGSize(width: params.width - leftInset - 8.0 - params.rightInset - 12.0, height: CGFloat.infinity), alignment: .natural, lineSpacing: 0.3, cutout: isInstantView ? TextNodeCutout(topLeft: CGSize(width: 14.0, height: 8.0)) : nil, insets: UIEdgeInsets(top: 1.0, left: 1.0, bottom: 1.0, right: 1.0)))
var instantViewImage: UIImage?
if isInstantView {
instantViewImage = PresentationResourcesChat.sharedMediaInstantViewIcon(item.theme)

View File

@ -625,7 +625,6 @@ public final class ManagedAudioSession {
case .builtin:
resetToBuiltin = true
case .speaker:
try AVAudioSession.sharedInstance().overrideOutputAudioPort(.speaker)
if type == .voiceCall {
if let routes = AVAudioSession.sharedInstance().availableInputs {
for route in routes {
@ -636,6 +635,7 @@ public final class ManagedAudioSession {
}
}
}
try AVAudioSession.sharedInstance().overrideOutputAudioPort(.speaker)
case .headphones:
break
case let .port(port):

View File

@ -540,17 +540,15 @@ func rawMessagePhoto(postbox: Postbox, photoReference: ImageMediaReference) -> S
}
}
func chatMessagePhoto(postbox: Postbox, photoReference: ImageMediaReference) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> {
return chatMessagePhotoInternal(postbox: postbox, photoReference: photoReference)
public func chatMessagePhoto(postbox: Postbox, photoReference: ImageMediaReference) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> {
return chatMessagePhotoInternal(photoData: chatMessagePhotoDatas(postbox: postbox, photoReference: photoReference))
|> map { _, generate in
return generate
}
}
func chatMessagePhotoInternal(postbox: Postbox, photoReference: ImageMediaReference) -> Signal<(() -> CGSize?, (TransformImageArguments) -> DrawingContext?), NoError> {
let signal = chatMessagePhotoDatas(postbox: postbox, photoReference: photoReference)
return signal
public func chatMessagePhotoInternal(photoData: Signal<(Data?, Data?, Bool), NoError>) -> Signal<(() -> CGSize?, (TransformImageArguments) -> DrawingContext?), NoError> {
return photoData
|> map { (thumbnailData, fullSizeData, fullSizeComplete) in
return ({
return nil
@ -1432,7 +1430,7 @@ func chatMessagePhotoStatus(account: Account, messageId: MessageId, photoReferen
}
}
func chatMessagePhotoInteractiveFetched(account: Account, photoReference: ImageMediaReference) -> Signal<FetchResourceSourceType, NoError> {
public func chatMessagePhotoInteractiveFetched(account: Account, photoReference: ImageMediaReference) -> Signal<FetchResourceSourceType, NoError> {
if let largestRepresentation = largestRepresentationForPhoto(photoReference.media) {
return fetchedMediaResource(postbox: account.postbox, reference: photoReference.resourceReference(largestRepresentation.resource), statsCategory: .image)
} else {

View File

@ -1,7 +1,7 @@
import Foundation
import AsyncDisplayKit
enum RadialStatusNodeState: Equatable {
public enum RadialStatusNodeState: Equatable {
case none
case download(UIColor)
case play(UIColor)
@ -11,7 +11,7 @@ enum RadialStatusNodeState: Equatable {
case customIcon(UIImage)
case secretTimeout(color: UIColor, icon: UIImage?, beginTime: Double, timeout: Double)
static func ==(lhs: RadialStatusNodeState, rhs: RadialStatusNodeState) -> Bool {
public static func ==(lhs: RadialStatusNodeState, rhs: RadialStatusNodeState) -> Bool {
switch lhs {
case .none:
if case .none = rhs {
@ -99,13 +99,13 @@ enum RadialStatusNodeState: Equatable {
node.progress = value
return node
}
case let .secretTimeout(color, icon, beginTime, timeout):
return RadialStatusSecretTimeoutContentNode(color: color, beginTime: beginTime, timeout: timeout, icon: icon)
case let .secretTimeout(color, icon, beginTime, timeout):
return RadialStatusSecretTimeoutContentNode(color: color, beginTime: beginTime, timeout: timeout, icon: icon)
}
}
}
final class RadialStatusNode: ASControlNode {
public final class RadialStatusNode: ASControlNode {
private var backgroundNodeColor: UIColor
private(set) var state: RadialStatusNodeState = .none
@ -114,13 +114,13 @@ final class RadialStatusNode: ASControlNode {
private var contentNode: RadialStatusContentNode?
private var nextContentNode: RadialStatusContentNode?
init(backgroundNodeColor: UIColor) {
public init(backgroundNodeColor: UIColor) {
self.backgroundNodeColor = backgroundNodeColor
super.init()
}
func transitionToState(_ state: RadialStatusNodeState, animated: Bool = true, completion: @escaping () -> Void) {
public func transitionToState(_ state: RadialStatusNodeState, animated: Bool = true, completion: @escaping () -> Void) {
if self.state != state {
self.state = state
@ -221,7 +221,7 @@ final class RadialStatusNode: ASControlNode {
}
}
override func layout() {
override public func layout() {
self.backgroundNode?.frame = self.bounds
if let contentNode = self.contentNode {
contentNode.frame = self.bounds

View File

@ -13,8 +13,8 @@ final class ReplyAccessoryPanelNode: AccessoryPanelNode {
let closeButton: ASButtonNode
let lineNode: ASImageNode
let titleNode: ASTextNode
let textNode: ASTextNode
let titleNode: ImmediateTextNode
let textNode: ImmediateTextNode
let imageNode: TransformImageNode
var theme: PresentationTheme
@ -34,13 +34,11 @@ final class ReplyAccessoryPanelNode: AccessoryPanelNode {
self.lineNode.displaysAsynchronously = false
self.lineNode.image = PresentationResourcesChat.chatInputPanelVerticalSeparatorLineImage(theme)
self.titleNode = ASTextNode()
self.titleNode.truncationMode = .byTruncatingTail
self.titleNode = ImmediateTextNode()
self.titleNode.maximumNumberOfLines = 1
self.titleNode.displaysAsynchronously = false
self.textNode = ASTextNode()
self.textNode.truncationMode = .byTruncatingTail
self.textNode = ImmediateTextNode()
self.textNode.maximumNumberOfLines = 1
self.textNode.displaysAsynchronously = false
@ -216,10 +214,10 @@ final class ReplyAccessoryPanelNode: AccessoryPanelNode {
}
self.imageNode.frame = CGRect(origin: CGPoint(x: leftInset + 9.0, y: 8.0), size: CGSize(width: 35.0, height: 35.0))
let titleSize = self.titleNode.measure(CGSize(width: bounds.size.width - leftInset - textLineInset - rightInset - textRightInset - imageTextInset, height: bounds.size.height))
let titleSize = self.titleNode.updateLayout(CGSize(width: bounds.size.width - leftInset - textLineInset - rightInset - textRightInset - imageTextInset, height: bounds.size.height))
self.titleNode.frame = CGRect(origin: CGPoint(x: leftInset + textLineInset + imageTextInset, y: 7.0), size: titleSize)
let textSize = self.textNode.measure(CGSize(width: bounds.size.width - leftInset - textLineInset - rightInset - textRightInset - imageTextInset, height: bounds.size.height))
let textSize = self.textNode.updateLayout(CGSize(width: bounds.size.width - leftInset - textLineInset - rightInset - textRightInset - imageTextInset, height: bounds.size.height))
self.textNode.frame = CGRect(origin: CGPoint(x: leftInset + textLineInset + imageTextInset, y: 25.0), size: textSize)
}

View File

@ -37,7 +37,7 @@ public class TransformImageNode: ASDisplayNode {
}
}
func setSignal(_ signal: Signal<(TransformImageArguments) -> DrawingContext?, NoError>, dispatchOnDisplayLink: Bool = true) {
public func setSignal(_ signal: Signal<(TransformImageArguments) -> DrawingContext?, NoError>, dispatchOnDisplayLink: Bool = true) {
let argumentsPromise = self.argumentsPromise
let result = combineLatest(signal, argumentsPromise.get())