контейнеры и иметь одинаковую высоту, как виджет Apple Shortcuts.
Ожидаемый результат:
Все кнопки должны иметь одинаковую высоту и равномерно заполнять доступное пространство, например:

Фактический результат:
Фоны кнопок не заполняют расчетную высоту контейнера. Сами контейнеры равны (проверено по границам отладки
, показаны высотой 44 pt), но содержимое/фон кнопки не дотягивает:
Текущий Реализация:
Использование GeometryReader для вычисления cellHeight, а затем применение его с помощью .frame(height: cellHeight):
Код: Выделить всё
GeometryReader { geo in
let cellHeight = (geo.size.height - totalSpacing - totalPadding) / 2
VStack(spacing: 8) {
ForEach(0..
Button(intent: ExecuteWidgetActionIntent(...)) {
VStack(alignment: .leading, spacing: 8) {
Image(systemName: action.iconName)
Spacer(minLength: 0)
Text(action.displayName)
}
.padding(12)
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .leading)
.background(Color.blue)
.clipShape(RoundedRectangle(cornerRadius: 14))
}
.buttonStyle(.plain)
< /code>
Границы отладки доказывают, что контейнеры имеют одинаковую высоту, но фоновые кнопки цветных кнопок не расширяются, чтобы заполнить их. Как я могу сделать фон кнопки
заполнить полную вычисленную высоту в Widgetkit? Каждая кнопка в стержне
[*] Ожидается: ряды будут распределять высоту одинаково
[*] Результат: верхняя строка все еще выше, чем нижняя ряд
[*] [b] grid с .gridcellUnsizedaxes ( /> [list]
Добавлено .gridcellunsizedaxes (.vertical) < /code> к сетку < /li>
Ожидается: GRID игнорирует внутренний размер содержания и распределять < /li>
Результат: без изменений, строки все еще неравны < /li>
. />GeometryReader with VStack/HStack and calculated heights:[/b]
Calculated exact cellHeight[*]Applied .frame(height: cellHeight) to each button container
[*]Expected: Buttons would fill the fixed Контейнеры высоты < /li>
Результат: Высоты контейнеров верны (подтверждаются отладчиками в 44PT), но фон кнопок не расширяется, чтобы заполнить их < /li>
< /ul>
< /li>
Код: Выделить всё
.frame(maxHeight: .infinity)Применено maxHeight к VStack внутри закрытия метки кнопки.
[*]Ожидается: содержимое кнопки расширится, чтобы заполнить доступное пространство.
[*]Результат: метка кнопки по-прежнему не заполняет высоту контейнера.
[/list]
[*]ZStack с фоном вне кнопки:
- Обернутая кнопка в ZStack с цветным фоном
- Ожидается: фон заполнит контейнер независимо
- Результат: фон также не заполняет расчетную высоту
Основная проблема: В WidgetKit содержимое кнопки имеет собственный внутренний размер, который не соответствует
фиксированной высоте родительского контейнера, хотя границы отладки подтверждают, что контейнеры равны.
Подробнее здесь: https://stackoverflow.com/questions/797 ... ing-geomet
Мобильная версия