From 9893d5408a4a21dbb4151ea11bc124d037f5fe7a Mon Sep 17 00:00:00 2001 From: fish Date: Sat, 18 Jul 2026 22:29:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E9=9A=94=E7=BA=BF=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=201=20=E7=89=A9=E7=90=86=E5=83=8F=E7=B4=A0=E5=8F=91=E4=B8=9D?= =?UTF-8?q?=E7=BA=BF=EF=BC=8C=E4=BF=AE=E5=A4=8D=20UIScreen.main=20?= =?UTF-8?q?=E5=BC=83=E7=94=A8=E8=AD=A6=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.7 --- .../LearnEnglish/Views/HairlineView.swift | 23 +++++++++++++++++++ .../LearnEnglish/Views/QuizResultView.swift | 5 +--- .../Views/WordDetailViewController.swift | 5 +--- 3 files changed, 25 insertions(+), 8 deletions(-) create mode 100644 LearnEnglish/LearnEnglish/Views/HairlineView.swift diff --git a/LearnEnglish/LearnEnglish/Views/HairlineView.swift b/LearnEnglish/LearnEnglish/Views/HairlineView.swift new file mode 100644 index 0000000..699e37b --- /dev/null +++ b/LearnEnglish/LearnEnglish/Views/HairlineView.swift @@ -0,0 +1,23 @@ +import UIKit + +final class HairlineView: UIView { + private var heightConstraint: NSLayoutConstraint? + + override init(frame: CGRect) { + super.init(frame: frame) + backgroundColor = .separator + translatesAutoresizingMaskIntoConstraints = false + let constraint = heightAnchor.constraint(equalToConstant: 0.5) + constraint.isActive = true + heightConstraint = constraint + } + + @available(*, unavailable) + required init?(coder: NSCoder) { fatalError() } + + override func didMoveToWindow() { + super.didMoveToWindow() + let scale = window?.windowScene?.screen.scale ?? 2 + heightConstraint?.constant = 1.0 / scale + } +} diff --git a/LearnEnglish/LearnEnglish/Views/QuizResultView.swift b/LearnEnglish/LearnEnglish/Views/QuizResultView.swift index a89baa8..22a55e0 100644 --- a/LearnEnglish/LearnEnglish/Views/QuizResultView.swift +++ b/LearnEnglish/LearnEnglish/Views/QuizResultView.swift @@ -133,10 +133,7 @@ final class QuizResultView: UIView { }, for: .touchUpInside) section.addArrangedSubview(button) - let divider = UIView() - divider.backgroundColor = .separator - divider.translatesAutoresizingMaskIntoConstraints = false - divider.heightAnchor.constraint(equalToConstant: 1.0 / UIScreen.main.scale).isActive = true + let divider = HairlineView() section.addArrangedSubview(divider) } return section diff --git a/LearnEnglish/LearnEnglish/Views/WordDetailViewController.swift b/LearnEnglish/LearnEnglish/Views/WordDetailViewController.swift index 70c07eb..01ed19b 100644 --- a/LearnEnglish/LearnEnglish/Views/WordDetailViewController.swift +++ b/LearnEnglish/LearnEnglish/Views/WordDetailViewController.swift @@ -106,10 +106,7 @@ final class WordDetailViewController: UIViewController { meaningLabel.font = .preferredFont(forTextStyle: .title2) meaningLabel.numberOfLines = 0 - let divider = UIView() - divider.backgroundColor = .separator - divider.translatesAutoresizingMaskIntoConstraints = false - divider.heightAnchor.constraint(equalToConstant: 1.0 / UIScreen.main.scale).isActive = true + let divider = HairlineView() let exampleTitle = makeCaption("例句") let exampleLabel = UILabel()