Fix layout on small screens
This commit is contained in:
parent
9a077479c2
commit
7882b8608c
|
@ -578,6 +578,7 @@
|
|||
B85357C323A1BD1200AAF6CD /* SeedVCV2.swift in Sources */ = {isa = PBXBuildFile; fileRef = B85357C223A1BD1200AAF6CD /* SeedVCV2.swift */; };
|
||||
B85357C523A1F13800AAF6CD /* LinkDeviceVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B85357C423A1F13800AAF6CD /* LinkDeviceVC.swift */; };
|
||||
B85357C723A1FB5100AAF6CD /* LinkDeviceVCDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B85357C623A1FB5100AAF6CD /* LinkDeviceVCDelegate.swift */; };
|
||||
B8544E3123D16CA500299F14 /* DeviceUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8544E3023D16CA500299F14 /* DeviceUtilities.swift */; };
|
||||
B86BD08423399ACF000F5AE3 /* Modal.swift in Sources */ = {isa = PBXBuildFile; fileRef = B86BD08323399ACF000F5AE3 /* Modal.swift */; };
|
||||
B86BD08623399CEF000F5AE3 /* SeedModal.swift in Sources */ = {isa = PBXBuildFile; fileRef = B86BD08523399CEF000F5AE3 /* SeedModal.swift */; };
|
||||
B885D5F4233491AB00EE0D8E /* DeviceLinkingModal.swift in Sources */ = {isa = PBXBuildFile; fileRef = B885D5F3233491AB00EE0D8E /* DeviceLinkingModal.swift */; };
|
||||
|
@ -1417,6 +1418,7 @@
|
|||
B85357C223A1BD1200AAF6CD /* SeedVCV2.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SeedVCV2.swift; sourceTree = "<group>"; };
|
||||
B85357C423A1F13800AAF6CD /* LinkDeviceVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LinkDeviceVC.swift; sourceTree = "<group>"; };
|
||||
B85357C623A1FB5100AAF6CD /* LinkDeviceVCDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LinkDeviceVCDelegate.swift; sourceTree = "<group>"; };
|
||||
B8544E3023D16CA500299F14 /* DeviceUtilities.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceUtilities.swift; sourceTree = "<group>"; };
|
||||
B86BD08323399ACF000F5AE3 /* Modal.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Modal.swift; sourceTree = "<group>"; };
|
||||
B86BD08523399CEF000F5AE3 /* SeedModal.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SeedModal.swift; sourceTree = "<group>"; };
|
||||
B885D5F3233491AB00EE0D8E /* DeviceLinkingModal.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceLinkingModal.swift; sourceTree = "<group>"; };
|
||||
|
@ -2776,6 +2778,7 @@
|
|||
B8CCF63C239757DB0091D419 /* Utilities */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B8544E3023D16CA500299F14 /* DeviceUtilities.swift */,
|
||||
B84664F4235022F30083A1CD /* MentionUtilities.swift */,
|
||||
B885D5F52334A32100EE0D8E /* UIView+Constraints.swift */,
|
||||
B886B4A82398BA1500211ABE /* QRCode.swift */,
|
||||
|
@ -3947,6 +3950,7 @@
|
|||
34B3F8801E8DF1700035BE1A /* InviteFlow.swift in Sources */,
|
||||
B85357C523A1F13800AAF6CD /* LinkDeviceVC.swift in Sources */,
|
||||
457C87B82032645C008D52D6 /* DebugUINotifications.swift in Sources */,
|
||||
B8544E3123D16CA500299F14 /* DeviceUtilities.swift in Sources */,
|
||||
4C21D5D8223AC60F00EF8A77 /* PhotoCapture.swift in Sources */,
|
||||
4C13C9F620E57BA30089A98B /* ColorPickerViewController.swift in Sources */,
|
||||
B8162F0522892C5F00D46544 /* FriendRequestViewDelegate.swift in Sources */,
|
||||
|
|
|
@ -36,7 +36,7 @@ final class TextField : UITextField {
|
|||
|
||||
override func textRect(forBounds bounds: CGRect) -> CGRect {
|
||||
if usesDefaultHeight {
|
||||
return bounds.insetBy(dx: Values.largeSpacing, dy: Values.largeSpacing)
|
||||
return bounds.insetBy(dx: isSmallScreen ? Values.mediumSpacing : Values.largeSpacing, dy: isSmallScreen ? Values.smallSpacing : Values.largeSpacing)
|
||||
} else {
|
||||
return bounds.insetBy(dx: Values.mediumSpacing, dy: Values.smallSpacing)
|
||||
}
|
||||
|
@ -44,7 +44,7 @@ final class TextField : UITextField {
|
|||
|
||||
override func editingRect(forBounds bounds: CGRect) -> CGRect {
|
||||
if usesDefaultHeight {
|
||||
return bounds.insetBy(dx: Values.largeSpacing, dy: Values.largeSpacing)
|
||||
return bounds.insetBy(dx: isSmallScreen ? Values.mediumSpacing : Values.largeSpacing, dy: isSmallScreen ? Values.smallSpacing : Values.largeSpacing)
|
||||
} else {
|
||||
return bounds.insetBy(dx: Values.mediumSpacing, dy: Values.smallSpacing)
|
||||
}
|
||||
|
|
|
@ -19,9 +19,9 @@ final class Values : NSObject {
|
|||
@objc static let massiveFontSize = CGFloat(50)
|
||||
|
||||
// MARK: - Element Sizes
|
||||
@objc static let smallButtonHeight = CGFloat(27)
|
||||
@objc static let mediumButtonHeight = CGFloat(34)
|
||||
@objc static let largeButtonHeight = CGFloat(45)
|
||||
@objc static let smallButtonHeight = isSmallScreen ? CGFloat(24) : CGFloat(27)
|
||||
@objc static let mediumButtonHeight = isSmallScreen ? CGFloat(30) : CGFloat(34)
|
||||
@objc static let largeButtonHeight = isSmallScreen ? CGFloat(40) : CGFloat(45)
|
||||
@objc static let accentLineThickness = CGFloat(4)
|
||||
@objc static let verySmallProfilePictureSize = CGFloat(26)
|
||||
@objc static let smallProfilePictureSize = CGFloat(35)
|
||||
|
@ -31,18 +31,18 @@ final class Values : NSObject {
|
|||
@objc static let conversationCellStatusIndicatorSize = CGFloat(14)
|
||||
@objc static let searchBarHeight = CGFloat(36)
|
||||
@objc static let newConversationButtonSize = CGFloat(45)
|
||||
@objc static let textFieldHeight = CGFloat(80)
|
||||
@objc static let textFieldHeight = isSmallScreen ? CGFloat(48) : CGFloat(80)
|
||||
@objc static let textFieldCornerRadius = CGFloat(8)
|
||||
@objc static let separatorLabelHeight = CGFloat(24)
|
||||
@objc static var separatorThickness: CGFloat { return 1 / UIScreen.main.scale }
|
||||
@objc static let tabBarHeight = CGFloat(48)
|
||||
@objc static let settingButtonHeight = CGFloat(75)
|
||||
@objc static let tabBarHeight = isSmallScreen ? CGFloat(32) : CGFloat(48)
|
||||
@objc static let settingButtonHeight = isSmallScreen ? CGFloat(52) : CGFloat(75)
|
||||
@objc static let modalCornerRadius = CGFloat(10)
|
||||
@objc static let modalButtonCornerRadius = CGFloat(5)
|
||||
@objc static let fakeChatBubbleWidth = CGFloat(224)
|
||||
@objc static let fakeChatBubbleCornerRadius = CGFloat(10)
|
||||
@objc static let fakeChatViewHeight = CGFloat(234)
|
||||
@objc static var composeViewTextFieldBorderThickness: CGFloat { return 1 / UIScreen.main.scale }
|
||||
@objc static let composeViewTextFieldBorderThickness = 1 / UIScreen.main.scale
|
||||
@objc static let messageBubbleCornerRadius: CGFloat = 10
|
||||
@objc static let progressBarThickness: CGFloat = 2
|
||||
|
||||
|
@ -54,7 +54,7 @@ final class Values : NSObject {
|
|||
@objc static let veryLargeSpacing = CGFloat(35)
|
||||
@objc static let massiveSpacing = CGFloat(64)
|
||||
@objc static let newConversationButtonBottomOffset = CGFloat(52)
|
||||
@objc static let onboardingButtonBottomOffset = CGFloat(72)
|
||||
@objc static let onboardingButtonBottomOffset = isSmallScreen ? CGFloat(52) : CGFloat(72)
|
||||
|
||||
// MARK: - Animation Values
|
||||
@objc static let fakeChatStartDelay: TimeInterval = 2
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
|
||||
var isSmallScreen: Bool {
|
||||
return (UIScreen.main.bounds.height - 568) < 1
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
|
||||
enum QRCode {
|
||||
|
||||
static func generate(for string: String, hasBackground: Bool = false) -> UIImage {
|
||||
static func generate(for string: String, isInverted: Bool = false, hasBackground: Bool = false) -> UIImage {
|
||||
let data = string.data(using: .utf8)
|
||||
var qrCodeAsCIImage: CIImage
|
||||
let filter1 = CIFilter(name: "CIQRCodeGenerator")!
|
||||
|
@ -10,8 +10,8 @@ enum QRCode {
|
|||
if hasBackground {
|
||||
let filter2 = CIFilter(name: "CIFalseColor")!
|
||||
filter2.setValue(qrCodeAsCIImage, forKey: "inputImage")
|
||||
filter2.setValue(CIColor(color: UIColor(hex: 0xFFFFFF)), forKey: "inputColor0")
|
||||
filter2.setValue(CIColor(color: UIColor(hex: 0x1B1B1B)), forKey: "inputColor1")
|
||||
filter2.setValue(CIColor(color: UIColor(hex: isInverted ? 0xFFFFFF : 0x000000)), forKey: "inputColor0")
|
||||
filter2.setValue(CIColor(color: UIColor(hex: isInverted ? 0x1B1B1B : 0xFFFFFF)), forKey: "inputColor1")
|
||||
qrCodeAsCIImage = filter2.outputImage!
|
||||
} else {
|
||||
let filter2 = CIFilter(name: "CIColorInvert")!
|
||||
|
|
|
@ -107,7 +107,7 @@ final class DeviceLinkingModal : Modal, DeviceLinkingSessionDelegate {
|
|||
case .master:
|
||||
qrCodeImageView.set(.height, to: 128)
|
||||
let hexEncodedPublicKey = OWSIdentityManager.shared().identityKeyPair()!.hexEncodedPublicKey
|
||||
qrCodeImageView.image = QRCode.generate(for: hexEncodedPublicKey)
|
||||
qrCodeImageView.image = QRCode.generate(for: hexEncodedPublicKey, hasBackground: true)
|
||||
case .slave:
|
||||
spinner.set(.height, to: 64)
|
||||
spinner.startAnimating()
|
||||
|
|
|
@ -37,7 +37,7 @@ final class DisplayNameVC : UIViewController {
|
|||
// Set up title label
|
||||
let titleLabel = UILabel()
|
||||
titleLabel.textColor = Colors.text
|
||||
titleLabel.font = .boldSystemFont(ofSize: Values.veryLargeFontSize)
|
||||
titleLabel.font = .boldSystemFont(ofSize: isSmallScreen ? Values.largeFontSize : Values.veryLargeFontSize)
|
||||
titleLabel.text = NSLocalizedString("Pick your display name", comment: "")
|
||||
titleLabel.numberOfLines = 0
|
||||
titleLabel.lineBreakMode = .byWordWrapping
|
||||
|
@ -51,9 +51,9 @@ final class DisplayNameVC : UIViewController {
|
|||
// Set up spacers
|
||||
let topSpacer = UIView.vStretchingSpacer()
|
||||
let spacer1 = UIView()
|
||||
spacer1HeightConstraint = spacer1.set(.height, to: Values.veryLargeSpacing)
|
||||
spacer1HeightConstraint = spacer1.set(.height, to: isSmallScreen ? Values.smallSpacing : Values.veryLargeSpacing)
|
||||
let spacer2 = UIView()
|
||||
spacer2HeightConstraint = spacer2.set(.height, to: Values.veryLargeSpacing)
|
||||
spacer2HeightConstraint = spacer2.set(.height, to: isSmallScreen ? Values.smallSpacing : Values.veryLargeSpacing)
|
||||
let bottomSpacer = UIView.vStretchingSpacer()
|
||||
let registerButtonBottomOffsetSpacer = UIView()
|
||||
registerButtonBottomOffsetConstraint = registerButtonBottomOffsetSpacer.set(.height, to: Values.onboardingButtonBottomOffset)
|
||||
|
@ -117,9 +117,9 @@ final class DisplayNameVC : UIViewController {
|
|||
@objc private func handleKeyboardWillChangeFrameNotification(_ notification: Notification) {
|
||||
guard let newHeight = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue.size.height else { return }
|
||||
bottomConstraint.constant = -newHeight // Negative due to how the constraint is set up
|
||||
registerButtonBottomOffsetConstraint.constant = Values.largeSpacing
|
||||
spacer1HeightConstraint.constant = Values.mediumSpacing
|
||||
spacer2HeightConstraint.constant = Values.mediumSpacing
|
||||
registerButtonBottomOffsetConstraint.constant = isSmallScreen ? Values.smallSpacing : Values.largeSpacing
|
||||
spacer1HeightConstraint.constant = isSmallScreen ? Values.smallSpacing : Values.mediumSpacing
|
||||
spacer2HeightConstraint.constant = isSmallScreen ? Values.smallSpacing : Values.mediumSpacing
|
||||
UIView.animate(withDuration: 0.25) {
|
||||
self.view.layoutIfNeeded()
|
||||
}
|
||||
|
@ -128,8 +128,8 @@ final class DisplayNameVC : UIViewController {
|
|||
@objc private func handleKeyboardWillHideNotification(_ notification: Notification) {
|
||||
bottomConstraint.constant = 0
|
||||
registerButtonBottomOffsetConstraint.constant = Values.onboardingButtonBottomOffset
|
||||
spacer1HeightConstraint.constant = Values.veryLargeSpacing
|
||||
spacer2HeightConstraint.constant = Values.veryLargeSpacing
|
||||
spacer1HeightConstraint.constant = isSmallScreen ? Values.smallSpacing : Values.veryLargeSpacing
|
||||
spacer2HeightConstraint.constant = isSmallScreen ? Values.smallSpacing : Values.veryLargeSpacing
|
||||
UIView.animate(withDuration: 0.25) {
|
||||
self.view.layoutIfNeeded()
|
||||
}
|
||||
|
|
|
@ -58,7 +58,7 @@ final class LandingVC : UIViewController, LinkDeviceVCDelegate, DeviceLinkingMod
|
|||
// Set up title label
|
||||
let titleLabel = UILabel()
|
||||
titleLabel.textColor = Colors.text
|
||||
titleLabel.font = .boldSystemFont(ofSize: Values.veryLargeFontSize)
|
||||
titleLabel.font = .boldSystemFont(ofSize: isSmallScreen ? Values.largeFontSize : Values.veryLargeFontSize)
|
||||
titleLabel.text = NSLocalizedString("Your Session begins here...", comment: "")
|
||||
titleLabel.numberOfLines = 0
|
||||
titleLabel.lineBreakMode = .byWordWrapping
|
||||
|
@ -79,11 +79,11 @@ final class LandingVC : UIViewController, LinkDeviceVCDelegate, DeviceLinkingMod
|
|||
linkButton.pin(.leading, to: .leading, of: linkButtonContainer, withInset: Values.massiveSpacing)
|
||||
linkButton.pin(.top, to: .top, of: linkButtonContainer)
|
||||
linkButtonContainer.pin(.trailing, to: .trailing, of: linkButton, withInset: Values.massiveSpacing)
|
||||
linkButtonContainer.pin(.bottom, to: .bottom, of: linkButton, withInset: 10)
|
||||
linkButtonContainer.pin(.bottom, to: .bottom, of: linkButton, withInset: isSmallScreen ? 6 : 10)
|
||||
// Set up button stack view
|
||||
let buttonStackView = UIStackView(arrangedSubviews: [ registerButton, restoreButton ])
|
||||
buttonStackView.axis = .vertical
|
||||
buttonStackView.spacing = Values.mediumSpacing
|
||||
buttonStackView.spacing = isSmallScreen ? Values.smallSpacing : Values.mediumSpacing
|
||||
buttonStackView.alignment = .fill
|
||||
// Set up button stack view container
|
||||
let buttonStackViewContainer = UIView()
|
||||
|
@ -93,7 +93,7 @@ final class LandingVC : UIViewController, LinkDeviceVCDelegate, DeviceLinkingMod
|
|||
buttonStackViewContainer.pin(.trailing, to: .trailing, of: buttonStackView, withInset: Values.massiveSpacing)
|
||||
buttonStackViewContainer.pin(.bottom, to: .bottom, of: buttonStackView)
|
||||
// Set up main stack view
|
||||
let mainStackView = UIStackView(arrangedSubviews: [ topSpacer, titleLabelContainer, UIView.spacer(withHeight: Values.mediumSpacing), fakeChatView, bottomSpacer, buttonStackViewContainer, linkButtonContainer ])
|
||||
let mainStackView = UIStackView(arrangedSubviews: [ topSpacer, titleLabelContainer, UIView.spacer(withHeight: isSmallScreen ? Values.smallSpacing : Values.mediumSpacing), fakeChatView, bottomSpacer, buttonStackViewContainer, linkButtonContainer ])
|
||||
mainStackView.axis = .vertical
|
||||
mainStackView.alignment = .fill
|
||||
view.addSubview(mainStackView)
|
||||
|
|
|
@ -148,7 +148,7 @@ private final class EnterPublicKeyVC : UIViewController {
|
|||
// Set up title label
|
||||
let titleLabel = UILabel()
|
||||
titleLabel.textColor = Colors.text
|
||||
titleLabel.font = .boldSystemFont(ofSize: Values.veryLargeFontSize)
|
||||
titleLabel.font = .boldSystemFont(ofSize: isSmallScreen ? Values.largeFontSize : Values.veryLargeFontSize)
|
||||
titleLabel.text = NSLocalizedString("Link your device", comment: "")
|
||||
titleLabel.numberOfLines = 0
|
||||
titleLabel.lineBreakMode = .byWordWrapping
|
||||
|
@ -165,14 +165,14 @@ private final class EnterPublicKeyVC : UIViewController {
|
|||
linkButton.addTarget(self, action: #selector(requestDeviceLink), for: UIControl.Event.touchUpInside)
|
||||
let linkButtonContainer = UIView()
|
||||
linkButtonContainer.addSubview(linkButton)
|
||||
linkButton.pin(.leading, to: .leading, of: linkButtonContainer, withInset: 80)
|
||||
linkButton.pin(.leading, to: .leading, of: linkButtonContainer, withInset: isSmallScreen ? 48 : 80)
|
||||
linkButton.pin(.top, to: .top, of: linkButtonContainer)
|
||||
linkButtonContainer.pin(.trailing, to: .trailing, of: linkButton, withInset: 80)
|
||||
linkButtonContainer.pin(.trailing, to: .trailing, of: linkButton, withInset: isSmallScreen ? 48 : 80)
|
||||
linkButtonBottomConstraint = linkButtonContainer.pin(.bottom, to: .bottom, of: linkButton, withInset: Values.veryLargeSpacing)
|
||||
// Set up top stack view
|
||||
let topStackView = UIStackView(arrangedSubviews: [ titleLabel, explanationLabel, publicKeyTextField ])
|
||||
topStackView.axis = .vertical
|
||||
topStackView.spacing = Values.largeSpacing
|
||||
topStackView.spacing = isSmallScreen ? Values.smallSpacing : Values.largeSpacing
|
||||
// Set up spacers
|
||||
let topSpacer = UIView.vStretchingSpacer()
|
||||
let bottomSpacer = UIView.vStretchingSpacer()
|
||||
|
@ -216,7 +216,7 @@ private final class EnterPublicKeyVC : UIViewController {
|
|||
@objc private func handleKeyboardWillChangeFrameNotification(_ notification: Notification) {
|
||||
guard let newHeight = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue.size.height else { return }
|
||||
bottomConstraint.constant = -newHeight
|
||||
linkButtonBottomConstraint.constant = Values.mediumSpacing
|
||||
linkButtonBottomConstraint.constant = isSmallScreen ? Values.smallSpacing : Values.mediumSpacing
|
||||
UIView.animate(withDuration: 0.25) {
|
||||
self.view.layoutIfNeeded()
|
||||
}
|
||||
|
|
|
@ -160,18 +160,18 @@ private final class ViewMyQRCodeVC : UIViewController {
|
|||
// Set up title label
|
||||
let titleLabel = UILabel()
|
||||
titleLabel.textColor = Colors.text
|
||||
titleLabel.font = .boldSystemFont(ofSize: Values.massiveFontSize)
|
||||
titleLabel.font = .boldSystemFont(ofSize: isSmallScreen ? CGFloat(40) : Values.massiveFontSize)
|
||||
titleLabel.text = NSLocalizedString("Scan Me", comment: "")
|
||||
titleLabel.numberOfLines = 0
|
||||
titleLabel.textAlignment = .center
|
||||
titleLabel.lineBreakMode = .byWordWrapping
|
||||
// Set up QR code image view
|
||||
let qrCodeImageView = UIImageView()
|
||||
let qrCode = QRCode.generate(for: userHexEncodedPublicKey)
|
||||
let qrCode = QRCode.generate(for: userHexEncodedPublicKey, hasBackground: true)
|
||||
qrCodeImageView.image = qrCode
|
||||
qrCodeImageView.contentMode = .scaleAspectFit
|
||||
qrCodeImageView.set(.height, to: 240)
|
||||
qrCodeImageView.set(.width, to: 240)
|
||||
qrCodeImageView.set(.height, to: isSmallScreen ? 180 : 240)
|
||||
qrCodeImageView.set(.width, to: isSmallScreen ? 180 : 240)
|
||||
// Set up QR code image view container
|
||||
let qrCodeImageViewContainer = UIView()
|
||||
qrCodeImageViewContainer.addSubview(qrCodeImageView)
|
||||
|
@ -203,7 +203,7 @@ private final class ViewMyQRCodeVC : UIViewController {
|
|||
// Set up stack view
|
||||
let stackView = UIStackView(arrangedSubviews: [ titleLabel, qrCodeImageViewContainer, explanationLabel, shareButtonContainer, UIView.vStretchingSpacer() ])
|
||||
stackView.axis = .vertical
|
||||
stackView.spacing = Values.largeSpacing
|
||||
stackView.spacing = isSmallScreen ? Values.mediumSpacing : Values.largeSpacing
|
||||
stackView.alignment = .fill
|
||||
stackView.layoutMargins = UIEdgeInsets(top: Values.mediumSpacing, left: Values.largeSpacing, bottom: Values.mediumSpacing, right: Values.largeSpacing)
|
||||
stackView.isLayoutMarginsRelativeArrangement = true
|
||||
|
|
|
@ -7,7 +7,7 @@ final class RegisterVC : UIViewController {
|
|||
private lazy var publicKeyLabel: UILabel = {
|
||||
let result = UILabel()
|
||||
result.textColor = Colors.text
|
||||
result.font = Fonts.spaceMono(ofSize: Values.largeFontSize)
|
||||
result.font = Fonts.spaceMono(ofSize: isSmallScreen ? Values.mediumFontSize : Values.largeFontSize)
|
||||
result.numberOfLines = 0
|
||||
result.lineBreakMode = .byCharWrapping
|
||||
return result
|
||||
|
@ -60,7 +60,7 @@ final class RegisterVC : UIViewController {
|
|||
// Set up title label
|
||||
let titleLabel = UILabel()
|
||||
titleLabel.textColor = Colors.text
|
||||
titleLabel.font = .boldSystemFont(ofSize: Values.veryLargeFontSize)
|
||||
titleLabel.font = .boldSystemFont(ofSize: isSmallScreen ? Values.largeFontSize : Values.veryLargeFontSize)
|
||||
titleLabel.text = NSLocalizedString("Say hello to your Session ID", comment: "")
|
||||
titleLabel.numberOfLines = 0
|
||||
titleLabel.lineBreakMode = .byWordWrapping
|
||||
|
@ -89,7 +89,7 @@ final class RegisterVC : UIViewController {
|
|||
// Set up button stack view
|
||||
let buttonStackView = UIStackView(arrangedSubviews: [ registerButton, copyPublicKeyButton ])
|
||||
buttonStackView.axis = .vertical
|
||||
buttonStackView.spacing = Values.mediumSpacing
|
||||
buttonStackView.spacing = isSmallScreen ? Values.smallSpacing : Values.mediumSpacing
|
||||
buttonStackView.alignment = .fill
|
||||
// Set up button stack view container
|
||||
let buttonStackViewContainer = UIView()
|
||||
|
@ -109,11 +109,11 @@ final class RegisterVC : UIViewController {
|
|||
legalLabel.pin(.leading, to: .leading, of: legalLabelContainer, withInset: Values.massiveSpacing)
|
||||
legalLabel.pin(.top, to: .top, of: legalLabelContainer)
|
||||
legalLabelContainer.pin(.trailing, to: .trailing, of: legalLabel, withInset: Values.massiveSpacing)
|
||||
legalLabelContainer.pin(.bottom, to: .bottom, of: legalLabel, withInset: 10)
|
||||
legalLabelContainer.pin(.bottom, to: .bottom, of: legalLabel, withInset: isSmallScreen ? 6 : 10)
|
||||
// Set up top stack view
|
||||
let topStackView = UIStackView(arrangedSubviews: [ titleLabel, explanationLabel, publicKeyLabelContainer ])
|
||||
topStackView.axis = .vertical
|
||||
topStackView.spacing = Values.veryLargeSpacing
|
||||
topStackView.spacing = isSmallScreen ? Values.smallSpacing : Values.veryLargeSpacing
|
||||
topStackView.alignment = .fill
|
||||
// Set up top stack view container
|
||||
let topStackViewContainer = UIView()
|
||||
|
|
|
@ -53,7 +53,7 @@ final class RestoreVC : UIViewController {
|
|||
// Set up title label
|
||||
let titleLabel = UILabel()
|
||||
titleLabel.textColor = Colors.text
|
||||
titleLabel.font = .boldSystemFont(ofSize: Values.veryLargeFontSize)
|
||||
titleLabel.font = .boldSystemFont(ofSize: isSmallScreen ? Values.largeFontSize : Values.veryLargeFontSize)
|
||||
titleLabel.text = NSLocalizedString("Restore your account", comment: "")
|
||||
titleLabel.numberOfLines = 0
|
||||
titleLabel.lineBreakMode = .byWordWrapping
|
||||
|
@ -71,11 +71,11 @@ final class RestoreVC : UIViewController {
|
|||
// Set up spacers
|
||||
let topSpacer = UIView.vStretchingSpacer()
|
||||
let spacer1 = UIView()
|
||||
spacer1HeightConstraint = spacer1.set(.height, to: Values.veryLargeSpacing)
|
||||
spacer1HeightConstraint = spacer1.set(.height, to: isSmallScreen ? Values.smallSpacing : Values.veryLargeSpacing)
|
||||
let spacer2 = UIView()
|
||||
spacer2HeightConstraint = spacer2.set(.height, to: Values.veryLargeSpacing)
|
||||
spacer2HeightConstraint = spacer2.set(.height, to: isSmallScreen ? Values.smallSpacing : Values.veryLargeSpacing)
|
||||
let spacer3 = UIView()
|
||||
spacer3HeightConstraint = spacer3.set(.height, to: Values.veryLargeSpacing)
|
||||
spacer3HeightConstraint = spacer3.set(.height, to: isSmallScreen ? Values.smallSpacing : Values.veryLargeSpacing)
|
||||
let bottomSpacer = UIView.vStretchingSpacer()
|
||||
let restoreButtonBottomOffsetSpacer = UIView()
|
||||
restoreButtonBottomOffsetConstraint = restoreButtonBottomOffsetSpacer.set(.height, to: Values.onboardingButtonBottomOffset)
|
||||
|
@ -139,10 +139,10 @@ final class RestoreVC : UIViewController {
|
|||
@objc private func handleKeyboardWillChangeFrameNotification(_ notification: Notification) {
|
||||
guard let newHeight = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue.size.height else { return }
|
||||
bottomConstraint.constant = -newHeight // Negative due to how the constraint is set up
|
||||
restoreButtonBottomOffsetConstraint.constant = Values.largeSpacing
|
||||
spacer1HeightConstraint.constant = Values.mediumSpacing
|
||||
spacer2HeightConstraint.constant = Values.mediumSpacing
|
||||
spacer3HeightConstraint.constant = Values.mediumSpacing
|
||||
restoreButtonBottomOffsetConstraint.constant = isSmallScreen ? Values.smallSpacing : Values.largeSpacing
|
||||
spacer1HeightConstraint.constant = isSmallScreen ? Values.smallSpacing : Values.mediumSpacing
|
||||
spacer2HeightConstraint.constant = isSmallScreen ? Values.smallSpacing : Values.mediumSpacing
|
||||
spacer3HeightConstraint.constant = isSmallScreen ? Values.smallSpacing : Values.mediumSpacing
|
||||
UIView.animate(withDuration: 0.25) {
|
||||
self.view.layoutIfNeeded()
|
||||
}
|
||||
|
@ -151,9 +151,9 @@ final class RestoreVC : UIViewController {
|
|||
@objc private func handleKeyboardWillHideNotification(_ notification: Notification) {
|
||||
bottomConstraint.constant = 0
|
||||
restoreButtonBottomOffsetConstraint.constant = Values.onboardingButtonBottomOffset
|
||||
spacer1HeightConstraint.constant = Values.veryLargeSpacing
|
||||
spacer2HeightConstraint.constant = Values.veryLargeSpacing
|
||||
spacer3HeightConstraint.constant = Values.veryLargeSpacing
|
||||
spacer1HeightConstraint.constant = isSmallScreen ? Values.smallSpacing : Values.veryLargeSpacing
|
||||
spacer2HeightConstraint.constant = isSmallScreen ? Values.smallSpacing : Values.veryLargeSpacing
|
||||
spacer3HeightConstraint.constant = isSmallScreen ? Values.smallSpacing : Values.veryLargeSpacing
|
||||
UIView.animate(withDuration: 0.25) {
|
||||
self.view.layoutIfNeeded()
|
||||
}
|
||||
|
|
|
@ -80,7 +80,7 @@ final class SeedVCV2 : UIViewController {
|
|||
// Set up title label
|
||||
let titleLabel = UILabel()
|
||||
titleLabel.textColor = Colors.text
|
||||
titleLabel.font = .boldSystemFont(ofSize: Values.veryLargeFontSize)
|
||||
titleLabel.font = .boldSystemFont(ofSize: isSmallScreen ? Values.largeFontSize : Values.veryLargeFontSize)
|
||||
titleLabel.text = NSLocalizedString("Meet your recovery phrase", comment: "")
|
||||
titleLabel.numberOfLines = 0
|
||||
titleLabel.lineBreakMode = .byWordWrapping
|
||||
|
@ -107,7 +107,7 @@ final class SeedVCV2 : UIViewController {
|
|||
// Set up call to action label
|
||||
let callToActionLabel = UILabel()
|
||||
callToActionLabel.textColor = Colors.text.withAlphaComponent(Values.unimportantElementOpacity)
|
||||
callToActionLabel.font = .systemFont(ofSize: Values.mediumFontSize)
|
||||
callToActionLabel.font = .systemFont(ofSize: isSmallScreen ? Values.smallFontSize : Values.mediumFontSize)
|
||||
callToActionLabel.text = NSLocalizedString("Hold to reveal", comment: "")
|
||||
callToActionLabel.textAlignment = .center
|
||||
let callToActionLabelGestureRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(revealMnemonic))
|
||||
|
@ -127,7 +127,7 @@ final class SeedVCV2 : UIViewController {
|
|||
// Set up top stack view
|
||||
let topStackView = UIStackView(arrangedSubviews: [ titleLabel, explanationLabel, mnemonicLabelContainer, callToActionLabel ])
|
||||
topStackView.axis = .vertical
|
||||
topStackView.spacing = Values.largeSpacing
|
||||
topStackView.spacing = isSmallScreen ? Values.smallSpacing : Values.largeSpacing
|
||||
topStackView.alignment = .fill
|
||||
// Set up top stack view container
|
||||
let topStackViewContainer = UIView()
|
||||
|
@ -145,7 +145,7 @@ final class SeedVCV2 : UIViewController {
|
|||
let mainStackView = UIStackView(arrangedSubviews: [ topSpacer, topStackViewContainer, bottomSpacer, copyButtonContainer ])
|
||||
mainStackView.axis = .vertical
|
||||
mainStackView.alignment = .fill
|
||||
mainStackView.layoutMargins = UIEdgeInsets(top: 0, leading: 0, bottom: Values.mediumSpacing, trailing: 0)
|
||||
mainStackView.layoutMargins = UIEdgeInsets(top: 0, leading: 0, bottom: isSmallScreen ? Values.smallSpacing : Values.mediumSpacing, trailing: 0)
|
||||
mainStackView.isLayoutMarginsRelativeArrangement = true
|
||||
view.addSubview(mainStackView)
|
||||
mainStackView.pin(.leading, to: .leading, of: view)
|
||||
|
|
|
@ -103,7 +103,7 @@ final class SettingsVC : UIViewController, AvatarViewHelperDelegate {
|
|||
// Set up public key label
|
||||
let publicKeyLabel = UILabel()
|
||||
publicKeyLabel.textColor = Colors.text
|
||||
publicKeyLabel.font = Fonts.spaceMono(ofSize: Values.largeFontSize)
|
||||
publicKeyLabel.font = Fonts.spaceMono(ofSize: isSmallScreen ? Values.mediumFontSize : Values.largeFontSize)
|
||||
publicKeyLabel.numberOfLines = 0
|
||||
publicKeyLabel.textAlignment = .center
|
||||
publicKeyLabel.lineBreakMode = .byCharWrapping
|
||||
|
|
Loading…
Reference in New Issue