UIView
对象,试图模仿 http://sparrowmailapp.com/iphone.php 中使用的浮动控件的行为。控件出现在屏幕的右下角,并在触摸时展开菜单。请记住,我曾把这个控件作为一个简单的练习编写的,因此选项不是非常可定制,代码也不打算作为 最终版本。
它目前是为 *肖像* 方向设计的,可以放置在屏幕的底部或顶部。您可以添加一个 偏移 来避免与 UITabBar
、UINavigationBar
或其他类似的控件重叠。
要使其工作,您只需要将 文件包含在您打算使用此控件的地方,并以此方式创建其实例——通常,从一个 视图控制器 中创建。
QBKOverlayMenuView *qbkOverlayMenu = [[QBKOverlayMenuView alloc] initWithDelegate:self position:kQBKOverlayMenuViewPositionBottom];
[qbkOverlayMenu setParentView:[self view]];
[qbkOverlayMenu addButtonWithImage:[UIImage imageNamed:@"boton1.png"] index:0];
[qbkOverlayMenu addButtonWithImage:[UIImage imageNamed:@"boton2.png"] index:1];
[qbkOverlayMenu addButtonWithImage:[UIImage imageNamed:@"boton3.png"] index:2];
[qbkOverlayMenu addButtonWithImage:[UIImage imageNamed:@"boton4.png"] index:3];
setParentView:
方法表示 QBKOverlayMenuView 将放置的视图——通常,视图控制器的主视图。
有两种常量可用于表示控件的定位
kQBKOverlayMenuViewPositionBottom
:控制将定位在屏幕的右下角。kQBKOverlayMenuViewPositionTop
:控制将定位在屏幕的右上角。如果您需要控件在容器的边界之外出现——通常是为了不与某种 UITabBar
、UINavigationBar
…重叠——可以这样做
QBKOverlayMenuViewOffset offset;
offset.bottomOffset = 44;
offset.topOffset = 44;
QBKOverlayMenuView *qbkOverlayMenu = [[QBKOverlayMenuView alloc] initWithDelegate:self position:kQBKOverlayMenuViewPositionBottom offset:offset];
您只需使用 addButtonWithImage:index:
方法。然后,当按钮被触摸时,将带有被触摸按钮的 index
的消息 overlayMenuView:didActivateAdditionalButtonWithIndex:
发送到在 init 方法中指定的代理。
- (void)overlayMenuView:(QBKOverlayMenuView *)overlayMenuView didActivateAdditionalButtonWithIndex:(NSInteger)index
{
NSLog(@"Button touched with index: %d", index);
}
我已经附加了我创建的尝试模仿 Sparrow 中使用的那些图形。我只为提供的整个集合而不是 Sparrow 提供的整个集合创建了一个额外的图标。