The markdown parsing is broken/disabled for release notes. Sorry about that, I'm chasing the source of a crash that's been bringing this website down for the last couple of days.
### New Features:
- Added KeyboardHeight environment value that updates with animation when the software keyboard appears and disappears in iOS
### Bugfixes
- SmartScrollView onScroll now reports correct edge values on view load.
### Bugfixes for `SmartScrollView`
- Content no longer changes id on device orientation change (this used to reset the state of everything inside)
- `SmartScrollView` will respond to most available size changes including device orientation changes and re-evaluate sizing correctly.
- `HFlow` and other `FULayout` views should now work correctly inside `SmartScrollView` without crashing.
- Added support for watchOS and tvOS
- Fixed a bug with LayoutFromFULayout where child views were not given the overall size as the proposal and would sometimes be larger than available space.
### Updated for iOS 17, macOS 14, and visionOS (beta) and added AccessoryInlineImage
- Added `AccessoryInlineImage` to adjust any image or symbol so that it can render in the accessory inline widget.
- Added `UIImage` extensions `scale()` and `scaledToFit()` to adjust images for accessory inline widget.
- Changed `WidgetSize` functions `sizeForCurrentDevice`, `sizeForiPhone`, `sizeForiPad`, and `sizeForWatch` to return nil if a specific size is not known for that widget. Previously they returned zero.
- Added watch widget sizes to `WidgetSize` and updated iPhone and iPad widget sizes.
iOS 17
- Fixed `SmartScrollView` so that `scrollBounceBehavior` works as expected in iOS 17
visionOS
- Added support for visionOS
- Deprecated `FlippingView`, `TwoSidedView` and `rotation3DEffect`(with back view) with perspective
- Added `TwoSidedVisionOSViewModifier` and `rotation3DEffect` (with back view) to match new visionOS rotation modifier. This modifier is still buggy most likely due to visionOS betas changing
# macOS support, FUViewThatFits, SwiftUI Layouts, FlippingView and more!
## New Features:
- Added macOS support
- `FUViewThatFits` - similar to SwiftUI ViewThatFits but works in older os versions)
- `FULayoutThatFits` - similar to `FULayoutThatFits` but instead picks between different layouts with the same content (and it supports animation).
- `HMasonry` and `VMasonry` now support both vertical and horizontal alignments.
- All `FULayout` parameters are now animatable
- SwiftUI `Layout` versions of `FULayout` are now possible. `HFlowLayout`, `VFlowLayout`, `HMasonryLayout`, and `VMansonryLayout` added.
- Any `FULayout` can quickly be made into a SwiftUI `Layout using the `LayoutFromFULayout` protocol.
- `LayoutThatFits` will pick the first `Layout` that fits with the same content (and it supports animation).
- Made `FULayoutColumn` and `FULayoutRow` public so others can use them in their own `FULayout`
- Replaced `Alignment` with new `FUAlignment` in `FULayout` views to allow support for the new `.justified` alignment.
- `TwoSidedViewModifier` added with a new `.rotation3DEffect()` method that takes a closure for a view to show on the back side of the view.
- `FlippingView` added. A two-sided view that can be flipped with taps or swipes.
- `WidgetSize` updated for latest devices
- Accessory widgets added to `WidgetSize` and `WidgetDemoFrame`
## Changes:
- `TabMenuView` renamed to `TabMenu`
- Reorganized folders grouping similar elements
## Removed:
- layout parameter removed from `HStackFULayout`, `VStackFULayout`, and `ZStackFULayout` as SwiftUI Layout was not exactly equivalent.
## Bugfixes
- Content offsets no longer use negative values for alignments. This ensures animations between alignments are handled correctly.
- Selecting tabs is much faster for `TabMenu`. The `reselect` option will only be slow if there is also a `doubleTap` option. This is necessary to detect the difference between the two actions.
**Full Changelog**: https://github.com/ryanlintott/FrameUp/compare/0.4.2...0.5.0
### New Features:
- Added FULayout protocol that can build layout views using either VariadicView or a built in .forEach function.
- Added custom layouts: HMasonry, VMasonry, VStackFULayout, HStackFULayout, and ZStackFULayout.
- Added a type-erasing AnyLayout.
- Added FlippingView and TwoSidedView.
- Added accessibility actions to TabMenuView actions for reselect and double tap.
### Changes and fixes:
- HFlow and VFlow have changed from views to FULayout and now support various alignments.
- Removed VGridMasonry (use VMasonry FULayout instead)
- Changed .rotationMatchingOrientation view modifier to AutoRotatingView.
- Fixed bugs in SmartScrollView
- Changed SmartScrollView optionalScrolling and shrinkToFit defaults to true.
- Changed WidgetRelativeShape for iOS 16 so that it no longer makes adjustments on iPads as Apple had fixed the bug that required it.
- Added widget sizes to align with Apple's latest size specifications.
- Fixed TabMenuView onReselect and onDoubleTap to use NamedAction instead of just a closure so they can support accessibility actions.
- Fixed TabMenuView onReselect so it won't trigger alongside onDoubleTap.
- Changed TabMenuView onDoubleTap so it only works on the selected tab.
- Removed FixWidgetPreviewAlignmentBug as it is no longer an issue in Xcode.
- Added rotationMatchingOrientation view modifier
- Added experimental VGridMasonry for Pinterest-style view arrangements.
Added .relativePadding() extension to View.
Bugfixes:
- Fixed crash due to example test
- Fixed availability issues on macOS