如何让AccessoryWidgetBackground填满accessoryRectangular组件整个视图?
如何让AccessoryWidgetBackground填满accessoryRectangular小组件全屏?
我想在accessoryRectangular组件家族中添加一个全屏的AccessoryWidgetBackground(),创建新项目并添加组件后,我把视图代码改成了这样:
struct Some_WidgetEntryView : View { var entry: Provider.Entry var body: some View { AccessoryWidgetBackground() .frame(width: .infinity, height: .infinity) .ignoresSafeArea() } }
(配图:iOS 16组件选择界面)但实际效果并没有填满整个视图,请问怎么让背景模糊效果覆盖整个视图?
解决方案
直接移除多余的frame修饰符,给AccessoryWidgetBackground()添加edgesIgnoringSafeArea(.all)就能实现全屏覆盖:
struct Some_WidgetEntryView : View { var entry: Provider.Entry var body: some View { AccessoryWidgetBackground() .edgesIgnoringSafeArea(.all) } }
accessoryRectangular小组件本身有固定的尺寸约束,额外设置frame(width: .infinity, height: .infinity)反而会干扰系统的布局逻辑。而edgesIgnoringSafeArea(.all)能让背景突破小组件的安全区域限制,完全覆盖整个组件范围。
如果后续需要在背景上添加其他内容,用ZStack把AccessoryWidgetBackground()作为底层视图包裹上层元素即可,确保它处于视图层级的最底部。
内容的提问来源于stack exchange,提问作者lewis
相关产品推荐
相关产品推荐

