Skip to content

Releases: aheze/Popovers

Disappearance Transition Animation Fix

29 Apr 02:47
Compare
Choose a tag to compare

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
    }
}

Fixes #25, #27, and #33.

Fix popover model responder chain crash

27 Apr 03:56
Compare
Choose a tag to compare

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.

06 Feb 17:54
Compare
Choose a tag to compare

Menus! It's like the system menu but more customizable, and supports iOS 13 too!

  • Replaced String with AnyHashable for more flexibility in Attributes.Tag.
  • Fixed a retain cycle in Popover.Context.
  • Fixed some system animations not working when .popover was attached to NavigationView.
  • This is a semi-breaking change — but just replace PopoverTemplates with Popovers.Templates.
Popovers.Menu.mp4

VoiceOver Support + Direct Embedding

18 Jan 05:30
Compare
Choose a tag to compare

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.
Popovers 1 2 0

Thanks again to @ShezHsky for the contributions!

Responder-Based Model

05 Jan 17:16
Compare
Choose a tag to compare

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 with Popover 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

28 Dec 04:36
Compare
Choose a tag to compare

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

25 Dec 19:52
Compare
Choose a tag to compare

Removed unused assets and reorganized the repo.

Initial Release Part 2

25 Dec 08:48
Compare
Choose a tag to compare

Forgot to update Cocoapods. This is why you should use Swift Package Manager, everyone!

Initial Release

25 Dec 03:59
Compare
Choose a tag to compare

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.