LeoNatan/LNPopupController
 Watch   
 Star   
 Fork   
12 days ago
LNPopupController

v4.5.9

  • Disallow content transition when opening before a popup bar was presented
  • Fixed incorrect content view frame calculation in certain conditions (#645)
  • UINavigationController layout fixes
15 days ago
LNPopupController

v4.5.8

Popup bar will now present correctly in minimized state when needed (#643).

19 days ago
LNPopupController

v4.5.7

  • Fixed a legacy Catalyst layout issue
21 days ago
LNPopupController

v4.5.6.1

  • .automatic is now the default popup interaction style
    • The automatic interaction style uses snap interaction style for opening the popup and drag interaction style for closing
    • Automatic resembles Apple's Music interaction styles and retains all popup content transition support already in place
    • To restore the previous interaction style, set myPopupPresentingController.popupInteractionStyle to .snap
  • iOS 27 minimization improvements
  • Improved handling of drag/automatic interaction dismiss behavior
  • Progress view layout improvements on Mac Catalyst
  • Improved automatic popup content transition image discovery to include child controllers
24 days ago
LNPopupController

v4.5.6

  • .automatic is now the default popup interaction style
    • The automatic interaction style uses snap interaction style for opening the popup and drag interaction style for closing
    • Automatic resembles Apple's Music interaction styles and retains all popup content transition support already in place
    • To restore the previous interaction style, set myPopupPresentingController.popupInteractionStyle to .snap
  • iOS 27 minimization improvements
  • Improved handling of drag/automatic interaction dismiss behavior
  • Progress view layout improvements on Mac Catalyst
  • Improved automatic popup content transition image discovery to include child controllers
2026-08-11 05:59:34
LNPopupController

v4.5.5

Fixed a crash in iOS 27 beta 5

2026-08-03 03:59:30
LNPopupController

v4.5.4

  • Implemented the automatic interaction style

    • The automatic interaction style lets the system handle interactions, and may choose different interaction styles for opening and closing the popup
    • Not yet enabled by default; set popupPresentationContainerController.popupInteractionStyle = .automatic to enable
  • Catalyst improvements

2026-08-02 15:29:46
LNPopupController

v4.5.3

  • Enabled popupBarAvoidsPrimaryColumn and popupOpensOverSplitViewController by default on all device types
    • To revert to the previous behavior, set them to false on the respective popup presentation container controller
  • popupBarAvoidsPrimaryColumn and popupOpensOverSplitViewController are no longer limited to iOS 26 or 27
  • Reworked bar and content view close button metrics on iOS 27
    • Bar metrics gated behind inheritsBottomBarMetrics, which is enabled by default
  • Some layout improvements
  • Fixed compiler warnings for really old iOS versions (iOS 13..<15)
2026-07-26 09:38:03
LNPopupController

v4.5.2

This is a very big release, with many improvements.

Mac iPad

  • Many layout improvements to the popup bar and how it handles the countless variations of bar buttons
  • Fixes to complex RTL layouts
  • Catalyst and iPad are now much better supported, with layouts that were previously not possible
    • The LNPopupItem.leadingBarButtonItems and LNPopupItem.trailingBarButtonItems APIs have been undeprecated and it is now possible to place leading and trailing buttons on any bar style
    • The LNPopupItem.barButtonItems will continue to place items at the trailing edge; however, if you were relying on the previous behaviur, where LNPopupItem.leadingBarButtonItems would be placed in the trailing items on floating bars, this is no longer the case
  • If too many buttons are placed in a bar item and there is no space for the image and/or titles, the popup bar will hide elements to make space available for buttons
    • This is especially important in freely resizeable environments, such as iPads, Mac windows and … future iPhone devices
    • Use the new LNPopupBar.effectiveContentSize API to inspect the effect size of the popup bar content and reduce the number of buttons depending on available space
  • Escape key now closes the popup in most scene environments
    • Some more complex scenes cannot be supported since the popup might be opened in a controller that is not in the responder chain
    • In these cases, route the keys yourself or make the view controller the first responder
  • Catalyst now has first-class support and a new example project
  • New APIs introduced to better support split view controllers on large devices
    • UISplitViewController.popupBarAvoidsPrimaryColumn API has been introduced to better supprot environments where a popup is presented with the split view controller as the popup presentation controller
      • When enabled, the system will attempt to avoid the primary split and move the popup bar out of the way
      • The popup will continue to open over the entire split view controller’s bounds
      • Enabed by default
    • UIViewController.popupOpensOverSplitViewController API has been introduced to better support environments where a popup is presented by a popup presentation controller that is part of a split view controller scene
      • When enabled, the system will open the popup over the entire split view controller’s view bounds rather than only within the specific split
      • This is enabled by default on Catalyst but disabled on iOS (to preserve previous behavior)
      • The popup bar will remain within the containing view controller’s bounds
    • The two new APIs can result in a similar looking behavior from the user’s standpoint, but offer different benefits and tradeoffs; consider first presenting your popup bar over the split view controller
2026-07-25 17:06:02
LNPopupController

v4.5.5

Continued improvements to layout and transitions


Release notes from recent updates:

This is a very big release, with many improvements.

Mac iPad

  • Many layout improvements to the popup bar and how it handles the countless variations of bar buttons
  • Fixes to complex RTL layouts
  • Catalyst and iPad are now much better supported, with layouts that were previously not possible
    • The LNPopupItem.leadingBarButtonItems and LNPopupItem.trailingBarButtonItems APIs have been undeprecated and it is now possible to place leading and trailing buttons on any bar style
    • The LNPopupItem.barButtonItems will continue to place items at the trailing edge; however, if you were relying on the previous behaviur, where LNPopupItem.leadingBarButtonItems would be placed in the trailing items on floating bars, this is no longer the case
  • If too many buttons are placed in a bar item and there is no space for the image and/or titles, the popup bar will hide elements to make space available for buttons
    • This is especially important in freely resizeable environments, such as iPads, Mac windows and … future iPhone devices
    • Use the new LNPopupBar.effectiveContentSize API to inspect the effect size of the popup bar content and reduce the number of buttons depending on available space
  • Escape key now closes the popup in most scene environments
    • Some more complex scenes cannot be supported since the popup might be opened in a controller that is not in the responder chain
    • In these cases, route the keys yourself or make the view controller the first responder
  • Catalyst now has first-class support and a new example project
  • New APIs introduced to better support split view controllers on large devices
    • UISplitViewController.popupBarAvoidsPrimaryColumn API has been introduced to better supprot environments where a popup is presented with the split view controller as the popup presentation controller
      • When enabled, the system will attempt to avoid the primary split and move the popup bar out of the way
      • The popup will continue to open over the entire split view controller’s bounds
      • Enabed by default
    • UIViewController.popupOpensOverSplitViewController API has been introduced to better support environments where a popup is presented by a popup presentation controller that is part of a split view controller scene
      • When enabled, the system will open the popup over the entire split view controller’s view bounds rather than only within the specific split
      • This is enabled by default on Catalyst but disabled on iOS (to preserve previous behavior)
      • The popup bar will remain within the containing view controller’s bounds
    • The two new APIs can result in a similar looking behavior from the user’s standpoint, but offer different benefits and tradeoffs; consider first presenting your popup bar over the split view controller