首页 > 解决方案 > 如何在应用程序中检索小部件大小以根据设备进行预览?

问题描述

我目前正在制作一个基于 SwiftUI 的仅小部件应用程序,它允许用户显示某些类型的信息,如时间、日期等。为了使我的应用程序正常运行,我还想在应用程序视图中预览小部件允许用户设置它。

现在一切正常,我可以在我的应用程序中选择一个小部件并进行设置,以便小部件也更新。但是,我遇到了一个问题,经过一些研究,我似乎找不到一种方法可以让您根据所使用的设备获取小部件的大小。

我尝试使用UIScreen.main.bounds.size,但小部件尺寸和设备尺寸之间的纵横比不一样。

我想做的是让我的小部件预览适应设备实际使用的小部件尺寸。(换句话说,根据您使用的设备检索小部件大小)

是否有任何解决方案可以动态执行,或者我是否需要为每个设备创建视图?提前致谢。

标签: iosswiftswiftuiwidgetkit

解决方案


您可以将 UIScreen.main.bounds.size 映射到 Apple 文档中的小部件尺寸: https ://developer.apple.com/design/human-interface-guidelines/widgets/overview/design/小部件的尺寸

小部件的示例:

switch UIScreen.main.bounds.size {
    case CGSize(width: 428, height: 926):   return 170
    case CGSize(width: 414, height: 896):   return 169
    case CGSize(width: 414, height: 736):   return 159
    case CGSize(width: 390, height: 844):   return 158
    case CGSize(width: 375, height: 812):   return 155
    case CGSize(width: 375, height: 667):   return 148
    case CGSize(width: 360, height: 780):   return 155
    case CGSize(width: 320, height: 568):   return 141
    default:                                return 155
    }

推荐阅读