diff --git a/LearnEnglish/LearnEnglish/Views/SpellingInputView.swift b/LearnEnglish/LearnEnglish/Views/SpellingInputView.swift index 5821f74..96b1ae3 100644 --- a/LearnEnglish/LearnEnglish/Views/SpellingInputView.swift +++ b/LearnEnglish/LearnEnglish/Views/SpellingInputView.swift @@ -20,18 +20,31 @@ final class SpellingInputView: UIView, UITextFieldDelegate { override init(frame: CGRect) { super.init(frame: frame) + + let scrollView = UIScrollView() + scrollView.showsHorizontalScrollIndicator = false + scrollView.showsVerticalScrollIndicator = false + addSubview(scrollView) + scrollView.translatesAutoresizingMaskIntoConstraints = false + NSLayoutConstraint.activate([ + scrollView.topAnchor.constraint(equalTo: topAnchor), + scrollView.bottomAnchor.constraint(equalTo: bottomAnchor), + scrollView.leadingAnchor.constraint(equalTo: leadingAnchor), + scrollView.trailingAnchor.constraint(equalTo: trailingAnchor) + ]) + stack.axis = .horizontal stack.spacing = 6 stack.alignment = .center stack.isUserInteractionEnabled = true - addSubview(stack) + scrollView.addSubview(stack) stack.translatesAutoresizingMaskIntoConstraints = false NSLayoutConstraint.activate([ - stack.topAnchor.constraint(equalTo: topAnchor), - stack.bottomAnchor.constraint(equalTo: bottomAnchor), - stack.centerXAnchor.constraint(equalTo: centerXAnchor), - stack.leadingAnchor.constraint(greaterThanOrEqualTo: leadingAnchor), - stack.trailingAnchor.constraint(lessThanOrEqualTo: trailingAnchor) + stack.topAnchor.constraint(equalTo: scrollView.contentLayoutGuide.topAnchor), + stack.bottomAnchor.constraint(equalTo: scrollView.contentLayoutGuide.bottomAnchor), + stack.leadingAnchor.constraint(equalTo: scrollView.contentLayoutGuide.leadingAnchor), + stack.trailingAnchor.constraint(equalTo: scrollView.contentLayoutGuide.trailingAnchor), + stack.heightAnchor.constraint(equalTo: scrollView.frameLayoutGuide.heightAnchor) ]) hiddenField.delegate = self @@ -126,17 +139,9 @@ final class SpellingInputView: UIView, UITextFieldDelegate { private func rebuildBoxes() { stack.arrangedSubviews.forEach { $0.removeFromSuperview() } - let count = CGFloat(max(chars.count, 1)) - let available = (window?.screen.bounds.width ?? 390) - 32 - var spacing: CGFloat = 6 - var boxWidth = (available - spacing * (count - 1)) / count - if boxWidth < 16 { - spacing = 3 - boxWidth = (available - spacing * (count - 1)) / count - } - boxWidth = min(36, boxWidth) - stack.spacing = spacing - let fontSize = min(22, max(12, boxWidth * 0.62)) + let boxWidth: CGFloat = 32 + let fontSize: CGFloat = 20 + stack.spacing = 6 boxViews = chars.enumerated().map { index, ch in let box = makeBox(fontSize: fontSize) box.tag = index