나는 같은 질문을 계속해서 보았고 각 질문은 같은 답을 얻었습니다. "마지막보기 bottomAnchor
를 scrollView와 동일하게 설정해야 bottomAnchor
확장됩니다."
글쎄요, 스크롤 뷰가 스크롤되지만 (스크롤 막대가 움직이는 것을 봅니다) 뷰가 스크롤되지 않습니다! 다음은 코드입니다.
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
setupConstraints()
}
fileprivate func setupConstraints() {
setupScrollViewConstraints()
setupLogoImageViewConstraints()
setupUsernameTextFieldConstraints()
setupPasswordTextFieldConstraints()
setupShowAndHideButtonConstraints()
setupForgotPasswordButtonConstraints()
setupLoginButtonConstraints()
setupAccountLabelConstraints()
let signInWithAppleButton = setupSignInWithAppleButton()
setupLoginWithFacebookButtonConstraints(signInWithAppleButton)
setupSignUpButtonConstraints()
setupTermsOfUseButtonConstraints()
}
fileprivate func setupScrollViewConstraints() {
scrollView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
scrollView.topAnchor.constraint(equalTo: self.view.topAnchor),
scrollView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
scrollView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
scrollView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor)
])
}
fileprivate func setupLogoImageViewConstraints() {
logoImageView.translatesAutoresizingMaskIntoConstraints = false
if #available(iOS 11.0, *) {
NSLayoutConstraint.activate([
logoImageView.topAnchor.constraint(equalTo: scrollView.safeAreaLayoutGuide.topAnchor, constant: 16),
logoImageView.centerXAnchor.constraint(equalTo: scrollView.centerXAnchor),
logoImageView.widthAnchor.constraint(equalToConstant: 112),
logoImageView.heightAnchor.constraint(equalToConstant: 112)
])
}
else {
NSLayoutConstraint.activate([
logoImageView.topAnchor.constraint(equalTo: scrollView.topAnchor, constant: 16),
logoImageView.centerXAnchor.constraint(equalTo: scrollView.centerXAnchor),
logoImageView.widthAnchor.constraint(equalToConstant: 112),
logoImageView.heightAnchor.constraint(equalToConstant: 112)
])
}
}
fileprivate func setupUsernameTextFieldConstraints() {
usernameTextField.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
usernameTextField.topAnchor.constraint(equalTo: logoImageView.bottomAnchor, constant: 16),
usernameTextField.centerXAnchor.constraint(equalTo: scrollView.centerXAnchor),
usernameTextField.widthAnchor.constraint(equalToConstant: self.view.frame.width / 1.4),
usernameTextField.heightAnchor.constraint(equalToConstant: 45)
])
}
fileprivate func setupPasswordTextFieldConstraints() {
passwordTextField.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
passwordTextField.topAnchor.constraint(equalTo: usernameTextField.bottomAnchor, constant: 8),
passwordTextField.centerXAnchor.constraint(equalTo: scrollView.centerXAnchor),
passwordTextField.widthAnchor.constraint(equalToConstant: self.view.frame.width / 1.4),
passwordTextField.heightAnchor.constraint(equalToConstant: 45)
])
}
fileprivate func setupShowAndHideButtonConstraints() {
showAndHideButton.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
showAndHideButton.leadingAnchor.constraint(equalTo: passwordTextField.trailingAnchor, constant: -30),
showAndHideButton.trailingAnchor.constraint(equalTo: passwordTextField.trailingAnchor),
showAndHideButton.centerYAnchor.constraint(equalTo: passwordTextField.centerYAnchor),
showAndHideButton.heightAnchor.constraint(equalToConstant: 20)
])
}
fileprivate func setupForgotPasswordButtonConstraints() {
forgotPasswordButton.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
forgotPasswordButton.topAnchor.constraint(equalTo: passwordTextField.bottomAnchor),
forgotPasswordButton.leadingAnchor.constraint(equalTo: passwordTextField.leadingAnchor),
forgotPasswordButton.trailingAnchor.constraint(equalTo: passwordTextField.trailingAnchor),
forgotPasswordButton.heightAnchor.constraint(equalToConstant: 45)
])
}
fileprivate func setupLoginButtonConstraints() {
loginButton.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
loginButton.topAnchor.constraint(equalTo: forgotPasswordButton.bottomAnchor, constant: 20),
loginButton.centerXAnchor.constraint(equalTo: scrollView.centerXAnchor),
loginButton.widthAnchor.constraint(equalToConstant: 210),
loginButton.heightAnchor.constraint(equalToConstant: 45)
])
}
fileprivate func setupAccountLabelConstraints() {
accountLabel.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
accountLabel.topAnchor.constraint(equalTo: loginButton.bottomAnchor, constant: 40),
accountLabel.centerXAnchor.constraint(equalTo: scrollView.centerXAnchor),
accountLabel.heightAnchor.constraint(equalToConstant: 45)
])
}
fileprivate func setupSignInWithAppleButton() -> UIControl? {
if #available(iOS 13.0, *) {
let signInWithAppleButton = ASAuthorizationAppleIDButton(type: .default, style: .white)
signInWithAppleButton.addTarget(self, action: #selector(loginWithApple(_:)), for: .touchUpInside)
signInWithAppleButton.cornerRadius = 12
scrollView.addSubview(signInWithAppleButton)
signInWithAppleButton.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
signInWithAppleButton.topAnchor.constraint(equalTo: accountLabel.bottomAnchor, constant: 8),
signInWithAppleButton.centerXAnchor.constraint(equalTo: scrollView.centerXAnchor),
signInWithAppleButton.widthAnchor.constraint(equalToConstant: 210),
signInWithAppleButton.heightAnchor.constraint(equalToConstant: 45)
])
return signInWithAppleButton
}
return nil
}
fileprivate func setupLoginWithFacebookButtonConstraints(_ signInAppleButton: UIControl?) {
facebookButton.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
facebookButton.topAnchor.constraint(equalTo: signInAppleButton?.bottomAnchor ?? accountLabel.bottomAnchor, constant: 8),
facebookButton.centerXAnchor.constraint(equalTo: scrollView.centerXAnchor),
facebookButton.widthAnchor.constraint(equalToConstant: 210),
facebookButton.heightAnchor.constraint(equalToConstant: 45)
])
}
fileprivate func setupSignUpButtonConstraints() {
signUpButton.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
signUpButton.topAnchor.constraint(equalTo: facebookButton.bottomAnchor, constant: 8),
signUpButton.centerXAnchor.constraint(equalTo: scrollView.centerXAnchor),
signUpButton.widthAnchor.constraint(equalToConstant: 210),
signUpButton.heightAnchor.constraint(equalToConstant: 45)
])
}
fileprivate func setupTermsOfUseButtonConstraints() {
termsButton.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
termsButton.topAnchor.constraint(equalTo: signUpButton.bottomAnchor, constant: 8),
termsButton.centerXAnchor.constraint(equalTo: scrollView.centerXAnchor),
termsButton.widthAnchor.constraint(equalToConstant: 210),
termsButton.heightAnchor.constraint(equalToConstant: 50),
termsButton.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor)
])
}
이 문제는 지금 며칠 동안 나를 미치게 만듭니다! 내가 무엇을 놓치고 있습니까?
당신 logoImageView
은 잘못된 장소로 제한되어 있습니다 ...
// constrain Top to scrollView contentLayoutGuide Top
//logoImageView.topAnchor.constraint(equalTo: scrollView.safeAreaLayoutGuide.topAnchor, constant: 16),
logoImageView.topAnchor.constraint(equalTo: scrollView.contentLayoutGuide.topAnchor, constant: 16),
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다