From caf737b09bd92782eb0a54766703b1a130b20835 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=89=E7=A7=8B?= <497055328@qq.com> Date: Mon, 6 Jul 2026 15:41:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=99=BB=E5=BD=95=E8=A1=A8?= =?UTF-8?q?=E5=8D=95=E5=8D=A1=E7=89=87=E5=B8=83=E5=B1=80=E5=B9=B6=E5=AF=B9?= =?UTF-8?q?=E9=BD=90=20Android?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- suixinkan/UI/Login/LoginViewController.swift | 46 ++++++++++++-------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/suixinkan/UI/Login/LoginViewController.swift b/suixinkan/UI/Login/LoginViewController.swift index 8ed02c9..fb8c52c 100644 --- a/suixinkan/UI/Login/LoginViewController.swift +++ b/suixinkan/UI/Login/LoginViewController.swift @@ -61,6 +61,7 @@ final class LoginViewController: BaseViewController { topFormStack.axis = .vertical topFormStack.spacing = 0 topFormStack.alignment = .fill + topFormStack.distribution = .fill loginButton.addTarget(self, action: #selector(loginButtonTapped), for: .touchUpInside) loginByCodeButton.addTarget(self, action: #selector(loginByCodeButtonTapped), for: .touchUpInside) @@ -115,28 +116,24 @@ final class LoginViewController: BaseViewController { welcomeLabel.snp.makeConstraints { make in make.top.equalTo(view.safeAreaLayoutGuide).offset(48) - make.leading.trailing.equalToSuperview().inset(24) + make.leading.trailing.equalTo(view.safeAreaLayoutGuide).inset(24) } formCardShadowView.snp.makeConstraints { make in make.top.equalTo(welcomeLabel.snp.bottom).offset(48) - make.leading.trailing.equalToSuperview().inset(24) - make.bottom.equalTo(view.safeAreaLayoutGuide).offset(-24) + make.leading.trailing.equalTo(view.safeAreaLayoutGuide).inset(24) + make.bottom.lessThanOrEqualTo(view.safeAreaLayoutGuide).offset(-24) } formCardView.snp.makeConstraints { make in make.edges.equalToSuperview() } - topFormStack.snp.makeConstraints { make in - make.top.leading.trailing.equalToSuperview().inset(16) - make.bottom.equalToSuperview().inset(16) - } - registerContainer.snp.makeConstraints { make in make.centerX.equalToSuperview() - make.bottom.equalToSuperview().inset(16) } + + applyCardLayoutConstraints(showRegisterSection: false) } override func viewDidLayoutSubviews() { @@ -230,15 +227,7 @@ final class LoginViewController: BaseViewController { let showRegisterSection = viewModel.enableRegister loginByCodeButton.isHidden = !showRegisterSection registerContainer.isHidden = !showRegisterSection - - topFormStack.snp.remakeConstraints { make in - make.top.leading.trailing.equalToSuperview().inset(16) - if showRegisterSection { - make.bottom.lessThanOrEqualTo(registerContainer.snp.top).offset(-16) - } else { - make.bottom.equalToSuperview().inset(16) - } - } + applyCardLayoutConstraints(showRegisterSection: showRegisterSection) if let payload = viewModel.pendingAccountSelection { if let controller = accountSelectionController { @@ -252,6 +241,27 @@ final class LoginViewController: BaseViewController { } } + /// 卡片高度随内容自适应,底部与屏幕 safeArea 至少保留 24pt 间距。 + private func applyCardLayoutConstraints(showRegisterSection: Bool) { + if showRegisterSection { + topFormStack.snp.remakeConstraints { make in + make.top.leading.trailing.equalToSuperview().inset(16) + } + registerContainer.snp.remakeConstraints { make in + make.top.equalTo(topFormStack.snp.bottom).offset(16) + make.centerX.equalToSuperview() + make.bottom.equalToSuperview().inset(16) + } + } else { + registerContainer.snp.remakeConstraints { make in + make.centerX.equalToSuperview() + } + topFormStack.snp.remakeConstraints { make in + make.edges.equalToSuperview().inset(16) + } + } + } + private func performLogin() { viewModel.normalizeUsernameCountryCodeIfNeeded() accountField.text = viewModel.normalizedUsername