Summary
A user reports that the Live Activity card on the Lock Screen is clipped when the iPhone is set to the larger display / larger text option: the left edge of the card is cut off, so the glucose value and the Delta: label are only partly visible (9 → instead of 99 →, lta: +2 instead of Delta: +2). The right-hand metric grid (IOB/COB/Basal/Delta) and the Last Update line render fine.
My middle-aged eyes really like this iPhone larger display option (Display Zoom), but is there anyway to adjust the Follow display so it fits when using this setting?
Reported in the Loop Follow Facebook group: https://www.facebook.com/groups/loopfollowlnl/permalink/1745284946593861
Screenshots in the comment below.
Environment
- Lock Screen Live Activity (not the app UI).
- Reporter points at Settings → Display & Brightness → Text Size in their screenshot, while describing the setting as Display Zoom. Worth confirming which of the two is active — see note under Cause below.
- iPhone model and iOS version not yet known.
Steps to reproduce (to be confirmed)
- Settings → Display & Brightness → Display Zoom → Larger Text.
- Start the Loop Follow Live Activity and look at the Lock Screen card.
Cause
LockScreenLiveActivityView is laid out entirely in fixed points, with hard minimum widths that cannot shrink:
- left column (glucose + trend + delta):
.frame(minWidth: 160, maxWidth: 184, alignment: .leading) — LoopFollowLAExtension/LoopFollowLiveActivity.swift:217
- each metric block in the 2×2 grid:
.frame(width: 72, alignment: .leading) — LoopFollowLAExtension/LoopFollowLiveActivity.swift:325
- outer
HStack(spacing: 12) plus the 1 pt divider, and the inner metric rows at spacing: 12
- card padding:
.padding(.horizontal, 14)
Minimum width the card demands: 160 + 12 + 1 + 12 + (72 + 12 + 72) = 341 pt of content, plus 28 pt of horizontal padding ≈ 369 pt.
Display Zoom renders the whole UI at a smaller logical resolution, so the container the Live Activity gets becomes narrower in points while every width above stays exactly the same. Once the demanded width exceeds what the container offers, the HStack overflows and the Lock Screen clips it — which matches the screenshots, where the overflow is cut off on the leading edge.
All text in the card uses .font(.system(size:)), i.e. fixed point sizes that don't scale with Dynamic Type. So a larger Text Size setting alone should not change this layout, which points at Display Zoom as the actual trigger; confirming with the reporter would settle it.
The expanded Dynamic Island regions reuse the same 72 pt MetricBlock/SlotView (LoopFollowLAExtension/LoopFollowLiveActivity.swift:356-368), so they should be checked in zoomed mode too.
Possible directions
Not decided, listed for discussion:
- Make the left column width proportional/flexible instead of
minWidth: 160, and let the metric grid take the remainder.
- Replace the fixed 72 pt metric blocks with a flexible grid (
GridRow/.frame(maxWidth: .infinity)) so the columns share available width.
- Wrap the top row in
ViewThatFits with a narrower fallback (smaller glucose font, dropped divider, or a stacked layout).
- Read
@Environment(\.dynamicTypeSize) / the widget's available size and pick a compact variant.
Whatever the approach, it should be verified at both default and zoomed display settings, on a small phone as well as a Max, and with all four slots populated with long values.
Summary
A user reports that the Live Activity card on the Lock Screen is clipped when the iPhone is set to the larger display / larger text option: the left edge of the card is cut off, so the glucose value and the
Delta:label are only partly visible (9 →instead of99 →,lta: +2instead ofDelta: +2). The right-hand metric grid (IOB/COB/Basal/Delta) and theLast Updateline render fine.Reported in the Loop Follow Facebook group: https://www.facebook.com/groups/loopfollowlnl/permalink/1745284946593861
Screenshots in the comment below.
Environment
Steps to reproduce (to be confirmed)
Cause
LockScreenLiveActivityViewis laid out entirely in fixed points, with hard minimum widths that cannot shrink:.frame(minWidth: 160, maxWidth: 184, alignment: .leading)—LoopFollowLAExtension/LoopFollowLiveActivity.swift:217.frame(width: 72, alignment: .leading)—LoopFollowLAExtension/LoopFollowLiveActivity.swift:325HStack(spacing: 12)plus the 1 pt divider, and the inner metric rows atspacing: 12.padding(.horizontal, 14)Minimum width the card demands:
160 + 12 + 1 + 12 + (72 + 12 + 72) = 341pt of content, plus 28 pt of horizontal padding ≈ 369 pt.Display Zoom renders the whole UI at a smaller logical resolution, so the container the Live Activity gets becomes narrower in points while every width above stays exactly the same. Once the demanded width exceeds what the container offers, the
HStackoverflows and the Lock Screen clips it — which matches the screenshots, where the overflow is cut off on the leading edge.All text in the card uses
.font(.system(size:)), i.e. fixed point sizes that don't scale with Dynamic Type. So a larger Text Size setting alone should not change this layout, which points at Display Zoom as the actual trigger; confirming with the reporter would settle it.The expanded Dynamic Island regions reuse the same 72 pt
MetricBlock/SlotView(LoopFollowLAExtension/LoopFollowLiveActivity.swift:356-368), so they should be checked in zoomed mode too.Possible directions
Not decided, listed for discussion:
minWidth: 160, and let the metric grid take the remainder.GridRow/.frame(maxWidth: .infinity)) so the columns share available width.ViewThatFitswith a narrower fallback (smaller glucose font, dropped divider, or a stacked layout).@Environment(\.dynamicTypeSize)/ the widget's available size and pick a compact variant.Whatever the approach, it should be verified at both default and zoomed display settings, on a small phone as well as a Max, and with all four slots populated with long values.