WatchKit Storyboard攻略

2023-10-12 18:10
文章标签 攻略 storyboard watchkit

本文主要是介绍WatchKit Storyboard攻略,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

WatchKit Storyboard攻略(一)

目前的WatchKit只有用户界面的渲染是靠AppleWatch进行,本文的目的主要在于探索WatchKit界面部分的功能开发与小技巧,内容层次上偏基础。

我们现阶段能用到的WatchKit是不完全体,能定制的界面元素都在唯一的Storyboard文件里,但是仔细一看我们就发现,XCode6.2里Watch的Storyboard和iPhone里的完全是两码事,且可动态交互的内容极少。

但是也不要气馁,至少在界面元素的排版方面,比起iPhone用的传统Storyboard其实更加简便。

首先我们了解一下WatchApp的界面组成的基本概念。我们知道,WatchKit目前提供的三种Storyboard模板有WatchApp用的Main模板、瞥览的Glance模板与静态/动态通知模板。这里重点先看一下Main模板,其实它分为两个部分--标题栏与内容frame,对于42mm和38mm的Watch来说,其尺寸是有区别的,见图1与图2:

图1 42mmAppleWatch界面尺寸与分辨率

001.png

图2 38mmAppleWatch界面尺寸与分辨率

002.png

红色表示标题栏,我们目前唯一能做的似乎就是设定标题文本。

003.png

不过还好也可以通过在ViewController的代码里通过setTitle来动态改变标题内容,颜色也是可以通过Global Tint来改变的(见之前的翻译文章)。

黄色部分是我们可以真正掌控的部分,在ViewController的代码里可以通过contentFrame属性进行访问(小小的表盘被标题占用了那么多空间- -!)。

004.png

XCode里针对Storyboard剩余能设置的属性都是针对它的了!我们可以设置Background定义背景图,指定图的多种显示模式(默认都是ScaleToFill,好处后面说),并通过设置Animate为true来实现在背景上自动播放图片帧动画。Insets设置为Custom后可以设置视图上下左右留白的空间,默认值都是0。

下面就是本文重点部分了,还是以一个实际的应用场景讲一下更多控件元素的具体使用和排版技巧:

比如说我们要做一个手表程序的启动画面和菜单,构思如下图(程序名Logo部分应与顶部间距40px,与左右边缘需要保持间距20px,水平位置居中;2个菜单项宽度180px,也是水平居中,垂直方向与底部间距24px)。为了精致我为程序名和菜单会制作一些图片资源。但很快就意识到了麻烦,前面已经发现2种大小的AppleWatch分辨率是不同的,这意味着如果做两种设备的适配并保持此排版,图片通常思路下是需要2种尺寸的。

005.png

其实完全没有必要,使用WatchKit专用的Storyboard布局功能仅使用一套资源图片就可以轻松的解决统一排版问题,这也将减少图片传输带来的开销并节省Watch宝贵的存储空间。

我们新建一个项目并加好WathApp的target,打开Inteface.storyboard文件,在Main模板里设置InterfaceController的Insets为Custom并按如下设置边距。

006.png

这里要注意的是AppleWatch使用的是2倍像素密度图像资源,Top的值减去了标题栏的38像素。

再拖一个Group控件上去,作为主要界面元素的容器。设定其Size的Width和Height均为Relative to Container,系数保持缺省值1,效果立现。

007.png

Relative to Container的作用是设定控件的Width属性或Height属性占父容器的比例(1代表100%)。

把Group的Layout设置为Vertical垂直排列,再加3个Image上去代表logo和2个按钮。

008.jpg

先来看看logo,我们现在边界已经确定好,因此只要它宽度与Group保持一致就行,而不同的设备,用控件自带的Scale功能就好!高度它可以自己计算!

009.png

运行程序并分别选用42mm和38mm设备,发现logo图确实是在保证边距的情况下在38mm设备上缩小了。

本文的情景里对于菜单按钮要求有点区别,为保证用户能方便按到按钮,按钮大小是必须保证的。因此这里我们设置2个按钮Image的size为fixed width与fixed height并填好图片对应宽高,并设置Position位置为向底端对齐。

010.png

预览里已经可以看到效果了,如果要修改2个按钮之间的间隔,修改Group的spacing值就OK了。

运行2种设备比较一下:

现在这套方案还是很简单的,按42mm的大尺寸设计,依据需求灵活对属性进行设置选择缩放或者固定尺寸,并利用Group进行各种对齐等等,跟Html排版很类似。

先就说这么多吧,也没有太多体系化的东西。主要还是靠自己的应用场景去设计并调整实践才能有更好的心得体会。

WatchKit Storyboard攻略(二)

上一篇主要写到了WatchKit里对于Main入口界面设置Storyboard的一些要点和技巧,没想到被转载让那么多小伙伴们看到,因此我也会继续讲解这一部分的后续内容。本篇主要针对第二类视图界面也就是Glance(瞥览)进行示例介绍,编写之际恰逢WatchKit beta2的更新,因此也将顺便介绍有关更新内容。

Glance的用途大家应该比较熟悉了,它是专门用来快速浏览信息的视图界面,所有信息在一屏内显示,而且界面元素无法交互,用户点击任意位置都会可开启Watch的主应用。Glance视图的激活方式是从边缘上划。

我们现在打算构造一个显示用户当前位置的Glance。视图上应包括当前时间、当前位置描述与位置地图。因此我们会需要WKInterfaceDate、WKIntefaceLabel和WKInterfaceMap三个组件,考虑将他们垂直瀑布式排列。步骤如下:

1.建立项目工程和设置启动方式。

我们用Xcode6beta2建立一个TestWatchStoryboard的项目并增加target,添加WatchKit App扩展,这一步时记得勾上Glance场景的选项。

20.png

Xcode提示你激活Watch程序的scheme,确认激活,但用这个是无法启动Glance的。我们可以用Duplicate scheme复制一份,并将新scheme更名为Glance of TestWatchStoryboard2 WatchKit App。

21.png

然后修改启动界面为Glance,即可通过新scheme启动我们的Glance。

22.png

2.配置Glance视图。

打开WatchKitApp的Interface.storyboard,点击Glance的ViewController,可以看到右边出现Glance模板配置界面。

24.png

右方只有模板选择的功能。目前模板都是分为上(Upper)和下(Lower)两部分。虽然选择很丰富但个人认为强制切割成2块而不能整体性的全屏是它的主要局限。前面说了我们有三个元素,因此把Upper上方部分模板改为Group-Body1(模板里的Body其实代表的是一个标签WKInterfaceLabel)。

25.png

接着拖拽1个Date组件到Upper的Group中代表当前时间,再拖拽1个Map控件到Lower的Group代表当前地图位置,界面和结构如下:

26.png

这时我们也可以发现Xcode6.2beta2与beta1的区别:点击各项属性的+号能分别为42mm和38mm设备指定不同的属性值,结合上一篇里我们提到的特性,界面布局的灵活性得到大大提升!

比如我们运行在38mm表盘上时发现日期时间在一行内显示不下,可以为38mm表盘设置缩小一半的Scale,将Min Scale值中38mm设备的对应值设置为0.5,并同理设置Label元素:

27.png

3.利用代码更新内容

再简单介绍一下本示例的代码实现思路。

首先建立所述三个Storyboard控件与控制器代码中对象的IBOutlet关联。名称分别为txtDate、txtLocation与map:

@IBOutletweakvar txtDate: WKInterfaceDate!

@IBOutletweakvar txtLocation: WKInterfaceLabel!

@IBOutletweakvar map: WKInterfaceMap!

然后增加各控件初始化时的设置代码,这里我们发现了beta2版的又一个差异,WKInterfaceController的初始化函数以前是init(context: AnyObject?),现在变更为awakeWithContext(context: AnyObject?) ,这个变动的原因是你其实无法在WatchKit Extension里进行视图控制器构造函数的调用,所以init是名不副实的,还是以awakeFromNib类似的名称命名更好理解。我们为了简化,静态的设置地图位置与地址标签为武汉大学:

1
2
3
4
5
overridefunc awakeWithContext(context: AnyObject?) {
super .awakeWithContext(context)
txtLocation.setText( "@:\WuhanUniversty" )
map.setRegion(MKCoordinateRegion(center: CLLocationCoordinate2DMake(30.541093, 114.360734), span: MKCoordinateSpan(latitudeDelta: 2.0, longitudeDelta: 2.0)))
}

已经完成!选择Glance的Scheme并运行,38mm设备上效果如下:

29.png

Glance部分内容不算多,本系列下一篇我们会研究Notification。

这篇关于WatchKit Storyboard攻略的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/197544

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

企业大模型落地的“最后一公里”攻略

一、大模型落地的行业现状与前景 大模型在多个行业展现出强大的应用潜力。在金融行业,沉淀了大量高质量数据,各金融平台用户数以亿计,交易数据浩如烟海。利用大模型分析处理这些数据,金融机构可以预测用户行为偏好,更高效、准确评估客户风险,实时监测交易和市场波动,及时制定策略。IDC 调研显示,超半数的金融机构计划在 2023 年投资生成式人工智能技术。 在科技领域,商汤人工智能大装置为大模型企业提

2025计算机毕业设计选题攻略

博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ 🍅由于篇幅限制,想要获取完整文章或者源码,或者代做,拉到文章底部即可看到个人VX。🍅 2023年 - 2024年 最新计算机毕业设计 本科 选题大全 汇总 计算机专业毕业设计之避坑指南(开题答辩选导师必看) 感兴趣的可以先收藏起来,还

2025届必备:如何打造Java SpringBoot大型超市数据处理系统,提升管理效率,最新攻略!

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 | SpringBoot/SSM Python实战项目 | Django 微信小程序/安卓实战项目 大数据实战项目 ⚡⚡文末获取源码 文章目录

Spring data ES攻略

总结下es的使用,方便其他小伙伴使用 一、配置依赖 <dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-elasticsearch</artifactId><version>2.0.4.RELEASE</version></dependency> 二、xml配置 创建xml文件,配

tomato靶场攻略

1.使用nmap扫描同网段的端口,发现靶机地址 2.访问到主页面,只能看到一个大西红柿 3.再来使用dirb扫面以下有那些目录,发现有一个antibot_image 4.访问我们扫到的地址 ,点金目录里看看有些什么文件 5.看到info.php很熟悉,点进去看看   6.查看源代码发现是通过GET方式传参的 ,有文件包含漏洞 7. 利用文件包含漏洞,我们尝试查看一

微信支付商家转账到零钱:快速开通攻略及功能全解

一、申请资格与条件 哪些商家可以申请商家转账到零钱功能? 仅公司性质的商户可以申请,个体工商户当前不支持此功能。商户账号应无正在进行的处罚,且历史无风险行为。微信支付账户没有历史违规记录。商家系统已经上线并可以访问。是否需要满足开通满90天和连续交易30天的要求? 目前商家转账到零钱及现金红包功能已取消该限制,新注册公司可直接申请,无需等待。 二、申请流程 如何申请开通商家转账到零钱功能

黑神话悟空大头怪怎么打 黑神话悟空大头怪攻打攻略

《黑神话悟空》中的大头娃娃作为新手村的敌人,让不少自信满满的玩家受挫,即便是花费近三百元成为“天命人”的玩家也难以轻易通过,甚至有的玩家连续奋战多日都无法顺利离开新手村。为此,小编特地整理了一份《黑神话悟空》大头娃娃无伤攻略,正在为此苦恼的小伙伴们不妨来参考一下。 对于想要提升游戏体验的玩家来说,一款优质的耳机是必不可少的装备。南卡OE MIX开放式耳机以其独特的不入耳佩戴方式,确保了长

免费SSL证书大全,附阿里云、腾讯云免费SSL证书申请攻略

免费SSL证书大全,附阿里云、百度云、腾讯云免费SSL证书申请攻略 摘要:随着这两年SSL证书的普及,使用了SSL证书启用了HTTPS协议的网站越来越多了,最近四座网为了把网站也开启全站HTTPS,特意申请了一个免费的SSL证书用了起来。同时也在百度云、阿里云、腾讯云三大国内的云服务平台都申请了免费SSL证书,以体验一下每个平台的免费SSL证书的差别。 ssl证书 随着这两年SSL证书的