После презентации Apple решил узнать и добавить углы скругления экрана в ScreenLines для новых устройств. Установил XCode RC и начал заполнять таблицу.
Для определения радиуса используем значение скрытой переменной. При публикации в AppStore это нужно убрать, поэтому завернём в #if DEBUG
, чтобы всё само сделалось.
extension UIScreen {
static var current: UIScreen? {
UIWindow.current?.screen
}
public var deviceCornerRadius: CGFloat {
let model = UIDevice.current.type
let radius = model.screenCornerRadius
#if DEBUG
let actualRadius = self.value(forKey: "_displayCornerRadius") as? CGFloat ?? 0
print("Model: \(model), stored: \(radius), actual: \(actualRadius)")
#endif
return radius
}
}
И получаем такие же углы, как и в iPhone 16 Pro
extension Model {
var screenCornerRadius: CGFloat {
switch self {
//...
case .iPhone16Pro, .iPhone16ProMax: 62.0
case .iPhone17: 62.0
case .iPhone17Pro: 62.0
case .iPhone17ProMax: 62.0
case .iPhoneAir: 62.0
//...
}
}
//...
}
Но запускаем приложение на симуляторе и видим, что углы обрезаны:

Проверяем на iPhone 17, 17 Pro и 17 Pro Max — такой проблемы нет. Проблема симулятора? XCode Preview тоже срезает углы. Попробуем новый ConcentricRectangle, представленный в iOS 26, который сам подстраивается под родительский элемент?

Проблема осталась (фон покрасил в зелёный чтобы лучше видеть линию и отличать от рамок устройства). Кстати, для iPhone 17 Pro и других устройств этот ConcentricRectangle работает на четыре с минусом (линия угла режется):

В итоге просто исправил таблицу вручную, проверив на каждом устройстве, а ConcentricRectangle убрал. Исправят ли проблему к официальному релизу iOS 26? Или на реальном iPhone Air всё будет по-другому?