IOS 26 UIGlassEffect: освещение угловых кромок исчезает на закругленном прямоугольнике, но отлично работает на форме круIOS

Программируем под IOS
Ответить
Anonymous
 IOS 26 UIGlassEffect: освещение угловых кромок исчезает на закругленном прямоугольнике, но отлично работает на форме кру

Сообщение Anonymous »

Сейчас я экспериментирую с новым UIGlassEffect в iOS 26 и столкнулся со странной проблемой визуального рендеринга углов.
Проблема: я создаю собственное раскрывающееся меню (

Код: Выделить всё

VSCaptureModeDropdownView
) с фиксированным угловым радиусом (

Код: Выделить всё

34). Однако зеркальные блики и краевое освещение по углам, кажется, ломаются или полностью исчезают. Вместо насыщенного края 3D-стекла он выглядит просто как дешевая плоская рамка толщиной 1 пиксель (см. прикрепленное изображение).
Эффект жидкого стекла
[b]Код 1: Сломанная установка (прямоугольник с закругленными углами)[/b]
Swift
private func setupBackground() {
if #available(iOS 26.0, *) {
let glassEffect = UIGlassEffect()
glassEffect.isInteractive = true
// To match a dark design, I used a black tint with 0.8 alpha
glassEffect.tintColor = .black.withAlphaComponent(0.8)

let effectView = UIVisualEffectView(effect: glassEffect)
effectView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
effectView.clipsToBounds = true
addSubview(effectView)
self.visualEffectView = effectView
}
}

override func layoutSubviews() {
super.layoutSubviews()
visualEffectView?.frame = bounds
// Setting a fixed corner radius breaks the edge lighting
visualEffectView?.layer.cornerRadius = 34
}
Код 2: Рабочая установка (форма круга/таблетки) Интересно, у меня есть еще один компонент (

Код: Выделить всё

VSGlassIndicatorView
), который использует почти такую ​​же настройку, но работает отлично и сохраняет красивые края стекла.
введите описание изображения здесь
Единственное существенное отличие состоит в том, что это идеальная форма круга/таблетки, где угловой радиус рассчитывается динамически:

Код: Выделить всё

private func setupIfNeeded() {
guard #available(iOS 26.0, *) else { return }
let glassEffect = UIGlassEffect()
glassEffect.isInteractive = true
let effectView = UIVisualEffectView(effect: glassEffect)
effectView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
effectView.clipsToBounds = true
addSubview(effectView)
visualEffectView = effectView
}

public override func layoutSubviews() {
super.layoutSubviews()
visualEffectView?.frame = bounds
// This renders the glass effect perfectly
visualEffectView?.layer.cornerRadius = min(bounds.width, bounds.height) / 2
}
Мой вопрос: Почему эффект стекла теряет освещение краев на стандартном прямоугольнике с закругленными углами (

Код: Выделить всё

cornerRadius = 34
), но отлично работает с формой капсулы/круга? Кто-нибудь еще сталкивался с этой проблемой и есть ли правильный способ ее исправить, чтобы фиксированный скругленный прямоугольник сохранял края 3D-стекла?
Заранее спасибо!

Подробнее здесь: https://stackoverflow.com/questions/798 ... ct-but-wor
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»