AppleWatch开发入门五——菜单控件的使用

简介: AppleWatch开发入门五——菜单控件的使用

AppleWatch开发入门五——菜单控件的使用


一、简介


       菜单也是WatchOS中一个重要的交互方式,限于Watch的屏幕尺寸,若将所有用户交互控件都紧密的排列进展示的UI中,那样难免会使用户操作困难,也会影响界面布局的简洁美观。因此,WatchOS的菜单机制是一层覆盖在屏幕上的交互界面,有如下的特点:


1、菜单是内置于InterfaceController中的,不需显式处理,只需对齐菜单项进行添加设置。


2、菜单最多可以容乃四个选项按钮。


3、通过重按可以呼出和隐藏菜单。


二、创建菜单的两种方式


1、通过storyBoard创建


       在storyBoard中,我们可以将一个菜单控件拖入到interfaceController中:


image.png


在Menu中可以添加一些item,每个item都可以设置图片和文字:


image.png


图片的设置分为,自定义和系统两种,我们可以使用自己的图片作为菜单的图片,也可以使用系统为我们提供的一些图片,系统的图片参数是一个枚举,值如下:


public enum WKMenuItemIcon : Int {

 

   case Accept // checkmark

   case Add // '+'

   case Block // circle w/ slash

   case Decline // 'x'

   case Info // 'i'

   case Maybe // '?'

   case More // '...'

   case Mute // speaker w/ slash

   case Pause // pause button

   case Play // play button

   case Repeat // looping arrows

   case Resume // circular arrow

   case Share // share icon

   case Shuffle // swapped arrows

   case Speaker // speaker icon

   case Trash // trash icon

}

这些枚举中提供了一些我们常用的功能图标。


菜单按钮的触发方法,我们可以通过拖拽Action的方式来添加,在Xcode7的模拟器中,我们使用command+shift+2可以切换到重按模式,模拟器效果如下:


image.png


2、通过代码来添加菜单选项


       前面提到过,菜单是内含于InterfaceController中的一个控件,在Interface中我们可以调用一些方法来添加菜单按钮,相关方法如下:


   //添加一个菜单按钮,图片自定义

   public func addMenuItemWithImage(image: UIImage, title: String, action: Selector)

   public func addMenuItemWithImageNamed(imageName: String, title: String, action: Selector)

   //添加一个系统图片的按钮

   public func addMenuItemWithItemIcon(itemIcon: WKMenuItemIcon, title: String, action: Selector)

   //清除所有按钮

   public func clearAllMenuItems()

示例代码如下:


override func awakeWithContext(context: AnyObject?) {

       super.awakeWithContext(context)

   

       self.addMenuItemWithItemIcon(WKMenuItemIcon.Share, title: "分享", action:Selector("share"))

       self.addMenuItemWithItemIcon(WKMenuItemIcon.Decline, title: "取消", action: Selector("cancle"))

       self.addMenuItemWithItemIcon(WKMenuItemIcon.Add, title: "添加", action:Selector("add"))

   }


   func share(){

       print("分享")

   }

   func add(){

       print("add")

   }

   func cancle(){

     

   }

目录
相关文章
|
API 调度 语音技术
基于Qt的简易语音助手设计与实现
基于Qt的简易语音助手设计与实现
880 2
|
机器学习/深度学习 数据处理 云计算
算力介绍3
算力介绍3
1160 2
|
SQL Oracle Java
Java 生态圈中的嵌入式数据库,哪家强?(上)
嵌入式数据库一个很陌生的词汇,以前只是听说,但是没有真正使用过,今天小编和大家一起来揭开它的面纱。
1143 0
Java 生态圈中的嵌入式数据库,哪家强?(上)
|
9月前
|
人工智能 Java 编译器
Java:面向对象
本文介绍了Java编程中的核心概念,包括包的命名规范与自动导入机制、构造方法的特点与使用、`this`和`super`关键字的作用、继承的基本规则、访问权限的设置、封装的意义、多态的实现原理以及`static`关键字的用法。通过详细解析每个知识点,并结合代码示例,帮助读者深入理解Java面向对象编程的核心思想与实践技巧。内容适合初学者及进阶开发者学习参考。
221 0
|
消息中间件 测试技术 Kafka
使用ClickHouse集群的7个基本技巧
使用ClickHouse集群的7个基本技巧
449 1
|
机器学习/深度学习 人工智能 自然语言处理
280页PDF,全方位评估OpenAI o1,Leetcode刷题准确率竟这么高
【10月更文挑战第24天】近年来,OpenAI的o1模型在大型语言模型(LLMs)中脱颖而出,展现出卓越的推理能力和知识整合能力。基于Transformer架构,o1模型采用了链式思维和强化学习等先进技术,显著提升了其在编程竞赛、医学影像报告生成、数学问题解决、自然语言推理和芯片设计等领域的表现。本文将全面评估o1模型的性能及其对AI研究和应用的潜在影响。
413 1
ABB ACW6441390600000300900多驱动模块 DCS 600多驱动器
ABB ACW6441390600000300900多驱动模块 DCS 600多驱动器
181 1
ABB ACW6441390600000300900多驱动模块 DCS 600多驱动器
|
XML 数据可视化 NoSQL
【软件设计师备考 专题 】数据模型,ER图,第一范式、第二范式、第三范式
【软件设计师备考 专题 】数据模型,ER图,第一范式、第二范式、第三范式
412 0
|
文字识别 索引
Halcon 学习笔记七:文字识别案例
Halcon 学习笔记七:文字识别案例
409 0
|
存储 数据可视化 数据处理
ggalluvial | 冲击图/ 桑基图绘制
ggalluvial | 冲击图/ 桑基图绘制
866 0