Skip to content

Commit

Permalink
Merge pull request #68 from dscyrescotti/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
dscyrescotti authored Dec 26, 2022
2 parents b1b963c + 886c17e commit ba904dc
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 24 deletions.
2 changes: 0 additions & 2 deletions Demo/Demo/App/MainView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,11 @@ struct MainView: View {
}) {
Label("CarouselStack", systemImage: "sparkles.rectangle.stack.fill")
}
#if os(iOS)
Button(action: {
route = .shuffleDeck
}) {
Label("ShuffleDeck", systemImage: "photo.on.rectangle.angled")
}
#endif
} header: {
Text("ShuffleStack")
}
Expand Down
30 changes: 13 additions & 17 deletions Sources/CarouselStack/View/CarouselStack+Sliding.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@ extension CarouselStack {
self.autoSliding = true
self.direction = direction
performMovingToMiddle()
DispatchQueue.main.asyncAfter(deadline: .now() + duration(0.12)) {
DispatchQueue.main.asyncAfter(deadline: .now() + 0.21) {
self.performRestoring()
}
}

/// A method that mimics sliding behaviour to slide view to left or right for the purpose of programmatic sliding.
internal func performMovingToMiddle() {
let maXSwipeDistance = size.width * 0.6
withAnimation(animation.timing(duration: duration(0.12))) {
let maXSwipeDistance = size.width * 0.75
withAnimation(animation.timing(duration: 0.21)) {
switch direction {
case .left:
xPosition = maXSwipeDistance
Expand Down Expand Up @@ -44,15 +44,13 @@ extension CarouselStack {
)
index = newIndex
direction = .right
notifyListener(context: context)
DispatchQueue.main.asyncAfter(deadline: .now() + (autoSliding ? 0 : 0.005)) {
withAnimation(animation.timing(duration: duration(0.12))) {
xPosition = 0
autoSliding = false
}
withAnimation(animation.timing(duration: duration(0.07))) {
xPosition = 0
autoSliding = false
}
notifyListener(context: context)
} else {
withAnimation(animation.timing(duration: duration(0.1))) {
withAnimation(animation.timing(duration: duration(0.05))) {
xPosition = 0
}
}
Expand All @@ -73,15 +71,13 @@ extension CarouselStack {
)
index = newIndex
direction = .left
notifyListener(context: context)
DispatchQueue.main.asyncAfter(deadline: .now() + (autoSliding ? 0 : 0.005)) {
withAnimation(animation.timing(duration: duration(0.12))) {
xPosition = 0
autoSliding = false
}
withAnimation(animation.timing(duration: duration(0.07))) {
xPosition = 0
autoSliding = false
}
notifyListener(context: context)
} else {
withAnimation(animation.timing(duration: duration(0.1))) {
withAnimation(animation.timing(duration: duration(0.05))) {
xPosition = 0
}
}
Expand Down
2 changes: 1 addition & 1 deletion Sources/CarouselStack/View/CarouselStack.swift
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ public struct CarouselStack<Data: RandomAccessCollection, Content: View>: View {
.disabled(autoSliding)
.onChange(of: isActiveGesture) { value in
if !isActiveGesture {
DispatchQueue.main.asyncAfter(deadline: .now() + 0.01) {
DispatchQueue.main.asyncAfter(deadline: .now() + 0.02) {
performRestoring()
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ final class CarouselStackShufflingTests: BaseTestCase {
let exp2 = view.inspection.inspect(after: 0.4) { view in
let sut = try view.actualView()
let width = 300 - sut.padding * 2
let maxSlideDistance = sut.size.width * 0.6
let maxSlideDistance = sut.size.width * 0.75
XCTAssertEqual(sut.index, 6)
XCTAssertEqual(sut.xPosition, maxSlideDistance)
XCTAssertEqual(sut.direction, .left)
Expand Down Expand Up @@ -73,7 +73,7 @@ final class CarouselStackShufflingTests: BaseTestCase {
let exp2 = view.inspection.inspect(after: 0.4) { view in
let sut = try view.actualView()
let width = 300 - sut.padding * 2
let maxSlideDistance = sut.size.width * 0.6
let maxSlideDistance = sut.size.width * 0.75
XCTAssertEqual(sut.index, 0)
XCTAssertEqual(sut.xPosition, -maxSlideDistance)
XCTAssertEqual(sut.direction, .right)
Expand Down Expand Up @@ -121,7 +121,7 @@ final class CarouselStackShufflingTests: BaseTestCase {
let exp2 = view.inspection.inspect(after: 0.4) { view in
let sut = try view.actualView()
let width = 300 - sut.padding * 2
let maxSlideDistance = sut.size.width * 0.6
let maxSlideDistance = sut.size.width * 0.75
XCTAssertEqual(sut.index, 6)
XCTAssertEqual(sut.xPosition, maxSlideDistance)
XCTAssertEqual(sut.direction, .left)
Expand Down Expand Up @@ -168,7 +168,7 @@ final class CarouselStackShufflingTests: BaseTestCase {
let exp2 = view.inspection.inspect(after: 0.4) { view in
let sut = try view.actualView()
let width = 300 - sut.padding * 2
let maxSlideDistance = sut.size.width * 0.6
let maxSlideDistance = sut.size.width * 0.75
XCTAssertEqual(sut.index, 0)
XCTAssertEqual(sut.xPosition, -maxSlideDistance)
XCTAssertEqual(sut.direction, .right)
Expand Down

0 comments on commit ba904dc

Please sign in to comment.