From e433b0e1ba72ec88f58012ee9b9c9266d6b1356c Mon Sep 17 00:00:00 2001 From: Levi Eggert Date: Wed, 29 Jan 2025 12:52:16 -0500 Subject: [PATCH 1/2] Ensure fixed spacer is included when calculating height of children and item spacing when relaying out for spacer view. --- .../Views/ContentStack/MobileContentStackView.swift | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/godtools/App/Services/Renderer/Views/MobileContent/Views/ContentStack/MobileContentStackView.swift b/godtools/App/Services/Renderer/Views/MobileContent/Views/ContentStack/MobileContentStackView.swift index 266830e7c..086684721 100644 --- a/godtools/App/Services/Renderer/Views/MobileContent/Views/ContentStack/MobileContentStackView.swift +++ b/godtools/App/Services/Renderer/Views/MobileContent/Views/ContentStack/MobileContentStackView.swift @@ -473,9 +473,17 @@ extension MobileContentStackView { for childView in childViews { - let isSpacerView: Bool = childView is MobileContentSpacerView + let isAutoSpacer: Bool + let spacerView: MobileContentSpacerView? = childView as? MobileContentSpacerView - if !isSpacerView && childView.visibilityState != .gone { + if let spacerView = spacerView, autoSpacerViews.firstIndex(of: spacerView) != nil { + isAutoSpacer = true + } + else { + isAutoSpacer = false + } + + if !isAutoSpacer && childView.visibilityState != .gone { heightOfChildrenAndItemSpacing += childView.frame.size.height } From e31c28ac51aedd5d1f98eaeb94305d2dae5304c1 Mon Sep 17 00:00:00 2001 From: Levi Eggert Date: Wed, 29 Jan 2025 14:25:35 -0500 Subject: [PATCH 2/2] Add computed property to check if spacer isAuto --- .../Views/ContentStack/MobileContentStackView.swift | 4 ++-- .../Views/Spacer/MobileContentSpacerView.swift | 4 ++++ .../Views/Spacer/MobileContentSpacerViewModel.swift | 10 ++++++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/godtools/App/Services/Renderer/Views/MobileContent/Views/ContentStack/MobileContentStackView.swift b/godtools/App/Services/Renderer/Views/MobileContent/Views/ContentStack/MobileContentStackView.swift index 086684721..ae1e25f4c 100644 --- a/godtools/App/Services/Renderer/Views/MobileContent/Views/ContentStack/MobileContentStackView.swift +++ b/godtools/App/Services/Renderer/Views/MobileContent/Views/ContentStack/MobileContentStackView.swift @@ -476,8 +476,8 @@ extension MobileContentStackView { let isAutoSpacer: Bool let spacerView: MobileContentSpacerView? = childView as? MobileContentSpacerView - if let spacerView = spacerView, autoSpacerViews.firstIndex(of: spacerView) != nil { - isAutoSpacer = true + if let spacerView = spacerView { + isAutoSpacer = spacerView.isAuto } else { isAutoSpacer = false diff --git a/godtools/App/Services/Renderer/Views/MobileContent/Views/Spacer/MobileContentSpacerView.swift b/godtools/App/Services/Renderer/Views/MobileContent/Views/Spacer/MobileContentSpacerView.swift index 014ab399e..d9ec5e57e 100644 --- a/godtools/App/Services/Renderer/Views/MobileContent/Views/Spacer/MobileContentSpacerView.swift +++ b/godtools/App/Services/Renderer/Views/MobileContent/Views/Spacer/MobileContentSpacerView.swift @@ -44,6 +44,10 @@ class MobileContentSpacerView: MobileContentView { fatalError("init(coder:) has not been implemented") } + var isAuto: Bool { + return viewModel.isAuto + } + var height: MobileContentSpacerHeight { return viewModel.height } diff --git a/godtools/App/Services/Renderer/Views/MobileContent/Views/Spacer/MobileContentSpacerViewModel.swift b/godtools/App/Services/Renderer/Views/MobileContent/Views/Spacer/MobileContentSpacerViewModel.swift index dbb2bcdd9..255cef52d 100644 --- a/godtools/App/Services/Renderer/Views/MobileContent/Views/Spacer/MobileContentSpacerViewModel.swift +++ b/godtools/App/Services/Renderer/Views/MobileContent/Views/Spacer/MobileContentSpacerViewModel.swift @@ -30,4 +30,14 @@ class MobileContentSpacerViewModel: MobileContentViewModel { super.init(baseModel: spacerModel, renderedPageContext: renderedPageContext, mobileContentAnalytics: mobileContentAnalytics) } + + var isAuto: Bool { + + switch spacerModel.mode { + case .auto_: + return true + default: + return false + } + } }