Releases: aheze/Popovers
Disappearance Transition Animation Fix
Finally fixed this really annoying bug.
These 5 lines of code messed up dismissal transitions and animations. Since it's an extension, it even affected apps with Popovers installed even when you didn't import Popovers
.
extension Transaction: Equatable {
public static func == (lhs: Transaction, rhs: Transaction) -> Bool {
lhs.animation == rhs.animation
}
}
Fix popover model responder chain crash
Just a minor update to fix this error:
[Popovers] - No
PopoverModel
present in responder chain ((self)) - has the source view been installed into a window? Please file a bug report (https://github.com/aheze/Popovers/issues).
I still wasn't able to get rid of this entirely, but for now I just made Popovers create a new PopoverModel
.
Menus! And bug fixes.
Menus! It's like the system menu but more customizable, and supports iOS 13 too!
- Replaced
String
withAnyHashable
for more flexibility inAttributes.Tag
. - Fixed a retain cycle in
Popover.Context
. - Fixed some system animations not working when
.popover
was attached toNavigationView
. - This is a semi-breaking change — but just replace
PopoverTemplates
withPopovers.Templates
.
Popovers.Menu.mp4
VoiceOver Support + Direct Embedding
Some much-needed additions and fixes. This is a non-breaking change.
- Presentation changes.
- Popovers no longer places an intermediary view controller at the top of the screen.
- Instead, popovers are directly embedded as subviews of the base
UIWindow
. - This minimizes interference with built-in presentation APIs.
- Software should be accessible. Popovers now comes with built-in VoiceOver support!
- A dismiss button can be automatically added when VoiceOver is on.
- The button is fully customizable, along with other traits, via
attributes.accessibility
.
- General improvements.
- Frame recalculations after a screen rotation are now much smoother.
- Popovers no longer steal focus from active controls like text fields.
- Sheets and popovers can be presented at the same time.
Thanks again to @ShezHsky for the contributions!
Responder-Based Model
Popovers now fully supports multiple windows and won't interfere with the status bar! This is a breaking change — for migrating, check out the guide. Thanks to @ShezHsky for the pull request.
- No more overlaying container window — popovers are now presented directly on the topmost view controller.
- No more static
Popovers
class — control the lifecycle withPopover
instance methods. - Popover models and frame tags are now tied to specific windows and stored in the
UIResponder
chain. - New
WindowReader
view for easily reading the hosting window in SwiftUI. - If inside a popover view or background, use
PopoverReader
+context.window
instead. - Set
context.isDraggingEnabled
to enable or disable dragging at any time.
Responder-Based.Model.mp4
Multi-Screen Support
Popovers now supports multiple screens side-by-side! This is a non-breaking change.
1.0.4.Multi-Screen.Support.mp4
Initial Release Part 3
Removed unused assets and reorganized the repo.
Initial Release Part 2
Forgot to update Cocoapods. This is why you should use Swift Package Manager, everyone!
Initial Release
Merry Christmas! This is the first release of Popovers.
- Present any view above your app's main content.
- Attach to source views or use picture-in-picture positioning.
- Supports multiple popovers at the same time with smooth transitions.
- Popovers are interactive and can be dragged to different positions.
- Highly customizable API that's super simple — just add
.popover
. - Written in SwiftUI with full SwiftUI and UIKit support.