iOS添加按钮到小工具扩展
我目前正在为我的应用设计一个小部件,基本上,小部件应由三个按钮组成.到目前为止,我还没有找到有关如何将按钮添加到iOS窗口小部件扩展程序的教程.我看到,例如Google Maps使用小部件中的按钮. 如何完成? 解决方案 Widgets 没有动画或自定义交互,但是我们可以从我们的widget中 深层链接到我们的应用程序. systemSmall小部件是一个大的水龙头区域,而systemMedium和systemLarge可以使用新的Swiftui link API在小部件内创建可敲击区域. 演示;使用Link 在您的小部件扩展中. struct YourWidgetEntryView : View { var entry: Provider.Entry @Environment(\.widgetFamily) var family //
14 2024-04-05
编程技术问答社区
天气API + WidgetKit-"'async'在不支持并发的函数中调用"
我正在尝试为iOS 16 WeatherKit制作TimelineProvider,我正在为满足协议签名的方式而苦苦挣扎,并使用新的async api. 这是我的代码: struct WeatherProvider: TimelineProvider { func getSnapshot(in context: Context, completion: @escaping (WeatherEntry) -> ()) { let weather = try? await WeatherService.shared.weather(for: currentLocation) let entry = WeatherEntry(date: Date(), wind: nil, locationAuthStatus: nil) completion(entry) } //
22 2024-03-18
编程技术问答社区
Xcode iOS 14 WidgetKit并不总是附在调试器上
我正在开发iOS 14上的widgetkit扩展 但是,该扩展名在构建和运行后并不总是连接到Xcode调试器,导致我看不到日志,因为此图显示:(有时它会自动附加,我不知道为什么) ) 如果将扩展名附在调试器上,则应该像这样,并打印日志: 手动连接到调试器的过程无效,应在首次启动时附加它以查看日志. 有人知道如何正确调试iOS 14小部件吗? 解决方案 xcode 14.1已知问题: xcode 14.1发行说明似乎提到了已知问题 运行窗口小部件扩展程序后,用户将需要手动启动调试会话,并使用debug->附加到进程. (99285608) 方法(在模拟器和设备上工作) 同时运行应用程序目标和小部件目标 将调试器附加到您的小部件 步骤 选择应用程序方案并在iOS设备上运行(不要停止) 选择小部件方案并在iOS上运行(不要停止) 因此,两个目标都同时运行 选择小部件方案然后Debug> Attach to Proces
26 2023-12-18
编程技术问答社区
Swiftui widget ios 14与从网上下载的图片有问题
我必须将互联网上的背景图像放在小部件中,但它给了我以下问题. 你可以告诉我我在哪里错了? note.swift(型号) import Foundation struct Note: Identifiable, Codable { let title: String let message: String var id = UUID() } smallwidget.swift import SwiftUI struct SmallWidget: View { var entry: Note @Environment(\.colorScheme) var colorScheme var body: some View { VStack(alignment: .center){ Text(entry.title)
16 2023-12-03
编程技术问答社区
SwiftUi小部件背景基于传递的图像URL或梯度背景
我想做的是让用户选择widget background是从http或gradient background中拍摄的图像. . 我目前有以下注释结构,但我无法正常工作. so typeBg必须具有默认值,如果不传递,则应为默认值. 图像和bgColors的值必须是可选参数. struct Note: Identifiable, Codable { let title: String let message: String let image: String? let bgColors: [Color?]//[String?] let typeBg: String? = "color" var id = UUID() } ,但我只会在结构注释中出现错误: 键入'note'不符合协议'可解码' 键入'note'不符合协议'编码' 我想做的是: if struct == 'url'的typ
12 2023-12-03
编程技术问答社区
urlimage永远不会在swiftui的小部件应用中加载图像
iOS小部件的简单代码,我已经验证了Meme已加载Meme.URL值,来自较早的HTTP请求.我还检查了单独使用URL文本的打印文本,但也无法使用Urlimage软件包加载图像.我也尝试了小部件和ContentView,但没有结果.有什么想法吗? meme.url是一种可选的URL类型. urlimage:一个> 注意:更具体地说,占位符确实会出现,而不是来自URL的图像. 这是一个示例URL:import SwiftUI import URLImage struct MemeView: View { let meme: MemeModel var body: some View { URLImage(meme.url!, placeholder: Image(systemName: "square")) } } 解决方案 弄清楚了.不需要Urlimage.问题是小部件无法处理异步电话,因此您必须像这样包装它: struct MemeView: View
8 2023-12-03
编程技术问答社区
iOS 14小部件的动画
我找不到在小部件中实现progressbar的解决方案.我明白,如果具有类型.timer,则应更改该文本组件.我看到了默认的小部件时钟,并具有移动箭头的精美动画.但是我能够在小部件中实现自定义动画吗? 解决方案 根据frameworks工程师在开发人员苹果论坛: 动画和锅/缩放手势在用窗口小伙子构建的小部件中不起作用.结帐/a>,哪些工作和无效. 在上面提到的WWDC20会议中,Apple强调了小部件不是迷你应用,因此它们不支持基于手势的视图(例如滚动视图)或动画.小部件的目的只能具有可听觉的信息.来自 wwdc20 wwdc20结识widgetKit视频成绩单: 这些小部件不是小型应用.我们不支持窗口小部件中的滚动,交互元素(例如开关和其他系统控件),也没有视频或动画图像.
24 2023-12-03
编程技术问答社区
在iOS 14小工具上渲染图像
我正在开发一个iOS 14小部件扩展. 我有3个图像可以在循环中显示并创建一个时间表来显示这些图像. func getTimeline(in context: Context, completion: @escaping (Timeline) -> ()) { var entries: [ImageEntry] = [] let currentDate = Date() for i in 1 ..
18 2023-12-03
编程技术问答社区
主屏幕小部件上的iOS时钟动画
我想在我的应用中添加一个房屋屏幕窗口小部件,就像iOS系统时钟应用一样,二手每秒都在移动.我已经在Google和Github上搜索了很长时间,但没有找到合适的解决方案.我已经看到已经有第三方应用程序可以实现此类桌面小部件.例如: 他们如何做? 解决方案 使用View._clockHandRotationEffect(.secondHand, in: .current, anchor: .center) 其他解决方案 根据苹果无法完成. [...]但是,除了相对日期文本标签以外,您无法将视图更新为其他时间.因此,您无法复制时钟小部件,例如,在可见小部件时,将第二只手放在时钟上.抱歉. 另外,源自 保持小部件的最新.保持相关和有用,小部件应定期刷新其信息.小部件不支持连续的实时更新,并且系统可能会根据各种因素调整更新的限制. 我的理解是,第三方应用程序提供此类动画的唯一方法是使用私有API.系统时钟小部件毕竟这样做,因此实际上可以使用一些我不知道的私
46 2023-12-03
编程技术问答社区
如何防止iOS14小工具打开应用并对回调作出反应
因此,我已经阅读了几个博客,帖子和苹果自己的人类界面指南,即iOS 14个小部件不是交互式的,但是:在按目标时可以通过指向应用程序的简短链接.苹果本身说:"小型小部件有一个单击目标,中件和大型小部件得到了多个点击目标".好! 现在,当您点击这些目标时,应用程序正在打开,并且小部件正在通过该应用程序. 但是,现在我的问题,Google说IDK: 在敲击我在小部件中创建的这些按钮之一时,我可以通过编程方式说"防止打开应用"?就像JavaScript中一样容易:dreptdefault()(). 这可能吗?我只想防止打开应用程序并访问触发的Tap-target回调,然后在Swiftui中处理我的内容. 非常感谢,伙计们:) 解决方案 在我在小部件中创建的这些按钮之一时,我可以通过编程方式说"防止打开应用"? 不,这根本是不可能的(至少到目前为止,在iOS 14中). 默认情况下,每当您点击小部件时,都会打开该应用程序.您只能指定深层链接等.
6 2023-12-03
编程技术问答社区
如何在iOS14首页小工具中显示当前时间(实时)?
我正在开发iOS 14家用小部件的应用程序,并且在显示当前时间(数字时钟)时面临问题,该窗口小部件不会更新每个SEC.众所周知,Apple不允许每秒触发时间表,还有其他方法可以通过实时更新显示当前时间? 我尝试了这些方法,但无法正常工作 class NetworkManager: ObservableObject { @Published var dateIs = Date() init() { startTimer() // fetch data must be called at least once } private func startTimer() { let t = RepeatingTimer(timeInterval: 3) t.eventHandler = { DispatchQueue.main.async
16 2023-12-03
编程技术问答社区
WidgetBundle根据一些逻辑返回部件
我有几个ios14主屏幕窗口小部件为我的应用程序准备好,然后在WidgetBundle中返回它们: @main struct WidgetsBudle: WidgetBundle { @WidgetBundleBuilder var body: some Widget { Widget1() Widget2() Widget3() } } Widget2取决于位置服务的正常工作,但是如果用户尚未授予位置权限,那么甚至显示此窗口小部件也没有意义.我可以在返回WidgetBundle主体内部的小部件方面涉及一些逻辑吗? 解决方案 如果要根据某些逻辑选择一个小部件捆绑包,则可以执行以下操作: @main struct WidgetLauncher { static func main() { if isLocationEnabled { WidgetB
12 2023-12-03
编程技术问答社区
SwiftUI iOS 14 Widget CountDown
我有一个带倒数的iOS 14小部件 Text(foo, style: .timer) 当时间少于1分钟时,我该如何将文本颜色更改为红色? 解决方案 这是您可以为1 minute创建倒数的方法,而10 seconds则可以将文本颜色更改为红色.当时间超过倒数时, 创建一个条目,其中displayDate是总时间(此处为1分钟): struct SimpleEntry: TimelineEntry { let date: Date let displayDate: Date var isDateClose = false } 在您的提供商中创建两个条目 - 一个用于 standard 颜色,一个用于 isclose color(shere red ): struct SimpleProvider: TimelineProvider { ... func getTimeline(in context: Conte
26 2023-12-03
编程技术问答社区
从SwiftUI小组件中进行深度链接,点击即可
我有一个简单的小部件(中型),带有两个文本,我想要的是能够执行深层链接以引导用户进入我的应用程序的特定部分,但是我似乎找不到一种这样做的方法. 我写的视图(非常简单): HStack { Text("FIRST ITEM") Spacer() Text("SECOND ITEM") } 我已经尝试替换 Text("SECOND ITEM") Link("SECOND ITEM destination: URL(string: myDeeplinkUrl)!) 但也不起作用. 解决方案 在窗口小部件视图中,您需要创建Link并设置其destination url: struct SimpleWidgetEntryView: View { var entry: SimpleProvider.Entry var body: some View { Link(destination: U
28 2023-12-03
编程技术问答社区
在WidgetKit中每分钟更新时间文本标签
是否可以在窗口小部件中创建文本标签,以显示当前时间并将实时更新? 尝试创建时钟小部件,但是小部件每5分钟仅更新1次. 创建时间表没有帮助 "保持小部件的最新情况"不与当前时间,只有计时器等工作 解决方案 一个可能的解决方案是使用time日期样式: /// A style displaying only the time component for a date. /// /// Text(event.startDate, style: .time) /// /// Example output: /// 11:23PM public static let time: Text.DateStyle 您需要一个简单的Entry Date属性: struct SimpleEntry: TimelineEntry { let date: Date } 每分钟创建一个Entry,直到下一个午夜: struct SimplePr
16 2023-12-03
编程技术问答社区
如何刷新小部件数据?
我的代码获取两个JSON变量,应在我的小部件上显示它们. 小部件保持空白.没有小部件,它显示了我的应用程序中的所有内容. 我在做什么错?代码中的API仅用于测试,因此您也可以检查. 我需要更改以使其在小部件中显示吗? 我的结构: import Foundation struct Results: Decodable { let data: [Post] } struct Post: Decodable, Identifiable { let id: String var objectID: String { return id } let home_name: String let away_name: String } 获取JSON: import Foundation class NetworkManager: ObservableObject { @Published
10 2023-12-03
编程技术问答社区
在iOS 14的SwiftUI中,在主应用程序和小部件之间共享数据
@main struct ClockWidgetExt: Widget { private let kind: String = "ClockWidgetExt" public var body: some WidgetConfiguration { StaticConfiguration(kind: kind, provider: Provider(), placeholder: PlaceholderView()) { entry in HomeTestView() } .configurationDisplayName("My Widget") .description("This is an example widget.") } } 如何将数据从我的主要应用程序获取到小部件? 解决方案 您可以为小部件和应用程序添加 appGroup 功能(在这里
16 2023-12-03
编程技术问答社区
Watchos WidgetKit图像问题
在手表OS WidgetKit中,我需要帮助才能使我的图像覆盖手表的实际颜色,以始终以实际颜色显示w映像. 如果这是不可行的,则需要帮助如何渲染图像以支持像天文学中的地球小部件之类的重音行为.它添加了阴影,可以看到一些信息,对于我的图像,它显示为扁平的一种颜色. 没有从Apple文档中获得太多信息. 在天文学中添加地球小部件的图像. 在此处输入图像描述 我尝试使用具有True和False的可源性修饰符,但这并没有覆盖手表的颜色.即使我决定接受它.图像的信息丢失了. 解决方案 我不确定是否可以强迫图像以全彩色绘制,但是要使用重音,您需要使用图像创建一个SF符号,并注释适当的层以进行重音.我相信Apple的WidgetKit文档具有有关此的信息.
10 2023-11-27
编程技术问答社区
如何选择锁定设备的隐私敏感修订?
我似乎无法使我的手表WidgetKit并发症在设备被锁定时显示出来.这是在天气并发症中完成的,如果您脱下手表并将其放下,可以看到,但是我的小部件已编辑直到解锁为止. 我尝试将.unredacted添加到我的根小部件视图中,但行为相同.这是我可以从应用程序代码中做的事情,还是仅由用户控制?我不记得将其设置在天气并发症上,所以我认为它是公开的,这是我想做的.目前尚不清楚如何实现此在文档中. 解决方案 我在 @main struct ShopEasy_Widgets: Widget { let kind: String = "ShopEasy__WidgetKit_Extension" var body: some WidgetConfiguration { StaticConfiguration(kind: kind, provider: Provider()) { entry in ShopEasy_WidgetKitsEntryView(entry: entry) .unr
24 2023-11-27
编程技术问答社区
创建的新的WidgetKit扩展名:SwiftUi预览不使用" AppEx必须在应用中"
我在MacOS 12.6上的Xcode 14.0.1. 我正在尝试使用WidgetKit在现有应用中创建新的手表复杂性,从将窗口小部件扩展模板目标添加到我的项目中. 这生成了一个带有意图定义文件,资产文件,info.plist文件和SwiftUI文件的新文件夹. SwiftUi文件拒绝预览,而错误 AppExtensionNeedsContainingAppError: MyWatchExtension.appex must be in an app The app extension "MyWatchExtension.appex" needs to be embedded in an app in order to use previews 我能够编译目标并在WatchOS模拟器中运行它.我在某个地方错过了关键的一步吗? 解决方案 我遇到了相同的错误 因此,如果您的项目使用旧结构并包含带有嵌入式扩展的应用程序wat
8 2023-11-27
编程技术问答社区