标签: widgetkit

如何更改小部件中心“添加小部件”按钮的颜色

在此处输入图片说明 在此处输入图片说明

某些应用程序更改了“添加小工具”按钮的颜色。如何更改按钮的颜色?

widget ios swift widgetkit ios14

3
推荐指数
2
解决办法
552
查看次数

如何确保 WidgetKit 视图显示 @FetchRequest 的正确结果?

我有一个将 Core Data 与 CloudKit 结合使用的应用程序。更改在设备之间同步。主要目标具有后台模式功能,并带有选中的远程通知。主目标和小部件目标都具有相同的应用程序组,并且都具有 iCloud 功能,服务设置为 CloudKit,并且检查了容器中的相同容器。

我的目标是在 SwiftUI WidgetKit 视图中显示实际的核心数据条目。

我的小部件目标文件:

import WidgetKit
import SwiftUI
import CoreData

// MARK: For Core Data

public extension URL {
    /// Returns a URL for the given app group and database pointing to the sqlite database.
    static func storeURL(for appGroup: String, databaseName: String) -> URL {
        guard let fileContainer = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: appGroup) else {
            fatalError("Shared file container could not be created.")
        }
        
        return fileContainer.appendingPathComponent("\(databaseName).sqlite")
    }
}

var managedObjectContext: NSManagedObjectContext …
Run Code Online (Sandbox Code Playgroud)

core-data ios swift widgetkit swiftui

3
推荐指数
1
解决办法
1443
查看次数

SwiftUI iOS 14 小部件倒计时

我有一个带有倒计时功能的 iOS 14 小部件

Text(foo, style: .timer)
Run Code Online (Sandbox Code Playgroud)

当时间小于1分钟时,如何将文字颜色更改为红色?

widget swift widgetkit swiftui ios14

3
推荐指数
1
解决办法
3151
查看次数

在 SwiftUI 小部件中添加观察者的位置

我正在尝试构建一个更好的小部件,我希望每次电池状态或电量发生变化时都会刷新该小部件。我知道两者都需要添加通知。所以我的逻辑是,当有关电池状态的通知发生变化时,我想刷新时间线。

但是我无法理解将观察者放在 TimelineProvider 或 Widget 视图下的位置?

struct timeWidgetEntryView : View {
    var entry: Provider.Entry
    let NC = NotificationCenter.default
    
    init(entry:Provider.Entry) {
        self.entry = entry

    }

    func batteryLevelDidChange(_ notification: Notification) {
        UIDevice.current.isBatteryMonitoringEnabled = true
        var level = UIDevice.current.batteryLevel
        level = level * 100
        WidgetCenter.shared.reloadAllTimelines()
        NSLog("Level changed / state changed")
    }
    
    var body: some View {
        VStack {
            Text(entry.date, style: .time).foregroundColor(.black).frame(minWidth: /*@START_MENU_TOKEN@*/0/*@END_MENU_TOKEN@*/, idealWidth: 100, maxWidth: 100, minHeight: /*@START_MENU_TOKEN@*/0/*@END_MENU_TOKEN@*/, idealHeight: /*@START_MENU_TOKEN@*/100/*@END_MENU_TOKEN@*/, maxHeight: 50, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/)
            Text("Battery : \(entry.batteryState)").foregroundColor(.black).frame(minWidth: /*@START_MENU_TOKEN@*/0/*@END_MENU_TOKEN@*/, idealWidth: /*@START_MENU_TOKEN@*/100/*@END_MENU_TOKEN@*/, maxWidth: /*@START_MENU_TOKEN@*/.infinity/*@END_MENU_TOKEN@*/, minHeight: …
Run Code Online (Sandbox Code Playgroud)

notifications ios swift widgetkit swiftui

3
推荐指数
1
解决办法
1213
查看次数

当 SwiftUI Widget 的相对文本字段计数器为零时停止?

我正在创建一个小部件,它有一个从日期开始倒计时的文本字段,如下所示:

Text(endDate, style: .relative)
Run Code Online (Sandbox Code Playgroud)

这工作正常,但是作为其相对值,一旦达到零,当 endDate 成为过去时,它将继续重新计数。

有没有办法在文本为零时终止文本?或者我必须用计时器重建这个功能吗?

我需要做的就是从开始日期到结束日期倒计时,然后使文本字段无效或显示一条消息。

ios swift widgetkit swiftui

3
推荐指数
1
解决办法
586
查看次数

PreviewProvider 在小部件扩展中不起作用

我有这样的看法

import SwiftUI

struct CurrentOrderView: View {
  let order: CurrentOrder

  var body: some View {
    VStack(alignment: .leading, spacing: 4) {
      HStack {
        Text("Order:")
        Text(order.orderId)
      }

      HStack {
        Image(uiImage: deliveryImage)
          .resizable()
          .aspectRatio(contentMode: .fit)
          .frame(width: 50.0, height: 50.0)
        Text(order.formattedDeliveryTimeString)
      }
    }
    .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .leading)
    .padding()
    .background(LinearGradient(gradient: Gradient(colors: [.orange, .yellow]), startPoint: .top, endPoint: .bottom))
  }
}

// MARK: - Private

private extension CurrentOrderView {
  private var deliveryImage: UIImage {
    switch order.status {
    case .driverOnTheWayToRestaurant:
      return UIImage(named: …
Run Code Online (Sandbox Code Playgroud)

swift widgetkit swiftui

3
推荐指数
1
解决办法
1356
查看次数

IntentHandler 不适用于 widgetFamily

我向我的项目添加了一个意图扩展目标,我试图区分在编辑模式下显示的小部件类型,IntentHandler并根据此信息,我想用小、中或大小部件类型填充“编辑小部件”列表。

当我使用@Environment(\.widgetFamily) var family它时,它给了我.systemMedium所有的时间,但当时我正在编辑一个大尺寸的小部件。

对于前;当我长按一个小部件来编辑并从列表中选择另一个部件类型时,我看到一个包含小型、中型和大型部件类型的项目列表,IntentHandler但我只想看到小型类型。

问题是,是否可以根据我当前正在编辑的小部件类型来填充列表?

widget swift widgetkit swiftui ios14

3
推荐指数
1
解决办法
1326
查看次数

将 iOS 小部件添加到 macOS 目标

我有一个带有小部件的 SwiftUI 应用程序,在催化剂版本中都可以正常工作,或者直接为 macOS 编译小部件,但是当我将其添加到 macOS 目标(不是催化剂)时,出现以下错误

/Users/franciscomisaellanderoychante/proyects/Revisits/Revisits.xcodeproj Building for macOS, but the embedded app extension 'revisitsWidgetExtension.appex' is building for iOS. You may need to configure 'revisitsWidgetExtension.appex' to build for macOS.

小部件

但正如您所看到的,这些小部件实际上也是针对 macOS 的

在 macOS 中我选择了这个

在此输入图像描述

我想做的是将现有的小部件与 macOS 应用程序一起使用

知道发生了什么吗?

ios swift widgetkit swiftui macos-big-sur

3
推荐指数
1
解决办法
832
查看次数

如何选择退出锁定设备的隐私敏感密文?

当设备锁定时,我似乎无法让我的手表 WidgetKit 复杂化显示。这是在天气复杂功能中完成的,如果您摘下手表并将其放下,就可以看到它,但我的小部件在解锁之前会被编辑。

我尝试添加.unredacted到我的根小部件视图,但行为相同。这是我可以通过应用程序代码执行的操作还是仅由用户控制?我不记得将其设置为天气并发症,所以我认为它将自己设置为公开,这就是我想做的。文档中尚不清楚如何实现这一点。

widgetkit watchos apple-watch-complication swiftui

3
推荐指数
1
解决办法
639
查看次数

与 AppGroup 共享数据

我想将一个变量从我的 UIKit 文件共享到我用 SwiftUI 创建的小部件扩展。 我跟着这个here。请看看 J Arango 的回答。

但我不明白那里的最后一部分。我必须使用import MySharedObjects.

所以我这样做了:

    import MySharedObject

struct testing {
    let mySharedObject = MySharedObject(name: "My Name", lastName: "My Last Name")
                       
     do {
         let data = try JSONEncoder().encode(mySharedObject)
    
          /// Make sure to use your "App Group" container suite name when saving and retrieving the object from UserDefaults
          let container = UserDefaults(suiteName:"group.com.widgetTest.widgetContainer")
              container?.setValue(data, forKey: "sharedObject")
                            
          /// Used to let the widget extension to reload the timeline
          WidgetCenter.shared.reloadAllTimelines()
    
          } catch {
            print("Unable to …
Run Code Online (Sandbox Code Playgroud)

swift widgetkit swiftui

2
推荐指数
1
解决办法
1073
查看次数