Skip to content

Commit 181eace

Browse files
committed
Fix ScrollView frame size calculation (fixed layout bug, but still not perfect)
1 parent d88210d commit 181eace

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

Sources/SwiftCrossUI/Views/ScrollView.swift

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ public struct ScrollView<Content: View>: TypeSafeView, View {
6464
axes.contains(.horizontal) && contentSize.idealWidthForProposedHeight > proposedSize.x
6565
let hasVerticalScrollBar =
6666
axes.contains(.vertical) && contentSize.idealHeightForProposedWidth > proposedSize.y
67-
print(contentSize.idealHeightForProposedWidth)
6867

6968
let verticalScrollBarWidth = hasVerticalScrollBar ? scrollBarWidth : 0
7069
let horizontalScrollBarHeight = hasHorizontalScrollBar ? scrollBarWidth : 0
@@ -77,14 +76,20 @@ public struct ScrollView<Content: View>: TypeSafeView, View {
7776
scrollViewWidth = max(proposedSize.x, verticalScrollBarWidth)
7877
minimumWidth = verticalScrollBarWidth
7978
} else {
80-
scrollViewWidth = contentSize.size.x + verticalScrollBarWidth
79+
scrollViewWidth = min(
80+
contentSize.size.x + verticalScrollBarWidth,
81+
max(proposedSize.x, contentSize.minimumWidth + verticalScrollBarWidth)
82+
)
8183
minimumWidth = contentSize.minimumWidth + verticalScrollBarWidth
8284
}
8385
if axes.contains(.vertical) {
8486
scrollViewHeight = max(proposedSize.y, horizontalScrollBarHeight)
8587
minimumHeight = horizontalScrollBarHeight
8688
} else {
87-
scrollViewHeight = contentSize.size.y + horizontalScrollBarHeight
89+
scrollViewHeight = min(
90+
contentSize.size.y + horizontalScrollBarHeight,
91+
max(proposedSize.y, contentSize.minimumHeight + horizontalScrollBarHeight)
92+
)
8893
minimumHeight = contentSize.minimumHeight + horizontalScrollBarHeight
8994
}
9095

@@ -142,8 +147,6 @@ public struct ScrollView<Content: View>: TypeSafeView, View {
142147
finalResult = childResult
143148
}
144149

145-
print(finalResult.size)
146-
147150
return ViewUpdateResult(
148151
size: ViewSize(
149152
size: scrollViewSize,

0 commit comments

Comments
 (0)