本文章是一個系列损俭,如果有興趣可以看看以下文章:
AppleWatch開發(fā)入門(1)——界面布局
AppleWatch開發(fā)入門(2)——代碼交互瑞侮、控制器生命周期谊娇、界面跳轉
AppleWatch開發(fā)入門(3)——Table視圖的應用
AppleWatch開發(fā)入門(4)——Picker視圖的應用
AppleWatch開發(fā)入門(5)——Menu的使用
AppleWatch開發(fā)入門(6)——watchOS中通知的應用
AppleWatch開發(fā)入門(7)——AlertController
AppleWatch開發(fā)入門(8)——動畫
一类垫、簡介
Picker 到底是個什么東西汉柒?如下圖所示:
Picker 有 3 種模式:List、Stack春叫、Sequence:
- List:有點像 tableview肩钠,一行一行展示
- Stack:有點像圖片瀏覽器,一頁一頁展示暂殖,翻動時有動畫效果
- Sequence:與 Stack 類似价匠,只不過翻動時沒有動畫效果
二、創(chuàng)建Picker
在 storyboard 中拖入 Picker:
因為Picker有3種模式(List呛每、Stack踩窖、Sequence),我們每種模式弄一個:
三晨横、代碼部分
工欲善其事洋腮,必先利其器,呃手形,必先看頭文件:
@available(watchOS 2.0, *)
public class WKInterfacePicker : WKInterfaceObject {
// 設置聚焦啥供,有點像becomeFirstResponder
public func focus()
// 失去聚焦,有點像resignFirstResponder
public func resignFocus()
// 改變選中的索引
public func setSelectedItemIndex(_ itemIndex: Int)
// 設置Picker中的內容
public func setItems(_ items: [WKPickerItem]?)
public func setCoordinatedAnimations(_ coordinatedAnimations: [WKInterfaceObject]?)
public func setEnabled(_ enabled: Bool)
}
@available(watchOS 2.0, *)
public class WKPickerItem : NSObject, NSSecureCoding {
// 設置文字库糠,僅當Picker是'List'時有效.
public var title: String?
// Caption to show for the item when focus style includes a caption callout.
public var caption: String?
// 設置title前面的小圖片伙狐,僅當Picker是'List'時有效,圖片大小固定是13×13pt曼玩。
@NSCopying public var accessoryImage: WKImage?
// 大圖
@NSCopying public var contentImage: WKImage?
}
具體實現(xiàn)
1鳞骤、 Pick 中的數(shù)據(jù)源是 WKPickerItem,先懶加載[WKPickerItem]
lazy var items: [WKPickerItem] = {
var its = [WKPickerItem]()
for i in 0...4 {
let item = WKPickerItem()
item.title = "Title" + "\(i)"
item.caption = "Caption" + "\(i)"
item.accessoryImage = WKImage(image: UIImage(named: "ad_0" + "\(i)")!)
item.contentImage = WKImage(image: UIImage(named: "ad_0" + "\(i)")!)
its.append(item)
}
return its
}()
這里圖片資源大家根據(jù)實際需求添加黍判,加載圖片時要特別注意豫尽,否則可能加載不出,詳細見:AppleWatch開發(fā)(1)——界面布局 這篇文章的末尾部分顷帖。
2美旧、 連線
@IBOutlet var listPicker: WKInterfacePicker!
@IBOutlet var stackPicker: WKInterfacePicker!
@IBOutlet var sequencePicker: WKInterfacePicker!
3渤滞、 設置數(shù)據(jù)
override func awake(withContext context: Any?) {
super.awake(withContext: context)
listPicker.setItems(items)
stackPicker.setItems(items)
sequencePicker.setItems(items)
sequencePicker.focus()
}
這里要注意,在有多個Picker時榴嗅,需要設置focus()
妄呕,不然系統(tǒng)不知道你要滾動哪一個。