AppleWatch開(kāi)發(fā)入門(mén)(1)——界面布局

本文章是一個(gè)系列拆撼,如果有興趣可以看看以下文章:
AppleWatch開(kāi)發(fā)入門(mén)(1)——界面布局
AppleWatch開(kāi)發(fā)入門(mén)(2)——代碼交互、控制器生命周期、界面跳轉(zhuǎn)
AppleWatch開(kāi)發(fā)入門(mén)(3)——Table視圖的應(yīng)用
AppleWatch開(kāi)發(fā)入門(mén)(4)——Picker視圖的應(yīng)用
AppleWatch開(kāi)發(fā)入門(mén)(5)——Menu的使用
AppleWatch開(kāi)發(fā)入門(mén)(6)——watchOS中通知的應(yīng)用
AppleWatch開(kāi)發(fā)入門(mén)(7)——AlertController
AppleWatch開(kāi)發(fā)入門(mén)(8)——?jiǎng)赢?huà)

一、簡(jiǎn)介

在 iPhone 開(kāi)發(fā)中涎永,最基本的布局方式是通過(guò) frame 將控件的位置和大小固定在屏幕上,后來(lái)鹿响,由于手機(jī)屏幕的尺寸有了略微變化羡微,有了 autoresizing 布局框架,可以設(shè)置子視圖隨父視圖的改變做一些相應(yīng)的變化惶我,再后來(lái)拷淘,iPhone 尺寸與分辨率也越來(lái)越多,適配各個(gè)屏幕也成為了 iOS 開(kāi)發(fā)者遇到的新的問(wèn)題指孤,幸運(yùn)的是,autolayout 機(jī)制的出現(xiàn),大大減少在適配方面的成本恃轩。但是在 iWatch 的布局方式中结洼,需要拋棄 iPhone 中的布局思路,接受一套不太一樣的布局框架叉跛。

首先松忍,iWatch 的屏幕不大,目前有 38mm筷厘、40mm鸣峭、42mm 和 44mm 四個(gè)尺寸,無(wú)法在這個(gè)有限的空間里做非常復(fù)雜的界面效果酥艳,因此摊溶,在開(kāi)發(fā)中應(yīng)便于使用、一目了然充石。iWatch 上的布局方式采用的是一種平面堆放的方式莫换,沒(méi)有 frame,也沒(méi)有約束骤铃,控件的布局方式只是一個(gè)挨著一個(gè)的平面堆放拉岁,也不可重疊。但在 iWatch 中提供了 Group 這樣一種布局方式惰爬,可以讓我們?cè)诓季种畜w現(xiàn)自由與個(gè)性的方面喊暖。

二、創(chuàng)建項(xiàng)目工程

創(chuàng)建工程就不做詳細(xì)描述了撕瞧,直接下一步就行陵叽。


創(chuàng)建項(xiàng)目

三、基礎(chǔ)的堆放布局

打開(kāi) WatchKit APP 中的 storyboard风范,這就是整個(gè) iWatch 布局的地方咨跌。在 iWatch 開(kāi)發(fā)中,目前只能用 storyboard 來(lái)開(kāi)發(fā)硼婿。

iWatch 的布局采用的是最基礎(chǔ)的堆放方式锌半,從上到下依次排開(kāi),例如寇漫,我們添加三個(gè) Label刊殉,效果如下:

通過(guò)拖動(dòng)控件改變順序。注意州胳,這里僅可改變其上下位置记焊。

這種方式的布局高度并沒(méi)有限制,我們可以一直往下排列栓撞,在 iWatch上則會(huì)出現(xiàn)上下滑動(dòng)的效果遍膜。

四碗硬、使用 Group 進(jìn)行復(fù)雜的界面布局

通過(guò)上面的布局方式,我們只能進(jìn)行縱向的排列布局瓢颅,這并不能達(dá)到我們的需求恩尾,WatchKit 中提供那一套布局的模型:Group。

可以這樣理解挽懦,Group 默認(rèn)透明翰意,它的主要作用是提供布局,可以將屏幕分成了幾各分區(qū)信柿,我們可以設(shè)置各個(gè)分區(qū)的排列方式冀偶,例如水平或者垂直,通過(guò)這樣的思路渔嚷,完成復(fù)雜的 iWatch 界面布局进鸠。

直接拖一個(gè) Group 到界面上,然后將需要水平布局的控件放在 Group 里面:

Group 布局

然后運(yùn)行程序

擴(kuò)展:所謂Group

Group 在界面布局上圃伶,不僅可以起到分區(qū)屏幕的作用堤如,其還可以設(shè)置一些屬性來(lái)使布局更加漂亮。在 storyBoard 右側(cè)的設(shè)置菜單中窒朋,我們可以對(duì)這些屬性進(jìn)行操作:

  • Layout:設(shè)置布局模式搀罢,分為 水平布局 和 垂直布局 兩種;
  • Insert:可以設(shè)置內(nèi)容區(qū)域偏移量侥猩,通過(guò)這個(gè)屬性榔至,我們可以使其中填充的控件四周留白;
  • Spacing:其中填充的控件的間距欺劳;
  • Background:設(shè)置 Group 的背景圖案唧取;
  • Mode:設(shè)置背景圖案的填充方式;
  • Animate:出現(xiàn)時(shí)帶動(dòng)畫(huà)划提;
  • Color:設(shè)置 Group 的背景顏色枫弟;
  • Radius:設(shè)置 Group 的圓角度。

四鹏往、布局中控件的位置和尺寸設(shè)置

對(duì)于控件的尺寸淡诗,有三種模式,控件的 Width 和 Height 都是通過(guò)這三個(gè)模式設(shè)置的:
在 iPhone 中伊履,通過(guò) frame 或者約束來(lái)控制控件的位置和尺寸韩容,而在iWatch 中則簡(jiǎn)單很多,尺寸和位置都是固定的模式唐瀑,我們只需要做一些設(shè)置即可群凶。

1. 控件尺寸的控制

Size To Fit Content:控件尺寸與內(nèi)容相關(guān),例如哄辣,Label 中字?jǐn)?shù)的多少?zèng)Q定了 Label 的尺寸请梢。

Size To Fit Content

Relative to Container:控件尺寸按照容器尺寸的比例設(shè)置赠尾。例如設(shè)置為 0.5,則當(dāng)前控件的尺寸就是容納其 Group 的一半毅弧。

Relative to Container

Fixed:設(shè)置一個(gè)固定的值萍虽。

Fixed

2. 控件位置的控制

因?yàn)?iWatch 的界面十分簡(jiǎn)潔,對(duì)于控件的位置設(shè)置形真,是通過(guò)水平和垂直兩個(gè)維度來(lái)設(shè)置的,通過(guò)設(shè)置每個(gè)維度的屬性來(lái)控制其在容納它的父控件中的位置:

位置控制

五超全、圖片設(shè)置

圖片的使用有大坑咆霜。

關(guān)于圖片素材,你可以發(fā)現(xiàn)嘶朱,在 App 和 Extension 文件夾中各有一個(gè) Assets.xcasssets 組蛾坯,只有將素材放入這里面,iWatch才能使用疏遏。

Assets.xcasssets

加載圖片的方法有一下幾種脉课,這幾種方法也有大坑。

@available(watchOS 2.0, *)
open class WKInterfaceImage : WKInterfaceObject, WKImageAnimatable {

    open func setImage(_ image: UIImage?)

    open func setImageData(_ imageData: Data?)

    open func setImageNamed(_ imageName: String?)

    open func setTintColor(_ tintColor: UIColor?)
}

圖片使用一定要特別注意:

1. Interface.storyboard 只能加載 WatchKit App 中 Assets.xcassets 的圖片财异。
2. func setImageNamed(_ imageName: String?) 方法只能加載 WatchKit App 中 Assets.xcassets 的圖片倘零。
3. func setImage(_ image: UIImage?) 方法只能加載 WatchKit Extension 中 Assets.xcassets 的圖片。
4. func setImageData(_ imageData: Data?) 方法只能加載 WatchKit Extension 中 Assets.xcassets 的圖片戳寸。

iWatch 圖片加載方法
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末呈驶,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子疫鹊,更是在濱河造成了極大的恐慌袖瞻,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拆吆,死亡現(xiàn)場(chǎng)離奇詭異聋迎,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)枣耀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)霉晕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人奕枢,你說(shuō)我怎么就攤上這事娄昆。” “怎么了缝彬?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵萌焰,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我谷浅,道長(zhǎng)扒俯,這世上最難降的妖魔是什么奶卓? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮撼玄,結(jié)果婚禮上夺姑,老公的妹妹穿的比我還像新娘。我一直安慰自己掌猛,他們只是感情好盏浙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著荔茬,像睡著了一般废膘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上慕蔚,一...
    開(kāi)封第一講書(shū)人閱讀 51,624評(píng)論 1 305
  • 那天丐黄,我揣著相機(jī)與錄音,去河邊找鬼孔飒。 笑死灌闺,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的坏瞄。 我是一名探鬼主播桂对,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼惦积!你這毒婦竟也來(lái)了接校?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤狮崩,失蹤者是張志新(化名)和其女友劉穎蛛勉,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體睦柴,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡诽凌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了坦敌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侣诵。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖狱窘,靈堂內(nèi)的尸體忽然破棺而出杜顺,到底是詐尸還是另有隱情,我是刑警寧澤蘸炸,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布躬络,位于F島的核電站,受9級(jí)特大地震影響搭儒,放射性物質(zhì)發(fā)生泄漏穷当。R本人自食惡果不足惜提茁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望馁菜。 院中可真熱鬧茴扁,春花似錦、人聲如沸汪疮。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)智嚷。三九已至躲胳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間纤勒,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工隆檀, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留摇天,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓恐仑,卻偏偏與公主長(zhǎng)得像泉坐,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子裳仆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容