mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-10-08 19:10:53 +00:00
Various fixes
This commit is contained in:
parent
0450f35da8
commit
32ace10858
@ -12670,3 +12670,5 @@ Sorry for the inconvenience.";
|
||||
"Conversation.OpenProfile" = "OPEN PROFILE";
|
||||
|
||||
"Stars.Intro.GiftStars" = "Gift Stars to Friends";
|
||||
|
||||
"MediaPicker.CreateSticker" = "Create a sticker from a photo";
|
||||
|
@ -1799,9 +1799,13 @@ public final class MediaPickerScreen: ViewController, AttachmentContainable {
|
||||
self.titleView.title = collection.localizedTitle ?? presentationData.strings.Attachment_Gallery
|
||||
} else {
|
||||
switch mode {
|
||||
case .default, .createSticker:
|
||||
case .default:
|
||||
self.titleView.title = presentationData.strings.MediaPicker_Recents
|
||||
self.titleView.isEnabled = true
|
||||
case .createSticker:
|
||||
self.titleView.title = presentationData.strings.MediaPicker_Recents
|
||||
self.titleView.subtitle = presentationData.strings.MediaPicker_CreateSticker
|
||||
self.titleView.isEnabled = true
|
||||
case .story:
|
||||
self.titleView.title = presentationData.strings.MediaPicker_Recents
|
||||
self.titleView.isEnabled = true
|
||||
|
@ -10,12 +10,14 @@ final class MediaPickerTitleView: UIView {
|
||||
let contextSourceNode: ContextReferenceContentNode
|
||||
private let buttonNode: HighlightTrackingButtonNode
|
||||
private let titleNode: ImmediateTextNode
|
||||
private let subtitleNode: ImmediateTextNode
|
||||
private let arrowNode: ASImageNode
|
||||
private let segmentedControlNode: SegmentedControlNode
|
||||
|
||||
public var theme: PresentationTheme {
|
||||
didSet {
|
||||
self.titleNode.attributedText = NSAttributedString(string: self.title, font: NavigationBar.titleFont, textColor: theme.rootController.navigationBar.primaryTextColor)
|
||||
self.subtitleNode.attributedText = NSAttributedString(string: self.subtitle, font: Font.regular(12.0), textColor: self.theme.rootController.navigationBar.secondaryTextColor)
|
||||
self.segmentedControlNode.updateTheme(SegmentedControlTheme(theme: self.theme))
|
||||
}
|
||||
}
|
||||
@ -23,7 +25,16 @@ final class MediaPickerTitleView: UIView {
|
||||
public var title: String = "" {
|
||||
didSet {
|
||||
if self.title != oldValue {
|
||||
self.titleNode.attributedText = NSAttributedString(string: self.title, font: NavigationBar.titleFont, textColor: theme.rootController.navigationBar.primaryTextColor)
|
||||
self.titleNode.attributedText = NSAttributedString(string: self.title, font: NavigationBar.titleFont, textColor: self.theme.rootController.navigationBar.primaryTextColor)
|
||||
self.setNeedsLayout()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public var subtitle: String = "" {
|
||||
didSet {
|
||||
if self.subtitle != oldValue {
|
||||
self.subtitleNode.attributedText = NSAttributedString(string: self.subtitle, font: Font.regular(12.0), textColor: self.theme.rootController.navigationBar.secondaryTextColor)
|
||||
self.setNeedsLayout()
|
||||
}
|
||||
}
|
||||
@ -36,7 +47,7 @@ final class MediaPickerTitleView: UIView {
|
||||
}
|
||||
}
|
||||
|
||||
public func updateTitle(title: String, isEnabled: Bool, animated: Bool) {
|
||||
public func updateTitle(title: String, subtitle: String = "", isEnabled: Bool, animated: Bool) {
|
||||
if animated {
|
||||
if self.title != title {
|
||||
if let snapshotView = self.titleNode.view.snapshotContentTree() {
|
||||
@ -49,6 +60,17 @@ final class MediaPickerTitleView: UIView {
|
||||
self.titleNode.view.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2)
|
||||
}
|
||||
}
|
||||
if self.subtitle != subtitle {
|
||||
if let snapshotView = self.subtitleNode.view.snapshotContentTree() {
|
||||
snapshotView.frame = self.subtitleNode.frame
|
||||
self.addSubview(snapshotView)
|
||||
|
||||
snapshotView.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, removeOnCompletion: false, completion: { _ in
|
||||
snapshotView.removeFromSuperview()
|
||||
})
|
||||
self.subtitleNode.view.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2)
|
||||
}
|
||||
}
|
||||
if self.isEnabled != isEnabled {
|
||||
if let snapshotView = self.arrowNode.view.snapshotContentTree() {
|
||||
snapshotView.frame = self.arrowNode.frame
|
||||
@ -62,6 +84,7 @@ final class MediaPickerTitleView: UIView {
|
||||
}
|
||||
}
|
||||
self.title = title
|
||||
self.subtitle = subtitle
|
||||
self.isEnabled = isEnabled
|
||||
}
|
||||
|
||||
@ -76,6 +99,7 @@ final class MediaPickerTitleView: UIView {
|
||||
if self.segmentsHidden != oldValue {
|
||||
let transition = ContainedViewLayoutTransition.animated(duration: 0.2, curve: .easeInOut)
|
||||
transition.updateAlpha(node: self.titleNode, alpha: self.segmentsHidden ? 1.0 : 0.0)
|
||||
transition.updateAlpha(node: self.subtitleNode, alpha: self.segmentsHidden ? 1.0 : 0.0)
|
||||
transition.updateAlpha(node: self.arrowNode, alpha: self.segmentsHidden ? 1.0 : 0.0)
|
||||
transition.updateAlpha(node: self.segmentedControlNode, alpha: self.segmentsHidden ? 0.0 : 1.0)
|
||||
self.segmentedControlNode.isUserInteractionEnabled = !self.segmentsHidden
|
||||
@ -115,6 +139,9 @@ final class MediaPickerTitleView: UIView {
|
||||
self.titleNode = ImmediateTextNode()
|
||||
self.titleNode.displaysAsynchronously = false
|
||||
|
||||
self.subtitleNode = ImmediateTextNode()
|
||||
self.subtitleNode.displaysAsynchronously = false
|
||||
|
||||
self.arrowNode = ASImageNode()
|
||||
self.arrowNode.displaysAsynchronously = false
|
||||
self.arrowNode.image = generateTintedImage(image: UIImage(bundleImageName: "Media Editor/DownArrow"), color: theme.rootController.navigationBar.secondaryTextColor)
|
||||
@ -145,6 +172,7 @@ final class MediaPickerTitleView: UIView {
|
||||
|
||||
self.addSubnode(self.contextSourceNode)
|
||||
self.addSubnode(self.titleNode)
|
||||
self.addSubnode(self.subtitleNode)
|
||||
self.addSubnode(self.arrowNode)
|
||||
self.addSubnode(self.buttonNode)
|
||||
self.addSubnode(self.segmentedControlNode)
|
||||
@ -166,10 +194,18 @@ final class MediaPickerTitleView: UIView {
|
||||
self.segmentedControlNode.frame = CGRect(origin: CGPoint(x: floorToScreenPixels((size.width - controlSize.width) / 2.0), y: floorToScreenPixels((size.height - controlSize.height) / 2.0)), size: controlSize)
|
||||
|
||||
let titleSize = self.titleNode.updateLayout(CGSize(width: 210.0, height: 44.0))
|
||||
self.titleNode.frame = CGRect(origin: CGPoint(x: floorToScreenPixels((size.width - titleSize.width) / 2.0), y: floorToScreenPixels((size.height - titleSize.height) / 2.0)), size: titleSize)
|
||||
let subtitleSize = self.subtitleNode.updateLayout(CGSize(width: 210.0, height: 44.0))
|
||||
|
||||
var totalHeight: CGFloat = titleSize.height
|
||||
if subtitleSize.height > 0.0 {
|
||||
totalHeight += subtitleSize.height
|
||||
}
|
||||
|
||||
self.titleNode.frame = CGRect(origin: CGPoint(x: floorToScreenPixels((size.width - titleSize.width) / 2.0), y: floorToScreenPixels((size.height - totalHeight) / 2.0)), size: titleSize)
|
||||
self.subtitleNode.frame = CGRect(origin: CGPoint(x: floorToScreenPixels((size.width - subtitleSize.width) / 2.0), y: floorToScreenPixels((size.height - totalHeight) / 2.0) + subtitleSize.height + 7.0), size: subtitleSize)
|
||||
|
||||
if let arrowSize = self.arrowNode.image?.size {
|
||||
self.arrowNode.frame = CGRect(origin: CGPoint(x: self.titleNode.frame.maxX + 5.0, y: floorToScreenPixels((size.height - arrowSize.height) / 2.0) + 1.0 - UIScreenPixel), size: arrowSize)
|
||||
self.arrowNode.frame = CGRect(origin: CGPoint(x: self.titleNode.frame.maxX + 5.0, y: floorToScreenPixels((size.height - totalHeight) / 2.0) + titleSize.height / 2.0 - arrowSize.height / 2.0 + 1.0 - UIScreenPixel), size: arrowSize)
|
||||
}
|
||||
self.buttonNode.frame = CGRect(origin: .zero, size: size)
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "privacy.pdf",
|
||||
"filename" : "privacy (2).pdf",
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
|
BIN
submodules/TelegramUI/Images.xcassets/Chat/Context Menu/Privacy.imageset/privacy (2).pdf
vendored
Normal file
BIN
submodules/TelegramUI/Images.xcassets/Chat/Context Menu/Privacy.imageset/privacy (2).pdf
vendored
Normal file
Binary file not shown.
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user