mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2025-06-28 20:29:53 +00:00
vertical buttons in alert when they dont fit
This commit is contained in:
parent
703c3e7c86
commit
d598f20efa
2 changed files with 34 additions and 19 deletions
|
@ -90,6 +90,12 @@ let okAlertAction = UIAlertAction(title: NSLocalizedString("Ok", comment: "alert
|
||||||
|
|
||||||
let cancelAlertAction = UIAlertAction(title: NSLocalizedString("Cancel", comment: "alert button"), style: .cancel)
|
let cancelAlertAction = UIAlertAction(title: NSLocalizedString("Cancel", comment: "alert button"), style: .cancel)
|
||||||
|
|
||||||
|
let alertProfileImageSize: CGFloat = 103
|
||||||
|
|
||||||
|
let alertWidth: CGFloat = 270
|
||||||
|
|
||||||
|
let alertButtonHeight: CGFloat = 44
|
||||||
|
|
||||||
class OpenChatAlertViewController: UIViewController {
|
class OpenChatAlertViewController: UIViewController {
|
||||||
private let profileName: String
|
private let profileName: String
|
||||||
private let profileFullName: String
|
private let profileFullName: String
|
||||||
|
@ -195,13 +201,15 @@ class OpenChatAlertViewController: UIViewController {
|
||||||
confirmButton.titleLabel?.font = UIFont.preferredFont(forTextStyle: .body)
|
confirmButton.titleLabel?.font = UIFont.preferredFont(forTextStyle: .body)
|
||||||
confirmButton.addTarget(self, action: #selector(confirmTapped), for: .touchUpInside)
|
confirmButton.addTarget(self, action: #selector(confirmTapped), for: .touchUpInside)
|
||||||
|
|
||||||
|
let verticalButtons = cancelButton.intrinsicContentSize.width + 20 >= alertWidth / 2 || confirmButton.intrinsicContentSize.width + 20 >= alertWidth / 2
|
||||||
|
|
||||||
// Button stack with equal width buttons
|
// Button stack with equal width buttons
|
||||||
let buttonStack = UIStackView(arrangedSubviews: [cancelButton, confirmButton])
|
let buttonStack = UIStackView(arrangedSubviews: verticalButtons ? [confirmButton, cancelButton] : [cancelButton, confirmButton])
|
||||||
buttonStack.axis = .horizontal
|
buttonStack.axis = verticalButtons ? .vertical : .horizontal
|
||||||
buttonStack.distribution = .fillEqually
|
buttonStack.distribution = .fillEqually
|
||||||
buttonStack.spacing = 0 // no spacing, use divider instead
|
buttonStack.spacing = 0 // no spacing, use divider instead
|
||||||
buttonStack.translatesAutoresizingMaskIntoConstraints = false
|
buttonStack.translatesAutoresizingMaskIntoConstraints = false
|
||||||
buttonStack.heightAnchor.constraint(greaterThanOrEqualToConstant: 50).isActive = true
|
buttonStack.heightAnchor.constraint(greaterThanOrEqualToConstant: alertButtonHeight * (verticalButtons ? 2 : 1)).isActive = true
|
||||||
|
|
||||||
// Vertical stack containing hStack and buttonStack
|
// Vertical stack containing hStack and buttonStack
|
||||||
let vStack = UIStackView(arrangedSubviews: [topRowContainer, buttonStack])
|
let vStack = UIStackView(arrangedSubviews: [topRowContainer, buttonStack])
|
||||||
|
@ -218,19 +226,34 @@ class OpenChatAlertViewController: UIViewController {
|
||||||
horizontalDivider.translatesAutoresizingMaskIntoConstraints = false
|
horizontalDivider.translatesAutoresizingMaskIntoConstraints = false
|
||||||
containerView.addSubview(horizontalDivider)
|
containerView.addSubview(horizontalDivider)
|
||||||
|
|
||||||
// Add vertical divider between buttons
|
// Add divider between buttons
|
||||||
let verticalDivider = UIView()
|
let buttonDivider = UIView()
|
||||||
verticalDivider.backgroundColor = UIColor.separator
|
buttonDivider.backgroundColor = UIColor.separator
|
||||||
verticalDivider.translatesAutoresizingMaskIntoConstraints = false
|
buttonDivider.translatesAutoresizingMaskIntoConstraints = false
|
||||||
buttonStack.addSubview(verticalDivider)
|
buttonStack.addSubview(buttonDivider)
|
||||||
|
|
||||||
// Constraints
|
// Constraints
|
||||||
|
let buttonDividerConstraints = if verticalButtons {
|
||||||
|
[
|
||||||
|
buttonDivider.leadingAnchor.constraint(equalTo: containerView.leadingAnchor),
|
||||||
|
buttonDivider.trailingAnchor.constraint(equalTo: containerView.trailingAnchor),
|
||||||
|
buttonDivider.centerYAnchor.constraint(equalTo: buttonStack.centerYAnchor),
|
||||||
|
buttonDivider.heightAnchor.constraint(equalToConstant: 1 / UIScreen.main.scale)
|
||||||
|
]
|
||||||
|
} else {
|
||||||
|
[
|
||||||
|
buttonDivider.topAnchor.constraint(equalTo: buttonStack.topAnchor),
|
||||||
|
buttonDivider.bottomAnchor.constraint(equalTo: containerView.bottomAnchor),
|
||||||
|
buttonDivider.centerXAnchor.constraint(equalTo: buttonStack.centerXAnchor),
|
||||||
|
buttonDivider.widthAnchor.constraint(equalToConstant: 1 / UIScreen.main.scale)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
NSLayoutConstraint.activate([
|
NSLayoutConstraint.activate([
|
||||||
// Container view centering and fixed width
|
// Container view centering and fixed width
|
||||||
containerView.centerYAnchor.constraint(equalTo: view.centerYAnchor),
|
containerView.centerYAnchor.constraint(equalTo: view.centerYAnchor),
|
||||||
containerView.centerXAnchor.constraint(equalTo: view.centerXAnchor),
|
containerView.centerXAnchor.constraint(equalTo: view.centerXAnchor),
|
||||||
containerView.widthAnchor.constraint(equalToConstant: 280),
|
containerView.widthAnchor.constraint(equalToConstant: alertWidth),
|
||||||
|
|
||||||
// Vertical stack padding inside containerView
|
// Vertical stack padding inside containerView
|
||||||
vStack.topAnchor.constraint(equalTo: containerView.topAnchor, constant: 20),
|
vStack.topAnchor.constraint(equalTo: containerView.topAnchor, constant: 20),
|
||||||
|
@ -245,14 +268,8 @@ class OpenChatAlertViewController: UIViewController {
|
||||||
horizontalDivider.leadingAnchor.constraint(equalTo: containerView.leadingAnchor),
|
horizontalDivider.leadingAnchor.constraint(equalTo: containerView.leadingAnchor),
|
||||||
horizontalDivider.trailingAnchor.constraint(equalTo: containerView.trailingAnchor),
|
horizontalDivider.trailingAnchor.constraint(equalTo: containerView.trailingAnchor),
|
||||||
horizontalDivider.bottomAnchor.constraint(equalTo: buttonStack.topAnchor),
|
horizontalDivider.bottomAnchor.constraint(equalTo: buttonStack.topAnchor),
|
||||||
horizontalDivider.heightAnchor.constraint(equalToConstant: 1 / UIScreen.main.scale),
|
horizontalDivider.heightAnchor.constraint(equalToConstant: 1 / UIScreen.main.scale)
|
||||||
|
] + buttonDividerConstraints)
|
||||||
// Vertical divider between buttons
|
|
||||||
verticalDivider.widthAnchor.constraint(equalToConstant: 1 / UIScreen.main.scale),
|
|
||||||
verticalDivider.topAnchor.constraint(equalTo: buttonStack.topAnchor),
|
|
||||||
verticalDivider.bottomAnchor.constraint(equalTo: containerView.bottomAnchor),
|
|
||||||
verticalDivider.centerXAnchor.constraint(equalTo: buttonStack.centerXAnchor)
|
|
||||||
])
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc private func cancelTapped() {
|
@objc private func cancelTapped() {
|
||||||
|
|
|
@ -1005,8 +1005,6 @@ private func showOwnGroupLinkConfirmConnectSheet(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
let alertProfileImageSize: CGFloat = 128
|
|
||||||
|
|
||||||
private func showPrepareContactAlert(
|
private func showPrepareContactAlert(
|
||||||
connectionLink: CreatedConnLink,
|
connectionLink: CreatedConnLink,
|
||||||
contactShortLinkData: ContactShortLinkData,
|
contactShortLinkData: ContactShortLinkData,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue