From 6e2899dbfd5e5ebec47d0abaa2897dff3a0b8815 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=89=E7=A7=8B?= <497055328@qq.com> Date: Thu, 13 Aug 2026 16:11:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=9B=BE=E7=89=87=E9=A2=84?= =?UTF-8?q?=E8=A7=88=E5=88=86=E6=AE=B5=E6=8E=A7=E4=BB=B6=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ravelAlbumPhotoPreviewViewController.swift | 20 +++++++++++++------ ...TravelAlbumDetailViewControllerTests.swift | 20 +++++++++++++++++++ 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/suixinkan/UI/TravelAlbum/TravelAlbumPhotoPreviewViewController.swift b/suixinkan/UI/TravelAlbum/TravelAlbumPhotoPreviewViewController.swift index e65d65e..9f57596 100644 --- a/suixinkan/UI/TravelAlbum/TravelAlbumPhotoPreviewViewController.swift +++ b/suixinkan/UI/TravelAlbum/TravelAlbumPhotoPreviewViewController.swift @@ -52,6 +52,7 @@ final class TravelAlbumPhotoPreviewViewController: UIViewController { private let deleteButton = UIButton(type: .system) private let refreshButton = UIButton(type: .system) private var variantControlsHeightConstraint: Constraint? + private var variantSegmentedControlWidthConstraint: Constraint? private var didConfigureVariantControls = false private var showsVariantControls = false private var variantControlsAnimationGeneration = 0 @@ -168,14 +169,13 @@ final class TravelAlbumPhotoPreviewViewController: UIViewController { counterContainer.layer.cornerRadius = 17 counterContainer.clipsToBounds = true - variantSegmentedControl.selectedSegmentTintColor = UIColor(white: 0.22, alpha: 1) - variantSegmentedControl.backgroundColor = UIColor(white: 0.065, alpha: 1) + variantSegmentedControl.selectedSegmentTintColor = UIColor.white.withAlphaComponent(0.2) variantSegmentedControl.setTitleTextAttributes( - [.foregroundColor: UIColor.white.withAlphaComponent(0.62), .font: UIFont.systemFont(ofSize: 15)], + [.foregroundColor: UIColor.white.withAlphaComponent(0.7)], for: .normal ) variantSegmentedControl.setTitleTextAttributes( - [.foregroundColor: UIColor.white, .font: UIFont.systemFont(ofSize: 15, weight: .semibold)], + [.foregroundColor: UIColor.white], for: .selected ) variantSegmentedControl.accessibilityIdentifier = "travelAlbum.previewVariantSegmentedControl" @@ -258,8 +258,9 @@ final class TravelAlbumPhotoPreviewViewController: UIViewController { variantSegmentedControl.snp.makeConstraints { make in make.leading.equalToSuperview().offset(20) make.centerY.equalToSuperview() - make.height.equalTo(40) - make.trailing.equalTo(highResolutionButton.snp.leading).offset(-12) + variantSegmentedControlWidthConstraint = make.width.equalTo(124).constraint + make.height.equalTo(32) + make.trailing.lessThanOrEqualTo(highResolutionButton.snp.leading).offset(-12) } highResolutionButton.snp.makeConstraints { make in make.trailing.equalToSuperview().inset(18) @@ -406,6 +407,13 @@ final class TravelAlbumPhotoPreviewViewController: UIViewController { for (index, asset) in project.orderedAssets.enumerated() { variantSegmentedControl.insertSegment(withTitle: asset.kind.title, at: index, animated: false) } + let controlWidth: CGFloat + switch project.orderedAssets.count { + case 4: controlWidth = 220 + case 3: controlWidth = 180 + default: controlWidth = 124 + } + variantSegmentedControlWidthConstraint?.update(offset: controlWidth) variantSegmentedControl.selectedSegmentIndex = project.orderedAssets.firstIndex { $0.kind == activeKind } ?? 0 diff --git a/suixinkanTests/TravelAlbumDetailViewControllerTests.swift b/suixinkanTests/TravelAlbumDetailViewControllerTests.swift index 4b2a572..d92f3c0 100644 --- a/suixinkanTests/TravelAlbumDetailViewControllerTests.swift +++ b/suixinkanTests/TravelAlbumDetailViewControllerTests.swift @@ -328,6 +328,26 @@ final class TravelAlbumDetailViewControllerTests: XCTestCase { XCTAssertEqual(highResolutionButton.configuration?.title, "查看高清图") XCTAssertEqual(segmentedControl.numberOfSegments, 3) XCTAssertEqual(segmentedControl.selectedSegmentIndex, 0) + XCTAssertFalse(segmentedControl.apportionsSegmentWidthsByContent) + XCTAssertEqual(segmentedControl.selectedSegmentTintColor, UIColor.white.withAlphaComponent(0.2)) + XCTAssertEqual( + segmentedControl.titleTextAttributes(for: .normal)?[.foregroundColor] as? UIColor, + UIColor.white.withAlphaComponent(0.7) + ) + XCTAssertEqual( + segmentedControl.titleTextAttributes(for: .selected)?[.foregroundColor] as? UIColor, + UIColor.white + ) + XCTAssertNil(segmentedControl.backgroundImage(for: .selected, barMetrics: .default)) + XCTAssertNil( + segmentedControl.dividerImage( + forLeftSegmentState: .normal, + rightSegmentState: .normal, + barMetrics: .default + ) + ) + XCTAssertEqual(segmentedControl.bounds.size, CGSize(width: 180, height: 32)) + XCTAssertGreaterThanOrEqual(highResolutionButton.frame.minX - segmentedControl.frame.maxX, 12) XCTAssertEqual(backButton.bounds.size, CGSize(width: 44, height: 44)) XCTAssertNil(backButton.configuration?.baseBackgroundColor) XCTAssertEqual(actionStack.spacing, 10)