Skip to content

Releases: lynnswap/TabBarMenu

v0.4.3

05 Feb 19:39
a7cc4c8

Choose a tag to compare

TabBarMenu v0.4.3

Improvements

  • Apply preview mode updates from updateUIViewController, reducing missed updates during SwiftUI view refreshes.

Documentation

  • Expand the README introduction with a clearer overview of supported APIs and the system More tab.

Full Changelog: v0.4.2...v0.4.3

v0.4.2

13 Jan 03:01
b51c34a

Choose a tag to compare

Added / Improved

  • Switch UITabBar item observation/selection handling to per-instance overrides backed by ObjC runtime hooks, avoiding global swizzling and keeping unrelated tab bars untouched.
  • Respect the current isa when layering UITabBar overrides, preserving existing subclasses.

Full Changelog: v0.4.1...v0.4.2

v0.4.1

02 Jan 09:36
9cd7e22

Choose a tag to compare

Bug Fixes

  • Call configureMenuPresentationFor when presenting the system More tab menu on tap, passing nil to match content delegate semantics.

Added / Improved

  • Make TabBarMenuPresentationDelegate configureMenuPresentationFor parameters optional (UITab? / UIViewController?).
  • Remove the unused forMoreTabIndex parameter from the More-tab placement helper.
  • Update README/demo and add tests for the nil More-tab presentation behavior.

Breaking Changes

  • Implementations of configureMenuPresentationFor must accept optional tab/viewController parameters.

Full Changelog: v0.4.0...v0.4.1

v0.4.0

02 Jan 07:28
d86112b

Choose a tag to compare

Added / Improved

  • Add tap-triggered menus for the system "More" tab via menuForMoreTabWith tabs / menuForMoreTabWith viewControllers; when provided, TabBarMenu suppresses the default More screen (long-press menus still work)
  • Split menu content vs presentation into TabBarMenuContentDelegate and TabBarMenuPresentationDelegate, with TabBarMenuDelegate combining both
  • Improve menu planning and RTL/LTR fallback ordering for tab bar item views
  • Add the TabBarDemo sample app and update README/demo support for the new More-tab behavior

Breaking Changes / Migration

  • TabBarMenuViewControllerDelegate is deprecated; adopt TabBarMenuDelegate and implement tabBarController(_:viewController:) instead
  • TabBarMenuDelegate now relies on Objective-C optional method discovery; conforming types should be Objective-C compatible (e.g., subclass NSObject)

Full Changelog: v0.3.0...v0.4.0

v0.3.0

28 Dec 15:26
9b10c8d

Choose a tag to compare

Added / Improved

  • Add updateTabBarMenu(_:) to support updating the visible menu

Full Changelog: v0.2.0...v0.3.0

v0.2.0

26 Dec 06:25
8778866

Choose a tag to compare

Added / Improved

  • Add TabBarMenuViewControllerDelegate to support viewControllers-based tab bars
  • Add maxVisibleTabCount to control behavior when the system More tab appears (More tab is treated as nil)
  • Rename menu presentation API to configureMenuPresentationFor and allow configuring menuHostButton
  • Observe UITabBar.items changes to keep long-press gestures in sync
  • Refresh SwiftUI previews (supports UITab and UITabBarItem, with search tab and add/remove)

Breaking Changes / Migration

  • tabBarController(_:tab:) now receives UITab? (nil for the system More tab)
  • anchorPlacementFor renamed to configureMenuPresentationFor
  • Default menu placement now differs by iOS version: .inside on iOS 26+, .above on earlier versions

Full Changelog

Full Changelog: v0.1.1...v0.2.0

v0.1.1 — Fix tab updates handling

25 Dec 05:06
091b050

Choose a tag to compare

Bug Fixes

  • Fixes tab menu refresh when tabs are updated.

Full Changelog: v0.1.0...v0.1.1

v0.1.0

24 Dec 16:23

Choose a tag to compare

v0.1.0

Initial release. Adds long-press menus (UIMenu) to UITabBarController tabs on iOS 18+.

Highlights

  • Enable tab long-press menus by setting menuDelegate
  • Provide per-tab UIMenu via TabBarMenuDelegate (nil to disable)
  • Configure long-press duration with menuConfiguration.minimumPressDuration (default 0.35s)
  • Control anchor placement with TabBarMenuAnchorPlacement (inside / above / custom / manual)

Requirements

  • iOS 18.0+
  • Swift 6.2