ASJOverflowButton
在同时开发iOS和Android项目时可能会有一些有趣的挑战,特别是关于两个应用程序的外观和感觉。两个平台都有一些标准的控件,在另一个平台上不可用。例如:溢出菜单。这个库是UIBarButtonItem
的子类,您可以将它放在导航栏上,并在点击时显示溢出菜单。
安装
CocoaPods是安装此库的首选方式。将以下命令添加到您的Podfile
pod 'ASJOverflowButton'
使用方法
使用指定的初始化器创建按钮,如下所示
ASJOverflowButton *overflowButton = [[ASJOverflowButton alloc] initWithTarget:aController title:@"An optional title" image:anOptionalImage button:anOptionalButton items:_overflowItems];
self.navigationItem.rightBarButtonItem = overflowButton;
项目必须为ASJOverflowItem
类型。提供了构造方法来生成它们。只需要在初始化期间附加一个此类数组的实例。
ASJOverflowItem *item = [ASJOverflowItem itemWithName:itemName image:image backgroundColor:color];
有几个属性可以自定义溢出菜单的外观和感觉。
@property (nullable, strong, nonatomic) UIColor *menuBackgroundColor;
设置溢出菜单的背景颜色。默认为白色。
@property (nullable, strong, nonatomic) UIColor *itemTextColor;
设置菜单项的文本颜色。默认为黑色。
@property (nullable, strong, nonatomic) UIColor *itemHighlightedColor;
设置当按下的菜单项的背景颜色。默认为RGB(217, 217, 217)。
@property (nullable, strong, nonatomic) UIColor *borderColor;
设置菜单边框的颜色。默认为灰色。
@property (assign, nonatomic) CGFloat borderWidth;
设置菜单边框的宽度。默认为0。
@property (nullable, strong, nonatomic) UIFont *itemFont;
设置菜单项的字体。默认为系统字体,大小为17点。
@property (assign, nonatomic) BOOL hidesSeparator;
隐藏两个菜单项之间的分隔符。要使separatorInsets
属性生效,需要设置NO
。默认为YES
。
@property (assign, nonatomic) BOOL hidesShadow;
隐藏菜单周围的阴影。默认为NO
。
@property (assign, nonatomic) BOOL dimsBackground;
菜单显示时变暗背景。默认为NO
。
@property (assign, nonatomic) CGFloat dimmingLevel;
设置菜单显示时背景变暗的程度。只有当shouldDimBackground
设置为YES
时才生效。范围从0.0到1.0。默认为0.6。
@property (assign, nonatomic) CGFloat menuItemHeight;
设置单个溢出菜单项的高度。默认为40点。
@property (assign, nonatomic) CGFloat widthMultiplier;
设置菜单宽度与屏幕宽度的比率。可接受的范围是0.0到1.0。例如,如果您的屏幕宽度是320.0点,而'widthMultiplier'设置为0.5,则菜单宽度将是0.5 * 320.0 = 160点。默认为0.4。
@property (assign, nonatomic) SeparatorInsets separatorInsets;
设置两个菜单项之间的分隔符的左右内边距。只有当hidesSeparator
设置为'NO'时才生效。默认为(15.0f, 0.0f)。
@property (assign, nonatomic) MenuMargins menuMargins;
设置菜单与屏幕顶部、右部和底部边缘的间距。菜单总是出现在状态条下方。默认为5点。
@property (assign, nonatomic) MenuAnimationType menuAnimationType;
设置菜单显示的方式。有两种选项,淡入或从右上角缩放进入。默认为MenuAnimationTypeZoomIn
。
限制
只能显示在屏幕右上角的溢出菜单。然而,从1.2
版本开始,您可以调整menuMargins
属性以更改菜单位置。
待办事项
菜单在被点击屏幕外部时突然关闭应该在外部点击清除表格视图时关闭菜单允许创建带有标题的菜单有一种方法可以调整菜单的宽度- 也许有一种方法可以在左侧和右侧都显示菜单
- 底部渐变提示滚动
致谢
- 感谢Shashank Pali使菜单动画代码生效 - 读取关于它的博客文章
- 感谢Ken M. Haggerty添加新功能和逻辑
- 感谢Vishal Deshai帮助修复RTL问题
- 感谢Fuzzball帮助实现自定义按钮
- UITableView在不应这样做时将触摸事件传递给superview
- 能否更改NSLayoutConstraint的multiplier属性?
- 最有效的方法来抑制“未使用变量”警告是哪个?
授权
ASJOverflowButton
在MIT授权下提供。更多信息请参阅LICENSE文件。