我有多个小部件,用于iOS 14及以上的用户。但是有了新的锁屏小部件,它只对iOS 16用户可用。我如何才能为iOS 16用户制作最后两个小部件?如果我取消评论的顶部,那么我相信它将使所有的小部件只对iOS 16用户可用,但我不能这样做,我希望我的用户能够继续使用主屏幕小部件,如果他们在iOS 14-15。
import WidgetKit
import SwiftUI
//@available(iOSApplicationExtension 16.0, *)
@main
struct Widgets: WidgetBundle {
@WidgetBundleBuilder
var body: some Widget {
Widget1()
Widget2()
Widget3()
LockscreenWidget1()
LockscreenWidget2()
}
}发布于 2022-09-02 12:49:53
您需要在Widget逻辑中配置它。
例如:
@main
struct MyWidget: Widget {
private let supportedFamilies: [WidgetFamily] = {
if #available(iOSApplicationExtension 16.0, *) {
return [.systemSmall, .systemMedium, .systemLarge, .systemExtraLarge, .accessoryInline, .accessoryCircular, .accessoryRectangular]
} else if #available(iOSApplicationExtension 15.0, *) {
return [.systemSmall, .systemMedium, .systemLarge, .systemExtraLarge]
} else {
return [.systemSmall, .systemMedium, .systemLarge]
}
}()
var body: some WidgetConfiguration {
StaticConfiguration(kind: kind, provider: Provider()) { entry in
MyWidgetEntryView(entry: entry)
}
.configurationDisplayName("Demo Name")
.description("Description of the demo.")
.supportedFamilies(supportedFamilies)
}
}发布于 2022-10-09 08:50:11
var body: some Widget {
widgets()
}
func widgets() -> some Widget {
if #available(iOS 16.0, *) {
return WidgetBundleBuilder.buildBlock(LockscreenWidget1(), Widget1())
} else {
return Widget1()
}
}https://stackoverflow.com/questions/72819402
复制相似问题