mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-11-07 17:30:12 +00:00
Improve iPad authorization layout
This commit is contained in:
parent
12c0603ac4
commit
7ceab4e1a9
@ -8321,7 +8321,8 @@ Sorry for the inconvenience.";
|
|||||||
"AutoremoveSetup.AdditionalGlobalSettingsInfo" = "You can also set your default [self-destruct timer]() for all chats in Settings.";
|
"AutoremoveSetup.AdditionalGlobalSettingsInfo" = "You can also set your default [self-destruct timer]() for all chats in Settings.";
|
||||||
|
|
||||||
"Login.EnterCodeFragmentTitle" = "Enter Code";
|
"Login.EnterCodeFragmentTitle" = "Enter Code";
|
||||||
"Login.EnterCodeFragmentText" = "Check the Anonymous Numbers section on **Fragment** to get the code.";
|
"Login.EnterCodeFragmentText" = "Get the code for **%@** in the Anonymous Numbers section on **Fragment**.";
|
||||||
|
|
||||||
"Login.OpenFragment" = "Open Fragment";
|
"Login.OpenFragment" = "Open Fragment";
|
||||||
|
|
||||||
"Login.AnonymousNumbers" = "Anonymous Numbers";
|
"Login.AnonymousNumbers" = "Anonymous Numbers";
|
||||||
|
|||||||
@ -272,6 +272,9 @@ final class AuthorizationSequenceCodeEntryControllerNode: ASDisplayNode, UITextF
|
|||||||
func containerLayoutUpdated(_ layout: ContainerViewLayout, navigationBarHeight: CGFloat, transition: ContainedViewLayoutTransition) {
|
func containerLayoutUpdated(_ layout: ContainerViewLayout, navigationBarHeight: CGFloat, transition: ContainedViewLayoutTransition) {
|
||||||
self.layoutArguments = (layout, navigationBarHeight)
|
self.layoutArguments = (layout, navigationBarHeight)
|
||||||
|
|
||||||
|
let maximumWidth: CGFloat = min(430.0, layout.size.width)
|
||||||
|
let inset: CGFloat = 24.0
|
||||||
|
|
||||||
var insets = layout.insets(options: [])
|
var insets = layout.insets(options: [])
|
||||||
insets.top = layout.statusBarHeight ?? 20.0
|
insets.top = layout.statusBarHeight ?? 20.0
|
||||||
|
|
||||||
@ -314,14 +317,14 @@ final class AuthorizationSequenceCodeEntryControllerNode: ASDisplayNode, UITextF
|
|||||||
}
|
}
|
||||||
|
|
||||||
let animationSize = CGSize(width: 100.0, height: 100.0)
|
let animationSize = CGSize(width: 100.0, height: 100.0)
|
||||||
let titleSize = self.titleNode.updateLayout(CGSize(width: layout.size.width, height: CGFloat.greatestFiniteMagnitude))
|
let titleSize = self.titleNode.updateLayout(CGSize(width: maximumWidth, height: CGFloat.greatestFiniteMagnitude))
|
||||||
|
|
||||||
let currentOptionSize = self.currentOptionNode.updateLayout(CGSize(width: layout.size.width - 48.0, height: CGFloat.greatestFiniteMagnitude))
|
let currentOptionSize = self.currentOptionNode.updateLayout(CGSize(width: maximumWidth - 48.0, height: CGFloat.greatestFiniteMagnitude))
|
||||||
let currentOptionInfoSize = self.currentOptionInfoNode.measure(CGSize(width: layout.size.width - 48.0, height: CGFloat.greatestFiniteMagnitude))
|
let currentOptionInfoSize = self.currentOptionInfoNode.measure(CGSize(width: maximumWidth - 48.0, height: CGFloat.greatestFiniteMagnitude))
|
||||||
let nextOptionSize = self.nextOptionTitleNode.updateLayout(CGSize(width: layout.size.width, height: CGFloat.greatestFiniteMagnitude))
|
let nextOptionSize = self.nextOptionTitleNode.updateLayout(CGSize(width: maximumWidth, height: CGFloat.greatestFiniteMagnitude))
|
||||||
|
|
||||||
let proceedHeight = self.proceedNode.updateLayout(width: layout.size.width - 48.0, transition: transition)
|
let proceedHeight = self.proceedNode.updateLayout(width: maximumWidth - inset * 2.0, transition: transition)
|
||||||
let proceedSize = CGSize(width: layout.size.width - 48.0, height: proceedHeight)
|
let proceedSize = CGSize(width: maximumWidth - inset * 2.0, height: proceedHeight)
|
||||||
|
|
||||||
let codeLength: Int
|
let codeLength: Int
|
||||||
var codePrefix: String = ""
|
var codePrefix: String = ""
|
||||||
@ -362,7 +365,7 @@ final class AuthorizationSequenceCodeEntryControllerNode: ASDisplayNode, UITextF
|
|||||||
),
|
),
|
||||||
prefix: codePrefix,
|
prefix: codePrefix,
|
||||||
count: codeLength,
|
count: codeLength,
|
||||||
width: layout.size.width - 28.0,
|
width: maximumWidth - 28.0,
|
||||||
compact: layout.size.width <= 320.0
|
compact: layout.size.width <= 320.0
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@ -210,20 +210,24 @@ final class AuthorizationSequenceEmailEntryControllerNode: ASDisplayNode, UIText
|
|||||||
|
|
||||||
self.titleNode.attributedText = NSAttributedString(string: self.mode == .setup ? self.strings.Login_AddEmailTitle : self.strings.Login_EnterNewEmailTitle, font: Font.bold(28.0), textColor: self.theme.list.itemPrimaryTextColor)
|
self.titleNode.attributedText = NSAttributedString(string: self.mode == .setup ? self.strings.Login_AddEmailTitle : self.strings.Login_EnterNewEmailTitle, font: Font.bold(28.0), textColor: self.theme.list.itemPrimaryTextColor)
|
||||||
|
|
||||||
let animationSize = CGSize(width: 100.0, height: 100.0)
|
|
||||||
let titleSize = self.titleNode.measure(CGSize(width: layout.size.width, height: CGFloat.greatestFiniteMagnitude))
|
|
||||||
|
|
||||||
let noticeSize = self.noticeNode.measure(CGSize(width: layout.size.width - 80.0, height: CGFloat.greatestFiniteMagnitude))
|
let inset: CGFloat = 24.0
|
||||||
let proceedHeight = self.proceedNode.updateLayout(width: layout.size.width - 48.0, transition: transition)
|
let maximumWidth: CGFloat = min(430.0, layout.size.width)
|
||||||
let proceedSize = CGSize(width: layout.size.width - 48.0, height: proceedHeight)
|
|
||||||
|
let animationSize = CGSize(width: 100.0, height: 100.0)
|
||||||
|
let titleSize = self.titleNode.measure(CGSize(width: maximumWidth, height: CGFloat.greatestFiniteMagnitude))
|
||||||
|
|
||||||
|
let noticeSize = self.noticeNode.measure(CGSize(width: maximumWidth - 80.0, height: CGFloat.greatestFiniteMagnitude))
|
||||||
|
let proceedHeight = self.proceedNode.updateLayout(width: maximumWidth - 48.0, transition: transition)
|
||||||
|
let proceedSize = CGSize(width: maximumWidth - 48.0, height: proceedHeight)
|
||||||
|
|
||||||
var items: [AuthorizationLayoutItem] = []
|
var items: [AuthorizationLayoutItem] = []
|
||||||
|
|
||||||
items.append(AuthorizationLayoutItem(node: self.titleNode, size: titleSize, spacingBefore: AuthorizationLayoutItemSpacing(weight: titleInset, maxValue: titleInset), spacingAfter: AuthorizationLayoutItemSpacing(weight: 0.0, maxValue: 0.0)))
|
items.append(AuthorizationLayoutItem(node: self.titleNode, size: titleSize, spacingBefore: AuthorizationLayoutItemSpacing(weight: titleInset, maxValue: titleInset), spacingAfter: AuthorizationLayoutItemSpacing(weight: 0.0, maxValue: 0.0)))
|
||||||
items.append(AuthorizationLayoutItem(node: self.noticeNode, size: noticeSize, spacingBefore: AuthorizationLayoutItemSpacing(weight: 18.0, maxValue: 18.0), spacingAfter: AuthorizationLayoutItemSpacing(weight: 0.0, maxValue: 0.0)))
|
items.append(AuthorizationLayoutItem(node: self.noticeNode, size: noticeSize, spacingBefore: AuthorizationLayoutItemSpacing(weight: 18.0, maxValue: 18.0), spacingAfter: AuthorizationLayoutItemSpacing(weight: 0.0, maxValue: 0.0)))
|
||||||
|
|
||||||
items.append(AuthorizationLayoutItem(node: self.codeField, size: CGSize(width: layout.size.width - 88.0, height: 44.0), spacingBefore: AuthorizationLayoutItemSpacing(weight: 18.0, maxValue: 30.0), spacingAfter: AuthorizationLayoutItemSpacing(weight: 0.0, maxValue: 0.0)))
|
items.append(AuthorizationLayoutItem(node: self.codeField, size: CGSize(width: maximumWidth - 88.0, height: 44.0), spacingBefore: AuthorizationLayoutItemSpacing(weight: 18.0, maxValue: 30.0), spacingAfter: AuthorizationLayoutItemSpacing(weight: 0.0, maxValue: 0.0)))
|
||||||
items.append(AuthorizationLayoutItem(node: self.codeSeparatorNode, size: CGSize(width: layout.size.width - 48.0, height: UIScreenPixel), spacingBefore: AuthorizationLayoutItemSpacing(weight: 0.0, maxValue: 0.0), spacingAfter: AuthorizationLayoutItemSpacing(weight: 0.0, maxValue: 0.0)))
|
items.append(AuthorizationLayoutItem(node: self.codeSeparatorNode, size: CGSize(width: maximumWidth - 48.0, height: UIScreenPixel), spacingBefore: AuthorizationLayoutItemSpacing(weight: 0.0, maxValue: 0.0), spacingAfter: AuthorizationLayoutItemSpacing(weight: 0.0, maxValue: 0.0)))
|
||||||
|
|
||||||
if layout.size.width > 320.0 {
|
if layout.size.width > 320.0 {
|
||||||
items.insert(AuthorizationLayoutItem(node: self.animationNode, size: animationSize, spacingBefore: AuthorizationLayoutItemSpacing(weight: 10.0, maxValue: 10.0), spacingAfter: AuthorizationLayoutItemSpacing(weight: 0.0, maxValue: 0.0)), at: 0)
|
items.insert(AuthorizationLayoutItem(node: self.animationNode, size: animationSize, spacingBefore: AuthorizationLayoutItemSpacing(weight: 10.0, maxValue: 10.0), spacingAfter: AuthorizationLayoutItemSpacing(weight: 0.0, maxValue: 0.0)), at: 0)
|
||||||
@ -237,11 +241,10 @@ final class AuthorizationSequenceEmailEntryControllerNode: ASDisplayNode, UIText
|
|||||||
self.animationNode.isHidden = true
|
self.animationNode.isHidden = true
|
||||||
}
|
}
|
||||||
|
|
||||||
let inset: CGFloat = 24.0
|
|
||||||
let buttonFrame = CGRect(origin: CGPoint(x: floorToScreenPixels((layout.size.width - proceedSize.width) / 2.0), y: layout.size.height - insets.bottom - proceedSize.height - inset), size: proceedSize)
|
let buttonFrame = CGRect(origin: CGPoint(x: floorToScreenPixels((layout.size.width - proceedSize.width) / 2.0), y: layout.size.height - insets.bottom - proceedSize.height - inset), size: proceedSize)
|
||||||
transition.updateFrame(node: self.proceedNode, frame: buttonFrame)
|
transition.updateFrame(node: self.proceedNode, frame: buttonFrame)
|
||||||
|
|
||||||
let dividerSize = self.dividerNode.updateLayout(width: layout.size.width)
|
let dividerSize = self.dividerNode.updateLayout(width: maximumWidth)
|
||||||
transition.updateFrame(node: self.dividerNode, frame: CGRect(origin: CGPoint(x: floorToScreenPixels((layout.size.width - dividerSize.width) / 2.0), y: buttonFrame.minY - dividerSize.height), size: dividerSize))
|
transition.updateFrame(node: self.dividerNode, frame: CGRect(origin: CGPoint(x: floorToScreenPixels((layout.size.width - dividerSize.width) / 2.0), y: buttonFrame.minY - dividerSize.height), size: dividerSize))
|
||||||
|
|
||||||
if let _ = self.signInWithAppleButton, self.appleSignInAllowed {
|
if let _ = self.signInWithAppleButton, self.appleSignInAllowed {
|
||||||
|
|||||||
@ -149,6 +149,9 @@ final class AuthorizationSequencePasswordEntryControllerNode: ASDisplayNode, UIT
|
|||||||
func containerLayoutUpdated(_ layout: ContainerViewLayout, navigationBarHeight: CGFloat, transition: ContainedViewLayoutTransition) {
|
func containerLayoutUpdated(_ layout: ContainerViewLayout, navigationBarHeight: CGFloat, transition: ContainedViewLayoutTransition) {
|
||||||
self.layoutArguments = (layout, navigationBarHeight)
|
self.layoutArguments = (layout, navigationBarHeight)
|
||||||
|
|
||||||
|
let inset: CGFloat = 24.0
|
||||||
|
let maximumWidth: CGFloat = min(430.0, layout.size.width)
|
||||||
|
|
||||||
var insets = layout.insets(options: [])
|
var insets = layout.insets(options: [])
|
||||||
insets.top = layout.statusBarHeight ?? 20.0
|
insets.top = layout.statusBarHeight ?? 20.0
|
||||||
if let inputHeight = layout.inputHeight, !inputHeight.isZero {
|
if let inputHeight = layout.inputHeight, !inputHeight.isZero {
|
||||||
@ -160,23 +163,21 @@ final class AuthorizationSequencePasswordEntryControllerNode: ASDisplayNode, UIT
|
|||||||
|
|
||||||
self.titleNode.attributedText = NSAttributedString(string: self.strings.LoginPassword_Title, font: Font.semibold(28.0), textColor: self.theme.list.itemPrimaryTextColor)
|
self.titleNode.attributedText = NSAttributedString(string: self.strings.LoginPassword_Title, font: Font.semibold(28.0), textColor: self.theme.list.itemPrimaryTextColor)
|
||||||
|
|
||||||
let inset: CGFloat = 24.0
|
|
||||||
|
|
||||||
let animationSize = CGSize(width: 100.0, height: 100.0)
|
let animationSize = CGSize(width: 100.0, height: 100.0)
|
||||||
let titleSize = self.titleNode.measure(CGSize(width: layout.size.width, height: CGFloat.greatestFiniteMagnitude))
|
let titleSize = self.titleNode.measure(CGSize(width: maximumWidth, height: CGFloat.greatestFiniteMagnitude))
|
||||||
|
|
||||||
let noticeSize = self.noticeNode.measure(CGSize(width: layout.size.width - 28.0, height: CGFloat.greatestFiniteMagnitude))
|
let noticeSize = self.noticeNode.measure(CGSize(width: maximumWidth - 28.0, height: CGFloat.greatestFiniteMagnitude))
|
||||||
let forgotSize = self.forgotNode.measure(CGSize(width: layout.size.width, height: CGFloat.greatestFiniteMagnitude))
|
let forgotSize = self.forgotNode.measure(CGSize(width: maximumWidth, height: CGFloat.greatestFiniteMagnitude))
|
||||||
let resetSize = self.resetNode.measure(CGSize(width: layout.size.width, height: CGFloat.greatestFiniteMagnitude))
|
let resetSize = self.resetNode.measure(CGSize(width: maximumWidth, height: CGFloat.greatestFiniteMagnitude))
|
||||||
let proceedHeight = self.proceedNode.updateLayout(width: layout.size.width - inset * 2.0, transition: transition)
|
let proceedHeight = self.proceedNode.updateLayout(width: maximumWidth - inset * 2.0, transition: transition)
|
||||||
let proceedSize = CGSize(width: layout.size.width - inset * 2.0, height: proceedHeight)
|
let proceedSize = CGSize(width: maximumWidth - inset * 2.0, height: proceedHeight)
|
||||||
|
|
||||||
var items: [AuthorizationLayoutItem] = []
|
var items: [AuthorizationLayoutItem] = []
|
||||||
items.append(AuthorizationLayoutItem(node: self.titleNode, size: titleSize, spacingBefore: AuthorizationLayoutItemSpacing(weight: titleInset, maxValue: titleInset), spacingAfter: AuthorizationLayoutItemSpacing(weight: 0.0, maxValue: 0.0)))
|
items.append(AuthorizationLayoutItem(node: self.titleNode, size: titleSize, spacingBefore: AuthorizationLayoutItemSpacing(weight: titleInset, maxValue: titleInset), spacingAfter: AuthorizationLayoutItemSpacing(weight: 0.0, maxValue: 0.0)))
|
||||||
items.append(AuthorizationLayoutItem(node: self.noticeNode, size: noticeSize, spacingBefore: AuthorizationLayoutItemSpacing(weight: 18.0, maxValue: 18.0), spacingAfter: AuthorizationLayoutItemSpacing(weight: 0.0, maxValue: 0.0)))
|
items.append(AuthorizationLayoutItem(node: self.noticeNode, size: noticeSize, spacingBefore: AuthorizationLayoutItemSpacing(weight: 18.0, maxValue: 18.0), spacingAfter: AuthorizationLayoutItemSpacing(weight: 0.0, maxValue: 0.0)))
|
||||||
|
|
||||||
items.append(AuthorizationLayoutItem(node: self.codeField, size: CGSize(width: layout.size.width - 80.0, height: 44.0), spacingBefore: AuthorizationLayoutItemSpacing(weight: 32.0, maxValue: 60.0), spacingAfter: AuthorizationLayoutItemSpacing(weight: 0.0, maxValue: 0.0)))
|
items.append(AuthorizationLayoutItem(node: self.codeField, size: CGSize(width: maximumWidth - 80.0, height: 44.0), spacingBefore: AuthorizationLayoutItemSpacing(weight: 32.0, maxValue: 60.0), spacingAfter: AuthorizationLayoutItemSpacing(weight: 0.0, maxValue: 0.0)))
|
||||||
items.append(AuthorizationLayoutItem(node: self.codeSeparatorNode, size: CGSize(width: layout.size.width - 48.0, height: UIScreenPixel), spacingBefore: AuthorizationLayoutItemSpacing(weight: 0.0, maxValue: 0.0), spacingAfter: AuthorizationLayoutItemSpacing(weight: 0.0, maxValue: 0.0)))
|
items.append(AuthorizationLayoutItem(node: self.codeSeparatorNode, size: CGSize(width: maximumWidth - 48.0, height: UIScreenPixel), spacingBefore: AuthorizationLayoutItemSpacing(weight: 0.0, maxValue: 0.0), spacingAfter: AuthorizationLayoutItemSpacing(weight: 0.0, maxValue: 0.0)))
|
||||||
|
|
||||||
items.append(AuthorizationLayoutItem(node: self.forgotNode, size: forgotSize, spacingBefore: AuthorizationLayoutItemSpacing(weight: 48.0, maxValue: 100.0), spacingAfter: AuthorizationLayoutItemSpacing(weight: 0.0, maxValue: 0.0)))
|
items.append(AuthorizationLayoutItem(node: self.forgotNode, size: forgotSize, spacingBefore: AuthorizationLayoutItemSpacing(weight: 48.0, maxValue: 100.0), spacingAfter: AuthorizationLayoutItemSpacing(weight: 0.0, maxValue: 0.0)))
|
||||||
|
|
||||||
|
|||||||
@ -532,17 +532,18 @@ final class AuthorizationSequencePhoneEntryControllerNode: ASDisplayNode {
|
|||||||
self.titleNode.attributedText = NSAttributedString(string: strings.Login_PhoneTitle, font: Font.bold(28.0), textColor: self.theme.list.itemPrimaryTextColor)
|
self.titleNode.attributedText = NSAttributedString(string: strings.Login_PhoneTitle, font: Font.bold(28.0), textColor: self.theme.list.itemPrimaryTextColor)
|
||||||
|
|
||||||
let inset: CGFloat = 24.0
|
let inset: CGFloat = 24.0
|
||||||
|
let maximumWidth: CGFloat = min(430.0, layout.size.width)
|
||||||
|
|
||||||
let animationSize = CGSize(width: 100.0, height: 100.0)
|
let animationSize = CGSize(width: 100.0, height: 100.0)
|
||||||
let titleSize = self.titleNode.measure(CGSize(width: layout.size.width, height: CGFloat.greatestFiniteMagnitude))
|
let titleSize = self.titleNode.measure(CGSize(width: maximumWidth, height: CGFloat.greatestFiniteMagnitude))
|
||||||
let noticeSize = self.noticeNode.measure(CGSize(width: min(274.0, layout.size.width - 28.0), height: CGFloat.greatestFiniteMagnitude))
|
let noticeSize = self.noticeNode.measure(CGSize(width: min(274.0, maximumWidth - 28.0), height: CGFloat.greatestFiniteMagnitude))
|
||||||
let proceedHeight = self.proceedNode.updateLayout(width: layout.size.width - inset * 2.0, transition: transition)
|
let proceedHeight = self.proceedNode.updateLayout(width: maximumWidth - inset * 2.0, transition: transition)
|
||||||
let proceedSize = CGSize(width: layout.size.width - inset * 2.0, height: proceedHeight)
|
let proceedSize = CGSize(width: maximumWidth - inset * 2.0, height: proceedHeight)
|
||||||
|
|
||||||
var items: [AuthorizationLayoutItem] = [
|
var items: [AuthorizationLayoutItem] = [
|
||||||
AuthorizationLayoutItem(node: self.titleNode, size: titleSize, spacingBefore: AuthorizationLayoutItemSpacing(weight: titleInset, maxValue: titleInset), spacingAfter: AuthorizationLayoutItemSpacing(weight: 0.0, maxValue: 0.0)),
|
AuthorizationLayoutItem(node: self.titleNode, size: titleSize, spacingBefore: AuthorizationLayoutItemSpacing(weight: titleInset, maxValue: titleInset), spacingAfter: AuthorizationLayoutItemSpacing(weight: 0.0, maxValue: 0.0)),
|
||||||
AuthorizationLayoutItem(node: self.noticeNode, size: noticeSize, spacingBefore: AuthorizationLayoutItemSpacing(weight: 18.0, maxValue: 18.0), spacingAfter: AuthorizationLayoutItemSpacing(weight: 0.0, maxValue: 0.0)),
|
AuthorizationLayoutItem(node: self.noticeNode, size: noticeSize, spacingBefore: AuthorizationLayoutItemSpacing(weight: 18.0, maxValue: 18.0), spacingAfter: AuthorizationLayoutItemSpacing(weight: 0.0, maxValue: 0.0)),
|
||||||
AuthorizationLayoutItem(node: self.phoneAndCountryNode, size: CGSize(width: layout.size.width, height: 115.0), spacingBefore: AuthorizationLayoutItemSpacing(weight: 30.0, maxValue: 30.0), spacingAfter: AuthorizationLayoutItemSpacing(weight: 0.0, maxValue: 0.0)),
|
AuthorizationLayoutItem(node: self.phoneAndCountryNode, size: CGSize(width: maximumWidth, height: 115.0), spacingBefore: AuthorizationLayoutItemSpacing(weight: 30.0, maxValue: 30.0), spacingAfter: AuthorizationLayoutItemSpacing(weight: 0.0, maxValue: 0.0)),
|
||||||
]
|
]
|
||||||
|
|
||||||
if layout.size.width > 320.0 {
|
if layout.size.width > 320.0 {
|
||||||
@ -557,7 +558,7 @@ final class AuthorizationSequencePhoneEntryControllerNode: ASDisplayNode {
|
|||||||
self.managedAnimationNode.isHidden = true
|
self.managedAnimationNode.isHidden = true
|
||||||
}
|
}
|
||||||
|
|
||||||
let contactSyncSize = self.contactSyncNode.updateLayout(width: layout.size.width)
|
let contactSyncSize = self.contactSyncNode.updateLayout(width: maximumWidth)
|
||||||
if self.hasOtherAccounts {
|
if self.hasOtherAccounts {
|
||||||
self.contactSyncNode.isHidden = false
|
self.contactSyncNode.isHidden = false
|
||||||
items.append(AuthorizationLayoutItem(node: self.contactSyncNode, size: contactSyncSize, spacingBefore: AuthorizationLayoutItemSpacing(weight: 14.0, maxValue: 14.0), spacingAfter: AuthorizationLayoutItemSpacing(weight: 0.0, maxValue: 0.0)))
|
items.append(AuthorizationLayoutItem(node: self.contactSyncNode, size: contactSyncSize, spacingBefore: AuthorizationLayoutItemSpacing(weight: 14.0, maxValue: 14.0), spacingAfter: AuthorizationLayoutItemSpacing(weight: 0.0, maxValue: 0.0)))
|
||||||
@ -871,7 +872,8 @@ final class PhoneConfirmationController: ViewController {
|
|||||||
self.phoneTargetNode.layer.animatePosition(from: self.phoneSourceNode.position, to: self.phoneTargetNode.position, duration: duration)
|
self.phoneTargetNode.layer.animatePosition(from: self.phoneSourceNode.position, to: self.phoneTargetNode.position, duration: duration)
|
||||||
|
|
||||||
self.backgroundNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.1)
|
self.backgroundNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.1)
|
||||||
self.backgroundNode.layer.animateFrame(from: CGRect(origin: CGPoint(x: 14.0, y: codeFrame.minY), size: CGSize(width: self.backgroundNode.frame.width - 12.0, height: buttonFrame.maxY + 18.0 - codeFrame.minY)), to: self.backgroundNode.frame, duration: duration)
|
|
||||||
|
self.backgroundNode.layer.animateFrame(from: CGRect(origin: CGPoint(x: self.backgroundNode.frame.origin.x + 6.0, y: codeFrame.minY), size: CGSize(width: self.backgroundNode.frame.width - 12.0, height: buttonFrame.maxY + 18.0 - codeFrame.minY)), to: self.backgroundNode.frame, duration: duration)
|
||||||
|
|
||||||
self.textNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: duration)
|
self.textNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: duration)
|
||||||
self.textNode.layer.animateScale(from: 0.5, to: 1.0, duration: duration)
|
self.textNode.layer.animateScale(from: 0.5, to: 1.0, duration: duration)
|
||||||
@ -927,7 +929,7 @@ final class PhoneConfirmationController: ViewController {
|
|||||||
self.phoneTargetNode.layer.animatePosition(from: self.phoneTargetNode.position, to: self.phoneSourceNode.position, duration: duration)
|
self.phoneTargetNode.layer.animatePosition(from: self.phoneTargetNode.position, to: self.phoneSourceNode.position, duration: duration)
|
||||||
|
|
||||||
self.backgroundNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, delay: 0.1, removeOnCompletion: false)
|
self.backgroundNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, delay: 0.1, removeOnCompletion: false)
|
||||||
self.backgroundNode.layer.animateFrame(from: self.backgroundNode.frame, to: CGRect(origin: CGPoint(x: 14.0, y: codeFrame.minY), size: CGSize(width: self.backgroundNode.frame.width - 12.0, height: buttonFrame.maxY + 18.0 - codeFrame.minY)), duration: duration)
|
self.backgroundNode.layer.animateFrame(from: self.backgroundNode.frame, to: CGRect(origin: CGPoint(x: self.backgroundNode.frame.origin.x + 6.0, y: codeFrame.minY), size: CGSize(width: self.backgroundNode.frame.width - 12.0, height: buttonFrame.maxY + 18.0 - codeFrame.minY)), duration: duration)
|
||||||
|
|
||||||
self.textNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, removeOnCompletion: false)
|
self.textNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, removeOnCompletion: false)
|
||||||
self.textNode.layer.animateScale(from: 1.0, to: 0.5, duration: duration, removeOnCompletion: false)
|
self.textNode.layer.animateScale(from: 1.0, to: 0.5, duration: duration, removeOnCompletion: false)
|
||||||
@ -947,10 +949,20 @@ final class PhoneConfirmationController: ViewController {
|
|||||||
let sideInset: CGFloat = 8.0
|
let sideInset: CGFloat = 8.0
|
||||||
let innerInset: CGFloat = 18.0
|
let innerInset: CGFloat = 18.0
|
||||||
|
|
||||||
|
let maximumWidth: CGFloat = min(430.0, layout.size.width)
|
||||||
|
|
||||||
transition.updateFrame(node: self.dimNode, frame: CGRect(origin: CGPoint(x: -layout.size.width, y: 0.0), size: CGSize(width: layout.size.width * 3.0, height: layout.size.height)))
|
transition.updateFrame(node: self.dimNode, frame: CGRect(origin: CGPoint(x: -layout.size.width, y: 0.0), size: CGSize(width: layout.size.width * 3.0, height: layout.size.height)))
|
||||||
|
|
||||||
let backgroundSize = CGSize(width: layout.size.width - sideInset * 2.0, height: 243.0)
|
let backgroundSize = CGSize(width: maximumWidth - sideInset * 2.0, height: 243.0)
|
||||||
let backgroundFrame = CGRect(origin: CGPoint(x: floorToScreenPixels((layout.size.width - backgroundSize.width) / 2.0), y: layout.size.height - backgroundSize.height - 260.0), size: backgroundSize)
|
|
||||||
|
let originY: CGFloat
|
||||||
|
if case .regular = layout.metrics.widthClass {
|
||||||
|
originY = floorToScreenPixels((layout.size.height - backgroundSize.height) / 2.0)
|
||||||
|
} else {
|
||||||
|
originY = layout.size.height - backgroundSize.height - 260.0
|
||||||
|
}
|
||||||
|
|
||||||
|
let backgroundFrame = CGRect(origin: CGPoint(x: floorToScreenPixels((layout.size.width - backgroundSize.width) / 2.0), y: originY), size: backgroundSize)
|
||||||
transition.updateFrame(node: self.backgroundNode, frame: backgroundFrame)
|
transition.updateFrame(node: self.backgroundNode, frame: backgroundFrame)
|
||||||
|
|
||||||
let maxWidth = layout.size.width - 20.0
|
let maxWidth = layout.size.width - 20.0
|
||||||
|
|||||||
@ -211,6 +211,8 @@ final class AuthorizationSequenceSignUpControllerNode: ASDisplayNode, UITextFiel
|
|||||||
func containerLayoutUpdated(_ layout: ContainerViewLayout, navigationBarHeight: CGFloat, transition: ContainedViewLayoutTransition) {
|
func containerLayoutUpdated(_ layout: ContainerViewLayout, navigationBarHeight: CGFloat, transition: ContainedViewLayoutTransition) {
|
||||||
self.layoutArguments = (layout, navigationBarHeight)
|
self.layoutArguments = (layout, navigationBarHeight)
|
||||||
|
|
||||||
|
let maximumWidth: CGFloat = min(430.0, layout.size.width)
|
||||||
|
|
||||||
var insets = layout.insets(options: [.statusBar])
|
var insets = layout.insets(options: [.statusBar])
|
||||||
if let inputHeight = layout.inputHeight {
|
if let inputHeight = layout.inputHeight {
|
||||||
insets.bottom = max(inputHeight, layout.standardInputHeight)
|
insets.bottom = max(inputHeight, layout.standardInputHeight)
|
||||||
@ -219,15 +221,15 @@ final class AuthorizationSequenceSignUpControllerNode: ASDisplayNode, UITextFiel
|
|||||||
let additionalBottomInset: CGFloat = layout.size.width > 320.0 ? 90.0 : 10.0
|
let additionalBottomInset: CGFloat = layout.size.width > 320.0 ? 90.0 : 10.0
|
||||||
|
|
||||||
self.titleNode.attributedText = NSAttributedString(string: self.strings.Login_InfoTitle, font: Font.semibold(28.0), textColor: self.theme.list.itemPrimaryTextColor)
|
self.titleNode.attributedText = NSAttributedString(string: self.strings.Login_InfoTitle, font: Font.semibold(28.0), textColor: self.theme.list.itemPrimaryTextColor)
|
||||||
let titleSize = self.titleNode.measure(CGSize(width: layout.size.width, height: CGFloat.greatestFiniteMagnitude))
|
let titleSize = self.titleNode.measure(CGSize(width: maximumWidth, height: CGFloat.greatestFiniteMagnitude))
|
||||||
|
|
||||||
let fieldHeight: CGFloat = 54.0
|
let fieldHeight: CGFloat = 54.0
|
||||||
|
|
||||||
let sideInset: CGFloat = 24.0
|
let sideInset: CGFloat = 24.0
|
||||||
let innerInset: CGFloat = 16.0
|
let innerInset: CGFloat = 16.0
|
||||||
|
|
||||||
let noticeSize = self.currentOptionNode.measure(CGSize(width: layout.size.width - 28.0, height: CGFloat.greatestFiniteMagnitude))
|
let noticeSize = self.currentOptionNode.measure(CGSize(width: maximumWidth - 28.0, height: CGFloat.greatestFiniteMagnitude))
|
||||||
let termsSize = self.termsNode.updateLayout(CGSize(width: layout.size.width - 28.0, height: CGFloat.greatestFiniteMagnitude))
|
let termsSize = self.termsNode.updateLayout(CGSize(width: maximumWidth - 28.0, height: CGFloat.greatestFiniteMagnitude))
|
||||||
|
|
||||||
let avatarSize: CGSize = CGSize(width: 110.0, height: 110.0)
|
let avatarSize: CGSize = CGSize(width: 110.0, height: 110.0)
|
||||||
var items: [AuthorizationLayoutItem] = []
|
var items: [AuthorizationLayoutItem] = []
|
||||||
@ -249,8 +251,8 @@ final class AuthorizationSequenceSignUpControllerNode: ASDisplayNode, UITextFiel
|
|||||||
self.proceedNode.isHidden = false
|
self.proceedNode.isHidden = false
|
||||||
|
|
||||||
let inset: CGFloat = 24.0
|
let inset: CGFloat = 24.0
|
||||||
let proceedHeight = self.proceedNode.updateLayout(width: layout.size.width - 48.0, transition: transition)
|
let proceedHeight = self.proceedNode.updateLayout(width: maximumWidth - 48.0, transition: transition)
|
||||||
let proceedSize = CGSize(width: layout.size.width - 48.0, height: proceedHeight)
|
let proceedSize = CGSize(width: maximumWidth - 48.0, height: proceedHeight)
|
||||||
transition.updateFrame(node: self.proceedNode, frame: CGRect(origin: CGPoint(x: floorToScreenPixels((layout.size.width - proceedSize.width) / 2.0), y: layout.size.height - insets.bottom - proceedSize.height - inset), size: proceedSize))
|
transition.updateFrame(node: self.proceedNode, frame: CGRect(origin: CGPoint(x: floorToScreenPixels((layout.size.width - proceedSize.width) / 2.0), y: layout.size.height - insets.bottom - proceedSize.height - inset), size: proceedSize))
|
||||||
} else {
|
} else {
|
||||||
insets.top = navigationBarHeight
|
insets.top = navigationBarHeight
|
||||||
|
|||||||
@ -42,7 +42,7 @@ public func authorizationCurrentOptionText(_ type: SentAuthorizationCodeType, ph
|
|||||||
|
|
||||||
return mutableString
|
return mutableString
|
||||||
case .fragment:
|
case .fragment:
|
||||||
return parseMarkdownIntoAttributedString(strings.Login_EnterCodeFragmentText, attributes: attributes, textAlignment: .center)
|
return parseMarkdownIntoAttributedString(strings.Login_EnterCodeFragmentText(phoneNumber).string, attributes: attributes, textAlignment: .center)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -509,7 +509,7 @@ typedef enum {
|
|||||||
_pageControl.frame = CGRectMake(0, pageControlY, self.view.bounds.size.width, 7);
|
_pageControl.frame = CGRectMake(0, pageControlY, self.view.bounds.size.width, 7);
|
||||||
_glkView.frame = CGRectChangedOriginY(_glkView.frame, glViewY - statusBarHeight);
|
_glkView.frame = CGRectChangedOriginY(_glkView.frame, glViewY - statusBarHeight);
|
||||||
|
|
||||||
CGFloat startButtonWidth = self.view.bounds.size.width - 48.0f;
|
CGFloat startButtonWidth = MIN(430.0 - 48.0, self.view.bounds.size.width - 48.0f);
|
||||||
UIView *startButton = self.createStartButton(startButtonWidth);
|
UIView *startButton = self.createStartButton(startButtonWidth);
|
||||||
if (startButton.superview == nil) {
|
if (startButton.superview == nil) {
|
||||||
[self.view addSubview:startButton];
|
[self.view addSubview:startButton];
|
||||||
|
|||||||
@ -233,3 +233,4 @@
|
|||||||
27;ZA;XX XXX XXXX;South Africa
|
27;ZA;XX XXX XXXX;South Africa
|
||||||
260;ZM;XX XXX XXXX;Zambia
|
260;ZM;XX XXX XXXX;Zambia
|
||||||
263;ZW;XX XXX XXXX;Zimbabwe
|
263;ZW;XX XXX XXXX;Zimbabwe
|
||||||
|
888;FT;XXXX XXXX;Fragment
|
||||||
|
|||||||
@ -161,7 +161,7 @@ final class ChatLoadingPlaceholderNode: ASDisplayNode {
|
|||||||
let bubbleBorderImage = messageBubbleImage(maxCornerRadius: bubbleCorners.mainRadius, minCornerRadius: bubbleCorners.auxiliaryRadius, incoming: true, fillColor: .clear, strokeColor: .red, neighbors: .none, theme: theme.chat, wallpaper: .color(0xffffff), knockout: true, mask: true, extendedEdges: true, onlyOutline: true)
|
let bubbleBorderImage = messageBubbleImage(maxCornerRadius: bubbleCorners.mainRadius, minCornerRadius: bubbleCorners.auxiliaryRadius, incoming: true, fillColor: .clear, strokeColor: .red, neighbors: .none, theme: theme.chat, wallpaper: .color(0xffffff), knockout: true, mask: true, extendedEdges: true, onlyOutline: true)
|
||||||
|
|
||||||
var messageContainers: [ChatLoadingPlaceholderMessageContainer] = []
|
var messageContainers: [ChatLoadingPlaceholderMessageContainer] = []
|
||||||
for _ in 0 ..< 11 {
|
for _ in 0 ..< 14 {
|
||||||
let container = ChatLoadingPlaceholderMessageContainer(bubbleImage: bubbleImage, bubbleBorderImage: bubbleBorderImage)
|
let container = ChatLoadingPlaceholderMessageContainer(bubbleImage: bubbleImage, bubbleBorderImage: bubbleBorderImage)
|
||||||
container.setup(maskNode: self.maskNode, borderMaskNode: self.borderMaskNode)
|
container.setup(maskNode: self.maskNode, borderMaskNode: self.borderMaskNode)
|
||||||
messageContainers.append(container)
|
messageContainers.append(container)
|
||||||
@ -436,6 +436,9 @@ final class ChatLoadingPlaceholderNode: ASDisplayNode {
|
|||||||
CGSize(width: floorToScreenPixels(0.58 * size.width), height: tallHeight),
|
CGSize(width: floorToScreenPixels(0.58 * size.width), height: tallHeight),
|
||||||
CGSize(width: floorToScreenPixels(0.69 * size.width), height: tallHeight),
|
CGSize(width: floorToScreenPixels(0.69 * size.width), height: tallHeight),
|
||||||
CGSize(width: floorToScreenPixels(0.58 * size.width), height: tallHeight),
|
CGSize(width: floorToScreenPixels(0.58 * size.width), height: tallHeight),
|
||||||
|
CGSize(width: floorToScreenPixels(0.36 * size.width), height: shortHeight),
|
||||||
|
CGSize(width: floorToScreenPixels(0.47 * size.width), height: tallHeight),
|
||||||
|
CGSize(width: floorToScreenPixels(0.58 * size.width), height: tallHeight)
|
||||||
].map {
|
].map {
|
||||||
if self.chatType == .channel {
|
if self.chatType == .channel {
|
||||||
return CGSize(width: floor($0.width * 1.3), height: floor($0.height * 1.8))
|
return CGSize(width: floor($0.width * 1.3), height: floor($0.height * 1.8))
|
||||||
@ -448,7 +451,7 @@ final class ChatLoadingPlaceholderNode: ASDisplayNode {
|
|||||||
var index = 0
|
var index = 0
|
||||||
|
|
||||||
for messageContainer in self.messageContainers {
|
for messageContainer in self.messageContainers {
|
||||||
let messageSize = dimensions[index % 11]
|
let messageSize = dimensions[index % 14]
|
||||||
messageContainer.update(size: bounds.size, hasAvatar: self.chatType != .channel, rect: CGRect(origin: CGPoint(x: 0.0, y: bounds.size.height - insets.bottom - offset - messageSize.height), size: messageSize), transition: transition)
|
messageContainer.update(size: bounds.size, hasAvatar: self.chatType != .channel, rect: CGRect(origin: CGPoint(x: 0.0, y: bounds.size.height - insets.bottom - offset - messageSize.height), size: messageSize), transition: transition)
|
||||||
offset += messageSize.height
|
offset += messageSize.height
|
||||||
index += 1
|
index += 1
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user