mirror of
https://github.com/TelegramMessenger/Telegram-iOS.git
synced 2026-07-05 19:28:46 +02:00
Various improvements
This commit is contained in:
parent
b62fd285d6
commit
7ed1261193
11 changed files with 31 additions and 26 deletions
|
|
@ -67,7 +67,6 @@ open class SwitchNode: ASDisplayNode {
|
|||
|
||||
(self.view as! UISwitch).backgroundColor = self.backgroundColor
|
||||
(self.view as! UISwitch).tintColor = self.frameColor
|
||||
//(self.view as! UISwitch).thumbTintColor = self.handleColor
|
||||
(self.view as! UISwitch).onTintColor = self.contentColor
|
||||
|
||||
(self.view as! UISwitch).setOn(self._isOn, animated: false)
|
||||
|
|
|
|||
|
|
@ -130,7 +130,7 @@ public final class ToolbarNode: ASDisplayNode {
|
|||
self.backgroundNode.update(size: size, transition: transition)
|
||||
transition.updateFrame(node: self.separatorNode, frame: CGRect(origin: CGPoint(x: 0.0, y: 0.0), size: CGSize(width: size.width, height: UIScreenPixel)))
|
||||
|
||||
var sideInset: CGFloat = 16.0
|
||||
var sideInset: CGFloat = 16.0 + 8.0
|
||||
|
||||
self.leftTitle.attributedText = NSAttributedString(string: toolbar.leftAction?.title ?? "", font: Font.regular(17.0), textColor: (toolbar.leftAction?.isEnabled ?? false) ? self.theme.barSelectedTextColor : self.theme.barTextColor)
|
||||
self.leftButton.accessibilityLabel = toolbar.leftAction?.title
|
||||
|
|
|
|||
|
|
@ -239,14 +239,18 @@ final class TabBarControllerNode: ASDisplayNode {
|
|||
self.view.addSubview(tabBarComponentView)
|
||||
}
|
||||
transition.updateFrame(view: tabBarComponentView, frame: tabBarFrame)
|
||||
transition.updateAlpha(layer: tabBarComponentView.layer, alpha: params.toolbar == nil ? 1.0 : 0.0)
|
||||
}
|
||||
|
||||
transition.updateFrame(node: self.disabledOverlayNode, frame: tabBarFrame)
|
||||
|
||||
let toolbarHeight = 50.0 + params.layout.insets(options: options).bottom
|
||||
let toolbarFrame = CGRect(origin: CGPoint(x: 0.0, y: params.layout.size.height - toolbarHeight), size: CGSize(width: params.layout.size.width, height: toolbarHeight))
|
||||
|
||||
if let toolbar = params.toolbar {
|
||||
if let toolbarNode = self.toolbarNode {
|
||||
transition.updateFrame(node: toolbarNode, frame: tabBarFrame)
|
||||
toolbarNode.updateLayout(size: tabBarFrame.size, leftInset: params.layout.safeInsets.left, rightInset: params.layout.safeInsets.right, additionalSideInsets: params.layout.additionalInsets, bottomInset: bottomInset, toolbar: toolbar, transition: transition)
|
||||
transition.updateFrame(node: toolbarNode, frame: toolbarFrame)
|
||||
toolbarNode.updateLayout(size: toolbarFrame.size, leftInset: params.layout.safeInsets.left, rightInset: params.layout.safeInsets.right, additionalSideInsets: params.layout.additionalInsets, bottomInset: bottomInset, toolbar: toolbar, transition: transition)
|
||||
} else {
|
||||
let toolbarNode = ToolbarNode(theme: ToolbarTheme(theme: self.theme), displaySeparator: true, left: { [weak self] in
|
||||
self?.toolbarActionSelected(.left)
|
||||
|
|
@ -255,8 +259,8 @@ final class TabBarControllerNode: ASDisplayNode {
|
|||
}, middle: { [weak self] in
|
||||
self?.toolbarActionSelected(.middle)
|
||||
})
|
||||
toolbarNode.frame = tabBarFrame
|
||||
toolbarNode.updateLayout(size: tabBarFrame.size, leftInset: params.layout.safeInsets.left, rightInset: params.layout.safeInsets.right, additionalSideInsets: params.layout.additionalInsets, bottomInset: bottomInset, toolbar: toolbar, transition: .immediate)
|
||||
toolbarNode.frame = toolbarFrame
|
||||
toolbarNode.updateLayout(size: toolbarFrame.size, leftInset: params.layout.safeInsets.left, rightInset: params.layout.safeInsets.right, additionalSideInsets: params.layout.additionalInsets, bottomInset: bottomInset, toolbar: toolbar, transition: .immediate)
|
||||
self.addSubnode(toolbarNode)
|
||||
self.toolbarNode = toolbarNode
|
||||
if transition.isAnimated {
|
||||
|
|
|
|||
|
|
@ -893,7 +893,7 @@ public class ChatMessageAnimatedStickerItemNode: ChatMessageItemView {
|
|||
}
|
||||
|
||||
if hasAvatar {
|
||||
avatarInset = layoutConstants.avatarDiameter
|
||||
avatarInset = layoutConstants.avatarInset
|
||||
} else {
|
||||
avatarInset = 0.0
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1713,7 +1713,7 @@ public class ChatMessageBubbleItemNode: ChatMessageItemView, ChatMessagePreviewI
|
|||
}
|
||||
}
|
||||
|
||||
avatarInset = hasAvatar ? layoutConstants.avatarDiameter : 0.0
|
||||
avatarInset = hasAvatar ? layoutConstants.avatarInset : 0.0
|
||||
if isSidePanelOpen {
|
||||
avatarInset = 0.0
|
||||
}
|
||||
|
|
|
|||
|
|
@ -331,7 +331,7 @@ public class ChatMessageInstantVideoItemNode: ChatMessageItemView, ASGestureReco
|
|||
}
|
||||
|
||||
if hasAvatar {
|
||||
avatarInset = layoutConstants.avatarDiameter
|
||||
avatarInset = layoutConstants.avatarInset
|
||||
} else {
|
||||
avatarInset = 0.0
|
||||
}
|
||||
|
|
@ -1343,7 +1343,7 @@ public class ChatMessageInstantVideoItemNode: ChatMessageItemView, ASGestureReco
|
|||
|
||||
let avatarInset: CGFloat
|
||||
if self.appliedHasAvatar {
|
||||
avatarInset = layoutConstants.avatarDiameter
|
||||
avatarInset = layoutConstants.avatarInset
|
||||
} else {
|
||||
avatarInset = 0.0
|
||||
}
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ public struct ChatMessageItemWallpaperLayoutConstants {
|
|||
}
|
||||
|
||||
public struct ChatMessageItemLayoutConstants {
|
||||
public var avatarDiameter: CGFloat
|
||||
public var avatarInset: CGFloat
|
||||
public var timestampHeaderHeight: CGFloat
|
||||
public var timestampDateAndTopicHeaderHeight: CGFloat
|
||||
|
||||
|
|
@ -118,8 +118,8 @@ public struct ChatMessageItemLayoutConstants {
|
|||
public var instantVideo: ChatMessageItemInstantVideoConstants
|
||||
public var wallpapers: ChatMessageItemWallpaperLayoutConstants
|
||||
|
||||
public init(avatarDiameter: CGFloat, timestampHeaderHeight: CGFloat, timestampDateAndTopicHeaderHeight: CGFloat, bubble: ChatMessageItemBubbleLayoutConstants, image: ChatMessageItemImageLayoutConstants, video: ChatMessageItemVideoLayoutConstants, text: ChatMessageItemTextLayoutConstants, file: ChatMessageItemFileLayoutConstants, instantVideo: ChatMessageItemInstantVideoConstants, wallpapers: ChatMessageItemWallpaperLayoutConstants) {
|
||||
self.avatarDiameter = avatarDiameter
|
||||
public init(avatarInset: CGFloat, timestampHeaderHeight: CGFloat, timestampDateAndTopicHeaderHeight: CGFloat, bubble: ChatMessageItemBubbleLayoutConstants, image: ChatMessageItemImageLayoutConstants, video: ChatMessageItemVideoLayoutConstants, text: ChatMessageItemTextLayoutConstants, file: ChatMessageItemFileLayoutConstants, instantVideo: ChatMessageItemInstantVideoConstants, wallpapers: ChatMessageItemWallpaperLayoutConstants) {
|
||||
self.avatarInset = avatarInset
|
||||
self.timestampHeaderHeight = timestampHeaderHeight
|
||||
self.timestampDateAndTopicHeaderHeight = timestampDateAndTopicHeaderHeight
|
||||
self.bubble = bubble
|
||||
|
|
@ -144,7 +144,7 @@ public struct ChatMessageItemLayoutConstants {
|
|||
let instantVideo = ChatMessageItemInstantVideoConstants(insets: UIEdgeInsets(top: 4.0, left: 0.0, bottom: 4.0, right: 0.0), dimensions: CGSize(width: 212.0, height: 212.0))
|
||||
let wallpapers = ChatMessageItemWallpaperLayoutConstants(maxTextWidth: 180.0)
|
||||
|
||||
return ChatMessageItemLayoutConstants(avatarDiameter: 37.0, timestampHeaderHeight: 34.0, timestampDateAndTopicHeaderHeight: 7.0 * 2.0 + 20.0 * 2.0 + 7.0, bubble: bubble, image: image, video: video, text: text, file: file, instantVideo: instantVideo, wallpapers: wallpapers)
|
||||
return ChatMessageItemLayoutConstants(avatarInset: 44.0, timestampHeaderHeight: 34.0, timestampDateAndTopicHeaderHeight: 7.0 * 2.0 + 20.0 * 2.0 + 7.0, bubble: bubble, image: image, video: video, text: text, file: file, instantVideo: instantVideo, wallpapers: wallpapers)
|
||||
}
|
||||
|
||||
public static var regular: ChatMessageItemLayoutConstants {
|
||||
|
|
@ -156,7 +156,7 @@ public struct ChatMessageItemLayoutConstants {
|
|||
let instantVideo = ChatMessageItemInstantVideoConstants(insets: UIEdgeInsets(top: 4.0, left: 0.0, bottom: 4.0, right: 0.0), dimensions: CGSize(width: 240.0, height: 240.0))
|
||||
let wallpapers = ChatMessageItemWallpaperLayoutConstants(maxTextWidth: 180.0)
|
||||
|
||||
return ChatMessageItemLayoutConstants(avatarDiameter: 37.0, timestampHeaderHeight: 34.0, timestampDateAndTopicHeaderHeight: 7.0 * 2.0 + 20.0 * 2.0 + 7.0, bubble: bubble, image: image, video: video, text: text, file: file, instantVideo: instantVideo, wallpapers: wallpapers)
|
||||
return ChatMessageItemLayoutConstants(avatarInset: 44.0, timestampHeaderHeight: 34.0, timestampDateAndTopicHeaderHeight: 7.0 * 2.0 + 20.0 * 2.0 + 7.0, bubble: bubble, image: image, video: video, text: text, file: file, instantVideo: instantVideo, wallpapers: wallpapers)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -923,7 +923,7 @@ public final class ChatMessageAvatarHeader: ListViewItemHeader {
|
|||
public let stickDirection: ListViewItemHeaderStickDirection
|
||||
public let stickOverInsets: Bool = false
|
||||
|
||||
public let height: CGFloat = 38.0
|
||||
public let height: CGFloat = 40.0
|
||||
|
||||
public func combinesWith(other: ListViewItemHeader) -> Bool {
|
||||
if let other = other as? ChatMessageAvatarHeader, other.id == self.id {
|
||||
|
|
@ -1053,9 +1053,9 @@ public final class ChatMessageAvatarHeaderNodeImpl: ListViewItemHeaderNode, Chat
|
|||
if let previousPeer = self.peer, previousPeer.nameColor != peer.nameColor {
|
||||
self.peer = peer
|
||||
if peer.smallProfileImage != nil {
|
||||
self.avatarNode.setPeerV2(context: self.context, theme: self.presentationData.theme.theme, peer: EnginePeer(peer), authorOfMessage: self.messageReference, overrideImage: nil, emptyColor: .black, synchronousLoad: false, displayDimensions: CGSize(width: 38.0, height: 38.0))
|
||||
self.avatarNode.setPeerV2(context: self.context, theme: self.presentationData.theme.theme, peer: EnginePeer(peer), authorOfMessage: self.messageReference, overrideImage: nil, emptyColor: .black, synchronousLoad: false, displayDimensions: CGSize(width: 40.0, height: 40.0))
|
||||
} else {
|
||||
self.avatarNode.setPeer(context: self.context, theme: self.presentationData.theme.theme, peer: EnginePeer(peer), authorOfMessage: self.messageReference, overrideImage: nil, emptyColor: .black, synchronousLoad: false, displayDimensions: CGSize(width: 38.0, height: 38.0))
|
||||
self.avatarNode.setPeer(context: self.context, theme: self.presentationData.theme.theme, peer: EnginePeer(peer), authorOfMessage: self.messageReference, overrideImage: nil, emptyColor: .black, synchronousLoad: false, displayDimensions: CGSize(width: 40.0, height: 40.0))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1072,9 +1072,9 @@ public final class ChatMessageAvatarHeaderNodeImpl: ListViewItemHeaderNode, Chat
|
|||
overrideImage = .deletedIcon
|
||||
}
|
||||
if peer.smallProfileImage != nil {
|
||||
self.avatarNode.setPeerV2(context: context, theme: theme, peer: EnginePeer(peer), authorOfMessage: authorOfMessage, overrideImage: overrideImage, emptyColor: emptyColor, synchronousLoad: synchronousLoad, displayDimensions: CGSize(width: 38.0, height: 38.0))
|
||||
self.avatarNode.setPeerV2(context: context, theme: theme, peer: EnginePeer(peer), authorOfMessage: authorOfMessage, overrideImage: overrideImage, emptyColor: emptyColor, synchronousLoad: synchronousLoad, displayDimensions: CGSize(width: 40.0, height: 40.0))
|
||||
} else {
|
||||
self.avatarNode.setPeer(context: context, theme: theme, peer: EnginePeer(peer), authorOfMessage: authorOfMessage, overrideImage: overrideImage, emptyColor: emptyColor, synchronousLoad: synchronousLoad, displayDimensions: CGSize(width: 38.0, height: 38.0))
|
||||
self.avatarNode.setPeer(context: context, theme: theme, peer: EnginePeer(peer), authorOfMessage: authorOfMessage, overrideImage: overrideImage, emptyColor: emptyColor, synchronousLoad: synchronousLoad, displayDimensions: CGSize(width: 40.0, height: 40.0))
|
||||
}
|
||||
|
||||
if peer.isPremium && context.sharedContext.energyUsageSettings.autoplayVideo {
|
||||
|
|
@ -1111,7 +1111,7 @@ public final class ChatMessageAvatarHeaderNodeImpl: ListViewItemHeaderNode, Chat
|
|||
strongSelf.avatarNode.contentNode.addSubnode(videoNode)
|
||||
strongSelf.avatarVideoNode = videoNode
|
||||
}
|
||||
videoNode.update(peer: EnginePeer(peer), photo: photo, size: CGSize(width: 38.0, height: 38.0))
|
||||
videoNode.update(peer: EnginePeer(peer), photo: photo, size: CGSize(width: 40.0, height: 40.0))
|
||||
|
||||
if strongSelf.hierarchyTrackingLayer == nil {
|
||||
let hierarchyTrackingLayer = HierarchyTrackingLayer()
|
||||
|
|
@ -1220,8 +1220,8 @@ public final class ChatMessageAvatarHeaderNodeImpl: ListViewItemHeaderNode, Chat
|
|||
}
|
||||
|
||||
override public func updateLayout(size: CGSize, leftInset: CGFloat, rightInset: CGFloat, transition: ContainedViewLayoutTransition) {
|
||||
transition.updateFrame(node: self.containerNode, frame: CGRect(origin: CGPoint(x: leftInset + 3.0, y: 0.0), size: CGSize(width: 38.0, height: 38.0)))
|
||||
let avatarFrame = CGRect(origin: CGPoint(), size: CGSize(width: 38.0, height: 38.0))
|
||||
transition.updateFrame(node: self.containerNode, frame: CGRect(origin: CGPoint(x: leftInset + 8.0, y: 0.0), size: CGSize(width: 40.0, height: 40.0)))
|
||||
let avatarFrame = CGRect(origin: CGPoint(), size: CGSize(width: 40.0, height: 40.0))
|
||||
self.avatarNode.position = avatarFrame.center
|
||||
self.avatarNode.bounds = CGRect(origin: CGPoint(), size: avatarFrame.size)
|
||||
self.avatarNode.updateSize(size: avatarFrame.size)
|
||||
|
|
@ -1265,7 +1265,7 @@ public final class ChatMessageAvatarHeaderNodeImpl: ListViewItemHeaderNode, Chat
|
|||
var avatarTransform: CATransform3D = CATransform3DIdentity
|
||||
if isHidden {
|
||||
let scale: CGFloat = isHidden ? 0.001 : 1.0
|
||||
avatarTransform = CATransform3DTranslate(avatarTransform, -38.0 * 0.5, 38.0 * 0.5, 0.0)
|
||||
avatarTransform = CATransform3DTranslate(avatarTransform, -40.0 * 0.5, 40.0 * 0.5, 0.0)
|
||||
avatarTransform = CATransform3DScale(avatarTransform, scale, scale, 1.0)
|
||||
}
|
||||
transition.updateTransform(node: self.avatarNode, transform: avatarTransform)
|
||||
|
|
|
|||
|
|
@ -514,7 +514,7 @@ public class ChatMessageStickerItemNode: ChatMessageItemView {
|
|||
}
|
||||
|
||||
if hasAvatar {
|
||||
avatarInset = layoutConstants.avatarDiameter
|
||||
avatarInset = layoutConstants.avatarInset
|
||||
} else {
|
||||
avatarInset = 0.0
|
||||
}
|
||||
|
|
|
|||
|
|
@ -311,6 +311,8 @@ public final class TabBarComponent: Component {
|
|||
func update(component: TabBarComponent, availableSize: CGSize, state: EmptyComponentState, environment: Environment<Empty>, transition: ComponentTransition) -> CGSize {
|
||||
let innerInset: CGFloat = 3.0
|
||||
|
||||
let availableSize = CGSize(width: min(500.0, availableSize.width), height: availableSize.height)
|
||||
|
||||
let previousComponent = self.component
|
||||
self.component = component
|
||||
self.state = state
|
||||
|
|
|
|||
|
|
@ -192,7 +192,7 @@ final class ChatHistoryNavigationButtons: ASDisplayNode {
|
|||
transition.updateAlpha(node: self.downButton, alpha: 1.0)
|
||||
transition.updateTransformScale(node: self.downButton, scale: 1.0)
|
||||
} else {
|
||||
transition.updateAlpha(node: self.downButton, alpha: 0.0, completion: { [weak self] completed in
|
||||
transition.updateAlpha(node: self.downButton, alpha: 0.1, completion: { [weak self] completed in
|
||||
guard let strongSelf = self, completed else {
|
||||
return
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue