ToB企服应用市场:ToB评测及商务社交产业平台
标题:
创建 iOS 小组件(Widget)
[打印本页]
作者:
小秦哥
时间:
2024-10-23 09:26
标题:
创建 iOS 小组件(Widget)
创建 iOS 小组件(Widget)涉及几个步骤,包罗创建新的 Widget 扩展、配置 WidgetKit、筹划和实现 Widget 的 UI 和功能。以下是一个根本的教程
1. 创建 Widget 扩展
创建 Widget 扩展
1). 打开你的 iOS 项目,选择你的项目文件。
2). 点击 + 按钮添加一个新的目标(Target)。
3).选择 Widget Extension 模板,然后点击 Next。
4).为你的 Widget 扩展定名,确保勾选 Include Configuration Intent(如果你需要配置小组件),然后点击 Finish。
在创作中心设置你喜爱的代码高亮样式,Markdown 2.
配置 Info.plist
<key>CFBundleDisplayName</key>
<string>你的 Widget 名称</string>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
复制代码
利用 WidgetKit 筹划小组件
打开 你的Widget.swift 文件,默认会有一些代码模板。以下是一个简单的小组件示例:
import WidgetKit
import SwiftUI
struct Provider: TimelineProvider {
func placeholder(in context: Context) -> SimpleEntry {
SimpleEntry(date: Date())
}
func getSnapshot(in context: Context, completion: @escaping (SimpleEntry) -> ()) {
let entry = SimpleEntry(date: Date())
completion(entry)
}
func getTimeline(in context: Context, completion: @escaping (Timeline<Entry>) -> ()) {
var entries: [SimpleEntry] = []
// 生成一个未来时间点的时间线条目
let currentDate = Date()
for hourOffset in 0 ..< 5 {
let entryDate = Calendar.current.date(byAdding: .hour, value: hourOffset, to: currentDate)!
let entry = SimpleEntry(date: entryDate)
entries.append(entry)
}
// 使用条目创建时间线
let timeline = Timeline(entries: entries, policy: .atEnd)
completion(timeline)
}
}
struct SimpleEntry: TimelineEntry {
let date: Date
}
struct MyWidgetEntryView : View {
var entry: Provider.Entry
var body: some View {
Text(entry.date, style: .time)
}
}
@main
struct MyWidget: Widget {
let kind: String = "MyWidget"
var body: some WidgetConfiguration {
StaticConfiguration(kind: kind, provider: Provider()) { entry in
MyWidgetEntryView(entry: entry)
}
.configurationDisplayName("My Widget")
.description("This is an example widget.")
.supportedFamilies([.systemSmall, .systemMedium, .systemLarge])
}
}
struct MyWidget_Previews: PreviewProvider {
static var previews: some View {
MyWidgetEntryView(entry: SimpleEntry(date: Date()))
.previewContext(WidgetPreviewContext(family: .systemSmall))
}
}
复制代码
运行并测试
1).选择你的 Widget 扩展目标,并运行它。
2).在主屏幕上添加你的小组件,检察它的显示效果。
自界说 Widget UI 和功能
你可以通过修改 MyWidgetEntryView 来自界说小组件的外观,并在 Provider 中实现更复杂的时间线逻辑
这只是简单的入门。实际开发中,需要根据需求进一步自界说和优化小组件的功能和外观
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4