Skip to content

Commit c88d5e2

Browse files
committed
Create HeightConstraintOverlayTranslationControllerTests
1 parent d50800c commit c88d5e2

File tree

3 files changed

+367
-4
lines changed

3 files changed

+367
-4
lines changed

OverlayContainer.xcodeproj/project.pbxproj

+4
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
E79AE426262F40A800BFFBF3 /* ScrollViewEmulator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E79AE41E262F40A000BFFBF3 /* ScrollViewEmulator.swift */; };
5454
E79AE42F2630282800BFFBF3 /* PanGestureOverlayTranslationDriverTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E79AE4292630282400BFFBF3 /* PanGestureOverlayTranslationDriverTests.swift */; };
5555
E79AE438263029AE00BFFBF3 /* FakeOverlayTranslationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E79AE4322630286F00BFFBF3 /* FakeOverlayTranslationController.swift */; };
56+
E79AE443263033F200BFFBF3 /* HeightConstraintOverlayTranslationControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E79AE43B26302EEA00BFFBF3 /* HeightConstraintOverlayTranslationControllerTests.swift */; };
5657
E79D75E126035ED900C942F7 /* Quick.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = E79D75DF26035ED900C942F7 /* Quick.xcframework */; };
5758
E79D75E226035ED900C942F7 /* Nimble.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = E79D75E026035ED900C942F7 /* Nimble.xcframework */; };
5859
E7A6A3AC24460D1A00E51F7A /* OverlayContainerSheetDismissalPolicyTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7A6A3AA24460B5E00E51F7A /* OverlayContainerSheetDismissalPolicyTest.swift */; };
@@ -127,6 +128,7 @@
127128
E79AE41E262F40A000BFFBF3 /* ScrollViewEmulator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScrollViewEmulator.swift; sourceTree = "<group>"; };
128129
E79AE4292630282400BFFBF3 /* PanGestureOverlayTranslationDriverTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PanGestureOverlayTranslationDriverTests.swift; sourceTree = "<group>"; };
129130
E79AE4322630286F00BFFBF3 /* FakeOverlayTranslationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FakeOverlayTranslationController.swift; sourceTree = "<group>"; };
131+
E79AE43B26302EEA00BFFBF3 /* HeightConstraintOverlayTranslationControllerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HeightConstraintOverlayTranslationControllerTests.swift; sourceTree = "<group>"; };
130132
E79D75DF26035ED900C942F7 /* Quick.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = Quick.xcframework; path = Carthage/Build/Quick.xcframework; sourceTree = "<group>"; };
131133
E79D75E026035ED900C942F7 /* Nimble.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = Nimble.xcframework; path = Carthage/Build/Nimble.xcframework; sourceTree = "<group>"; };
132134
E7A6A3AA24460B5E00E51F7A /* OverlayContainerSheetDismissalPolicyTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OverlayContainerSheetDismissalPolicyTest.swift; sourceTree = "<group>"; };
@@ -283,6 +285,7 @@
283285
E79AE40B262F094600BFFBF3 /* RushingForwardTargetNotchPolicyTests.swift */,
284286
E79AE414262F12DF00BFFBF3 /* ScrollViewOverlayTranslationDriverTests.swift */,
285287
E79AE4292630282400BFFBF3 /* PanGestureOverlayTranslationDriverTests.swift */,
288+
E79AE43B26302EEA00BFFBF3 /* HeightConstraintOverlayTranslationControllerTests.swift */,
286289
E78485C52201E66500DE64C3 /* Info.plist */,
287290
);
288291
path = Tests;
@@ -474,6 +477,7 @@
474477
E79AE41A262F12E800BFFBF3 /* ScrollViewOverlayTranslationDriverTests.swift in Sources */,
475478
E79AE42F2630282800BFFBF3 /* PanGestureOverlayTranslationDriverTests.swift in Sources */,
476479
E79AE438263029AE00BFFBF3 /* FakeOverlayTranslationController.swift in Sources */,
480+
E79AE443263033F200BFFBF3 /* HeightConstraintOverlayTranslationControllerTests.swift in Sources */,
477481
E78486542201EA9400DE64C3 /* OverlayNotchHeightTest.swift in Sources */,
478482
);
479483
runOnlyForDeploymentPostprocessing = 0;

Source/Classes/Internal/HeightContraintOverlayTranslationController.swift

+7-4
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ class HeightConstraintOverlayTranslationController: OverlayTranslationController
5151
private var deferredTranslation: TranslationMetaData?
5252
private var deferredTranslationCompletionBlocks: [TranslationCompletionBlock] = []
5353

54+
private var translationStartHeight: CGFloat = 0.0
5455
private var translationEndNotchHeight: CGFloat {
5556
return configuration.heightForNotch(at: translationEndNotchIndex)
5657
}
@@ -103,6 +104,7 @@ class HeightConstraintOverlayTranslationController: OverlayTranslationController
103104
let velocity = deferredTranslation.velocity
104105
let isAnimated = deferredTranslation.isAnimated
105106
translationEndNotchIndex = targetIndex
107+
let targetHeight = configuration.heightForNotch(at: translationEndNotchIndex)
106108
if isAnimated {
107109
let height = translationHeight
108110
let context = ConcreteOverlayContainerContextTransitioning(
@@ -113,7 +115,7 @@ class HeightConstraintOverlayTranslationController: OverlayTranslationController
113115
overlayTranslationHeight: height,
114116
velocity: velocity,
115117
targetNotchIndex: translationEndNotchIndex,
116-
targetTranslationHeight: translationEndNotchHeight,
118+
targetTranslationHeight: targetHeight,
117119
notchHeightByIndex: configuration.notchHeightByIndex,
118120
reachableIndexes: enabledNotchIndexes()
119121
)
@@ -134,11 +136,11 @@ class HeightConstraintOverlayTranslationController: OverlayTranslationController
134136
completions.forEach { $0() }
135137
})
136138
delegate?.translationController(self, willTranslateOverlayWith: coordinator)
137-
updateConstraint(toHeight: translationEndNotchHeight)
139+
updateConstraint(toHeight: targetHeight)
138140
animator.startAnimation()
139141
lastScheduledTranslationAnimator = animator
140142
} else {
141-
translateOverlayWithoutAnimation(toHeight: translationEndNotchHeight, isDragging: false)
143+
translateOverlayWithoutAnimation(toHeight: targetHeight, isDragging: false)
142144
completions.forEach { $0() }
143145
delegate?.translationController(self, didMoveOverlayToNotchAt: targetIndex)
144146
}
@@ -200,13 +202,14 @@ class HeightConstraintOverlayTranslationController: OverlayTranslationController
200202

201203
func startOverlayTranslation() {
202204
isDragging = false
205+
translationStartHeight = translationHeight
203206
}
204207

205208
func dragOverlay(withOffset offset: CGFloat, usesFunction: Bool) {
206209
guard let viewController = overlayViewController else { return }
207210
let maximumHeight = maximumReachableNotchHeight()
208211
let minimumHeight = minimumReachableNotchHeight()
209-
let translation = translationEndNotchHeight - offset
212+
let translation = translationStartHeight - offset
210213
let height: CGFloat
211214
if usesFunction {
212215
let parameters = ConcreteOverlayTranslationParameters(

0 commit comments

Comments
 (0)