Главное правило:
Если применяете glassEffect() к кастомным вью - оборачивайте их в общий контейнер (например, HStack или UIView).
ZStack {
HStack {
FirstView()
SecondView()
}
.glassEffect() // Эффект применяется ко всей группе
}
HStack {
ZStack { // Отдельные контейнеры для каждой вью
FirstView()
.glassEffect() // Эффект применяется только к данному вью
}
ZStack { // Отдельные контейнеры для каждой вью
SecondView()
.glassEffect() // Эффект применяется только к данному вью
}
}
Почему это важно?
- Glass-эффект анализирует пиксели вокруг себя для создания полупрозрачного размытия.
- Если наложить два эффекта друг на друга — получится грязное наложение (артефакты, мерцание).
- Нативные системные элементы (навигация, тулбары) уже содержат правильную группировку — их не нужно оборачивать.
Когда можно нарушить правило?
- Если используете одиночный glass-элемент без пересечений с другими.
- Для статичного фона (например, картинка под стеклом).