Чат построен так, как советуют многие источники: табличное представление имеет аффинное преобразование, а ячейки также имеют аффинное преобразование (как в разделе «Как заполнить UITableView снизу вверх?») — в результате у нас есть список сообщений, выровненный по нижнему краю, с самыми новыми сообщениями внизу.
До выхода IOS 26 все выглядело хорошо. После тестов с iOS 26 я заметил, что если сообщения занимают более 50% высоты экрана и отображается клавиатура (есть реализован IQKeyboardManager, который сдвигает tableView вверх, когда клавиатура видна), к представлению добавляется некоторая альфа-маска. Действительно интересно, почему оно добавляется только в том случае, если более 50% высоты uitableview занято ячейками.
Мне не удалось найти причину такого поведения — у меня всего два наблюдения. Если я устанавливаю «Уменьшить прозрачность» (Настройки/Доступность/Отображение и размер текста), альфа-маска становится непрозрачной (см. скрины). Если я закомментирую преобразование tableView (tableView.transform = CGAffineTransform(scaleX: 1, y: -1)), прозрачная маска исчезнет. Очевидно, это результат интерфейса Liquid Glass (если я установлю для UIDesignRequiresCompatibility значение YES в Info.plist, Liquid Glass отключится и альфа-маска не будет).
Любой совет или помощь по удалению этой альфа-маски будет принят с благодарностью. Прикрепил изображения, показывающие, как выглядит вид без смещенной вверх клавиатуры и с поднятой клавиатурой (три ситуации - сообщения занимают менее 50% высоты - нормальный вид, сообщения занимают более 50% - альфа-маска, сообщения занимают более 50% и включено «Уменьшить прозрачность» - непрозрачная маска). Вы также можете найти иерархию представлений, взятую из Xcode с выбранной альфа-маской.






Подробнее здесь: https://stackoverflow.com/questions/798 ... -on-ios-26
Мобильная версия