一、简介
Context Menu,这是 WatchKit 独有的交互,在 iOS 中并不存在。在任意一个 WKInterfaceController 界面中,长按手表屏幕,如果当前WKInterfaceController中存在上下文菜单的话,就会尝试呼出找这个界面对应的 Context Menu。这个菜单最多可以提供四个按钮,用来针对当前环境向用户征询操作。因为手表屏幕有限,在信息显示的同时再放一些交互按钮是挺不现实的一件事情,也会很丑。而上下文菜单很好地解决了这个问题,相信长按呼出交互菜单这个操作会成为今后 Watch App 的一个很标准的交互操作。
添加 Context Menu 非常简单,在 StoryBoard 里向 WKInterfaceController 中添加一个 Menu,并在这个 Menu 里添加对应的 MenuItem 就行了。 在 WKInterfaceController 我们也有对应的 API 来在运行时根据上下文环境进行 MenuItem 的添加 (这是少数几个允许我们在运行时添加元素的方法之一)。
二、如何添加 menu
如下图如何添加在Storyboard中增加Menu,Menu只能增加四个。
2.png
三、代码中添加menu
通常通过代码添加控件时,本人都会先去阅读其API,只有知道其方法的接口和属性,如下将介绍其方法和代码添加menu
如下是代码增加menu方法,首先加载Storyboard中的menu,如果Storyboard中的menu 大于四个,就不会加载控制器中的menu。
方法
//通过代码 加menu 图片,所有的参数,一定不能为空
//第一个参数: UIImage
//第二个参数: menu 标题
//第三个参数:点击事件
- (void)addMenuItemWithImage:(UIImage *)image title:(NSString *)title action:(
SEL)action; // all parameters must be non-nil
//通过代码 加menu 图片
//第一个参数:图片名
//第二个参数: menu 标题
//第三个参数:点击事件
- (void)addMenuItemWithImageNamed:(NSString *)imageName title:(NSString *)title action:(SEL)action;
//通过代码 加menu 图片,所有的参数,一定不能为空
//第一个参数: 系统中自带的icon
//第二个参数: menu 标题
//第三个参数:点击事件
- (void)addMenuItemWithItemIcon:(WKMenuItemIcon)itemIcon title:(NSString *)title action:(SEL)action;
//通过代码清除所有的menu
- (void)clearAllMenuItems;
用法
- (void)awakeWithContext:(id)context {
[super awakeWithContext:context];
// Configure interface objects here.
[self addMenuItemWithImageNamed:@"map-marker" title:@"我是第二个" action:@selector(clickAction)];
}
-(void)clickAction{
NSLog(@"点击");
}
四、注意
自定menu图片不是随便图片都可以的,否则menu不会显示图片,本人就碰到过类似问题。如下是来自官方文档。
用户可以操作Menus的交互事件,每一个交互事件要有图片和文字,Menu的文字被限制成两行,所以文字要短。Menu 图标是样板图片, alpha channel而不是用color channels定义它的形状,如下图的标准
- 线条用四个相素点或者更高保证图片清晰,图片的比例要与iWatch相协调。
- 用PNG格式的图片。
Over,May maker help us all!Thank you a lot!!
网友评论