Commit Graph
16 Commits
Author SHA1 Message Date
Shin Yamamoto 38359e25ad v2.0
* Core
    * Support bottom/left/right positioned panel.
    * Replace FloatingPanelPosition with FloatingPanelState
    * Redefine FloatingPanelPosition
    * Fix pan interaction of the intrinsic layout
    * Allow to modify a target position
    * Fix floating point problem
    * Use UIScrollView.adjustedContentInset by default
    * Add shouldDecelerate(to:)
    * Rename contentOrigin to contentOffsetForPinning
    * Improve initialLocation

* Introduce numeric springing
    * Support moving a panel with numeric springing
    * Update FloatingPanelBehavior
    * Remove {top,Bottom}InteractionBuffer from FloatingPanelLayout
    * Remove the move animator to be same as UIScrollView behavior
        * Add floatingPanelDidMove(_:) tests in calling move(to:animated:)
    * Update FloatingPanelControllerDelegate
        * Move {add,remove}PanelAnimator delegation

* Add FloatingPanelBehaviorAdapter
    * Modify access to `behavior` prop

* Update FloatingPanelLayout
    * Support bottom/left/right positioned panel.
    * Add anchoredPosition property
    * Introduce FloatingLayoutAnchor & FloatingPanelIntrinsicLayoutAnchor
    * Add FloatingPanelReferenceEdge
    * Rename FloatingPanelDefaultLayout to FloatingPanelBottomLayout

* Update FloatingPanelLayoutAdapter
    * Add LayoutAdapter.sortedDirectionalPositions
    * Reimplement positionY(for:)
    * Add edge{most,least}state
    * Add orderedStates
    * Add edge{Most,Least} properties in LayoutAdapter
    * Modify `bottomOverflow` value and rename it to `containerOverflow`
    * Modify access to `layout` prop

* Add FloatingPanelLayoutAnchoring/LayoutAnchor/IntrinsicLayoutAnchor
    * Add FloatingPanel{Intrinsic}LayoutAnchor tests

* Update FloatingPanelController
    * Add surfaceLocation
    * update addPanelToParent API
    * Update layout reloading logic
    * Rename updateLayout() to invalidateLayout()
    * Fix contentViewController access level

* Update FloatingPanelControllerDelegate
    * Add floatingPanelDidEndDragging(_ vc:willDecelerate:)
    * Update floatingPanelWillBeginDecelerating delegate method
    * Remove behavior delegate method
    * Reimplement the removal action
        * Use floatingPanel(_:shouldRemoveAt:with:) delegate

* Update SurfaceView
    * Support bottom/left/right positioned panel.
    * Add FloatingPanelSurfaceAppearance
    * Add SurfaceView.intrinsicContentSize
    * Rename FloatingPanelSurfaceView.add(contentView:)
    * GrabberHandle for bottom edge grabber
    * Rename GrabberHandleView to FloatingPanelGrabberView
    * Rename containerMargin & contentInsets to content{Margins,Padding}
    * Rename bottomOverflow to containerOverflow

* ObjC Support
    * Add @objc to FloatingPanelControllerDelegate
    * Add @objc to FloatingPanelController
    * Use @objc protocol FloatingPanelBehavior
    * Redefine FloatingPanelState for objc.

* Update Utils
    * Modify logger prefix
    * Update extensions for left/right positions

* Update unit tests
    * Update layout tests
    * Add test_surfaceView_{contentView,containerView}
    * Add test_positionY_top2bottom()
    * Add test_moveTo_bottomEdge()
    * Update test_warningRetainCycle()
    * Fix FloatingPanelControllerTests
    * Fix LayoutTests
    * Fix FloatingPanelStateTests
    * Fix FloatingPanelTest
2020-07-11 09:48:25 +09:00
Shin Yamamoto 2cf63838ae Drop preserveContentVCLayoutIfNeeded() 2020-07-11 09:48:25 +09:00
Shin Yamamoto aaeb752911 No need to recognize both of the pan gesture and dismiss gesuter of sheet modal 2020-05-30 10:11:12 +09:00
Shin Yamamoto 7bbc3d5910 fix the behavior in a sheet modal 2020-05-23 08:12:01 +09:00
Shin Yamamoto a09a0e9e32 fix the animation velocity's sign (#354)
Using a directional distance to calculate an animation velocity fixes an
issue where a panel's animation was wrong when a user swipes up a panel
at the top most position.
2020-05-16 09:18:59 +09:00
Shin Yamamoto 7d90458d99 Support the initial hidden position not including the supported positions (#345) 2020-04-29 14:20:49 +09:00
Federico Zanetello 8c24aa3fc9 fix api typo (#325)
fixes floatingPanel(_ vc: FloatingPanelController, contentOffsetForPinning) name
2020-02-29 13:18:09 +09:00
Shin Yamamoto 2a91145366 Fix breaking content offset of the tracked scroll view (#315)
* Convert the tracked scroll view frame to the surface coordinate space
2020-02-26 22:49:51 +09:00
Shin Yamamoto f5d72aa0a5 Add failure requirements for multiple panels (#322)
* add multi panel sample
2020-02-26 22:47:52 +09:00
Shin Yamamoto 65f67c98f4 Add floatingPanel(_:contentOffsetForPinning:) delegate method (#314)
* add floatingPanel(_:contentOffsetForPinning:)
* add 'Show NavigationController' sample
* fix the initial content offset in a navigation bar with  a large text
    The content offset preservation should be applied only when
    `FloatingPanelController.contentInsetAdjustmentBehavior` is `.always`.
    This is because the library user loses control of the initial offset.
2020-02-24 11:16:10 +09:00
Shin Yamamoto c64056ca7b Make floatingPanelDidEndDragging's velocity zero when it won't animate
Ideally, it's better to define a delegate method like
scrollViewDidEndDragging(_:willDecelerate:) in FloatingPanelControllerDelegate
to notify whether a panel will be decelerated or not.
However it's a broken change so I add this change as workaround.
The delegate method definition will be improved on v2.0.
2020-01-28 11:40:31 +09:00
Shin Yamamoto 269c3e29b5 Call floatingPanelDidEndDecelerating even if an animation interrupted 2020-01-27 16:50:16 +09:00
Shin Yamamoto 14011a5bc2 Fix grabber area behavior
The grabber area was not working expectedly.
2020-01-18 17:27:58 +09:00
Shin Yamamoto 23f2242c9a Fix a panel's move-up in dragging it down
This issue is that a panel moved up while dragging it
down if content offset of the tracking scroll view in
a content view controller was greater than its top interaction buffer.

Ref. #293
2020-01-18 17:26:38 +09:00
Shin Yamamoto f22f58212b Clean up lines with only white spaces 2019-11-19 18:37:52 +09:00
Shin Yamamoto 54ff1c360d Rename 'FloatingPanel' type for '.swiftinterface' issue
See also https://forums.swift.org/t/frameworkname-is-not-a-member-type-of-frameworkname-errors-inside-swiftinterface/28962
2019-11-19 18:37:44 +09:00