成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何為我們的 App 實現鎖屏小組件

移動開發 iOS
我們可以用可瀏覽的小組件填充鎖屏。實現鎖屏小組件很簡單,因為它的 API 與主屏小組件共享相同的代碼。本周我們將學習如何為我們的 App 實現鎖屏小組件。

iOS 呼聲最高的功能之一是可定制的鎖屏。終于,在最新發布的 iOS 16 得以實現。我們可以用可瀏覽的小組件填充鎖屏。實現鎖屏小組件很簡單,因為它的 API 與主屏小組件共享相同的代碼。本周我們將學習如何為我們的 App 實現鎖屏小組件。

讓我們從你可能早就有的 App 主屏小組件代碼開始。

struct WidgetView: View {
let entry: Entry
@Environment(\.widgetFamily) private var family
var body: some View {
switch family {
case .systemSmall:
SmallWidgetView(entry: entry)
case .systemMedium:
MediumWidgetView(entry: entry)
case .systemLarge, .systemExtraLarge:
LargeWidgetView(entry: entry)
default:
EmptyView()
}
}
}

在上面的示例中,我們有一個定義小組件的典型視圖。我們使用 Environment 來知道 widget family 并顯示適當的大小。我們需要做的就是刪除默認語句,并實現定義鎖屏小組件的所有新用例。

struct WidgetView: View {
let entry: Entry

@Environment(\.widgetFamily) private var family

var body: some View {
switch family {
case .systemSmall:
SmallWidgetView(entry: entry)
case .systemMedium:
MediumWidgetView(entry: entry)
case .systemLarge, .systemExtraLarge:
LargeWidgetView(entry: entry)
case .accessoryCircular:
Gauge(value: entry.goal) {
Text(verbatim: entry.label)
}
.gaugeStyle(.accessoryCircularCapacity)
case .accessoryInline:
Text(verbatim: entry.label)
case .accessoryRectangular:
VStack(alignment: .leading) {
Text(verbatim: entry.label)
Text(entry.date, format: .dateTime)
}
default:
EmptyView()
}
}
}

最好記住,系統對鎖屏和主屏小組件使用不同的渲染模式。系統為我們提供了三種不同的渲染模式。

  1. 主屏小組件和 Watch OS支持顏色的全色模式。是的,從 watchOS 9 開始,你還可以用 WidgetKit 去實現 watchOS 的復雜性。
  2. 振動模式(vibrant mode)是指系統將文本、圖像和儀表還原為單色,并為鎖屏背景正確著色。
  3. 重音模式(accented mode)僅在 watchOS 上使用,系統將小部件分為兩組,默認和重音。 系統使用用戶在表盤設置中選擇的色調顏色為小部件的重音部分著色。

渲染模式可通過 SwiftUI Environment 變量使用,因此你可以始終檢查哪個渲染模式處于活動狀態,并將其反映在設計中。例如,可以使用具有不同渲染模式的不同圖片。

struct WidgetView: View {
let entry: Entry
@Environment(\.widgetRenderingMode) private var renderingMode
var body: some View {
switch renderingMode {
case .accented:
AccentedWidgetView(entry: entry)
case .fullColor:
FullColorWidgetView(entry: entry)
case .vibrant:
VibrantWidgetView(entry: entry)
default:
EmptyView()
}
}
}

如上所示,我們使用 widgetRenderingMode 環境值來獲得實際的渲染模式,并表現出不同的行為。像之前講到的,在重音模式( accented mode )下,系統將小部件分為兩部分,并對它們進行特殊著色。可以使用 widgetAccentable 視圖修改器標記視圖層次的一部分。在這種情況下,系統將知道哪些視圖應用著色顏色。

struct AccentedWidgetView: View {
let entry: Entry
var body: some View {
HStack {
Image(systemName: "moon")
.widgetAccentable()
Text(verbatim: entry.label)
}
}
}

最后,我們需要為小組件配置支持類型。

@main
struct MyAppWidget: Widget {
let kind: String = "Widget"

var body: some WidgetConfiguration {
StaticConfiguration(kind: kind, provider: Provider()) { entry in
WidgetView(entry: entry)
}
.configurationDisplayName("My app widget")
.supportedFamilies(
[
.systemSmall,
.systemMedium,
.systemLarge,
.systemExtraLarge,
.accessoryInline,
.accessoryCircular,
.accessoryRectangular
]
)
}
}

如果你仍然支持 iOS 15,可以檢查新鎖屏小組件的可用性。

@main
struct MyAppWidget: Widget {
let kind: String = "Widget"

private var supportedFamilies: [WidgetFamily] {
if #available(iOSApplicationExtension 16.0, *) {
return [
.systemSmall,
.systemMedium,
.systemLarge,
.accessoryCircular,
.accessoryRectangular,
.accessoryInline
]
} else {
return [
.systemSmall,
.systemMedium,
.systemLarge
]
}
}

var body: some WidgetConfiguration {
StaticConfiguration(kind: kind, provider: Provider()) { entry in
WidgetView(entry: entry)
}
.configurationDisplayName("My app widget")
.supportedFamilies(supportedFamilies)
}
}
責任編輯:姜華 來源: Swift社區
相關推薦

2022-07-29 15:08:05

加密貨幣去中心化工具

2016-10-18 20:50:00

android鎖屏App

2016-01-29 10:19:26

2022-12-19 15:30:23

iOS蘋果功能

2012-12-31 13:13:13

App出售

2022-12-25 16:21:59

iOS蘋果bug

2016-12-26 10:28:00

2024-07-15 08:25:07

2023-06-06 14:21:15

2022-10-26 11:49:59

2021-03-28 17:14:38

數據庫APP技術

2023-04-19 15:32:22

人工智能

2023-11-16 09:54:55

鴻蒙應用開發

2010-05-24 11:26:27

MySQL鎖

2015-12-29 13:14:08

Windows 10鎖屏壁紙

2020-02-05 17:43:14

數據庫PostgreSQL Oracle

2022-06-24 06:32:46

iOS 16Beta 2

2013-08-21 14:31:27

App推廣選擇合適發行商移動應用市場

2012-06-25 14:45:50

2016-09-13 15:36:38

Windows10隱藏鎖屏
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品一区二区冲田杏梨 | 精品一二三区在线观看 | 天天躁日日躁狠狠很躁 | 欧美色专区| 三级成人在线 | 久久亚洲欧美日韩精品专区 | 毛片高清 | 成人日韩精品 | 国产美女视频一区 | 日韩成人国产 | 国产成人av一区二区三区 | 一级黄色片一级黄色片 | 精品av天堂毛片久久久借种 | 青青草这里只有精品 | 天天操夜夜骑 | 一区二区三区四区在线 | 国产精品久久久久一区二区 | 91伊人 | 最新国产在线 | 久久精品免费观看 | av毛片| 欧美a√ | 中文字幕电影在线观看 | 欧美自拍网站 | 中文字幕国产一区 | 亚洲成人精品免费 | 国产97人人超碰caoprom | 老司机深夜福利网站 | 国内av在线 | 欧美一区二区三区久久精品视 | 国产成人精品网站 | 亚洲精品一区二区三区在线 | 亚州无限乱码 | 精品无码久久久久久国产 | 国产精品国产精品国产专区不片 | 欧美精品一区二区三 | 国产一区二区视频在线观看 | 激情六月丁香 | 黑人巨大精品欧美一区二区免费 | 羞羞免费网站 | 国产午夜精品一区二区三区在线观看 |