警告
UIMenuController
已从 iOS 16 中弃用。请使用UIEditMenuInteraction
代替。
MenuItemKit
为 UIMenuItem
提供图像和块(闭包)支持。
MenuItemKit
是一个 Swift 项目,但毫无疑问地支持 Objective-C。
将此仓库 URL 添加到您的 Swift 包依赖项。
pod 'MenuItemKit', '~> 4.0.0'
MenuItemKit
仓库添加为应用程序仓库的子模块。MenuItemKit.xcodeproj
拖放到应用程序的 Xcode 项目或工作区中。MenuItemKit.framework
添加到“Embedded Binaries(嵌入式二进制文件)”部分。如果您更喜欢使用 Carthage,请发起 pull request。
MenuItemKit
非常容易采用,它只提供 2 个 API
typealias MenuItemAction = (UIMenuItem) -> ()
extension UIMenuItem {
convenience init(title: String, image: UIImage?, action: MenuItemAction)
convenience init(title: String, action: MenuItemAction)
}
对于 Objective-C,MenuItemKit
出于安全原因提供了带有前缀的 API 名称
@interface UIMenuItem (SWIFT_EXTENSION(MenuItemKit))
- (nonnull instancetype)mik_initWithTitle:(NSString * _Nonnull)title image:(UIImage * _Nullable)image action:(MenuItemAction _Nonnull)action;
- (nonnull instancetype)mik_initWithTitle:(NSString * _Nonnull)title action:(MenuItemAction _Nonnull)action;
@end
只需使用上述 API 初始化 UIMenuItem
,并将它们设置为 UIMenuItemController
的 menuItems
。MenuItemKit
将负责其余部分,您无需在视图或视图控制器中添加任何与响应者链相关的代码。
查看 dome 项目(同时提供 Swift 和 Objective-C)以获取更多详细信息。
对于您无法控制的菜单项,您可以使用 static func installTo(responder: UIResponder, shouldShowForAction: @escaping (Selector, Bool) -> Bool = default)
来配置项目的可见性。请查看 AutoPopupMenuControllerDemo。
MenuItemKit
是在 MIT 许可证下发布的。简而言之,它是免版税的,但您必须在代码或软件分发中保留版权声明。