Що таке остаточний кутовий радіус iPhone X?


10

Я експериментував і не знайшов переконливого кутового радіусу для iPhone X.

Використовуючи Xcode, я створив коло шириною і довжиною 80 (так що радіус 40), і поклав його у верхній лівий кут iPhone X (так що x і y дорівнюють нулю), між колом є невеликий білий проміжок і край екрана, який ви можете побачити тут:

Я також спробував інший метод, роблячи це кнопкою:

button.frame.size.height = 812
button.frame.size.width = 375
button.layer.cornerRadius = 40
button.center = self.view.center

У цьому мені залишається:

Тож питання полягає в тому, який справжній радіус кута? Або що відбувається з Xcode?

Відповіді:


16

Кути iPhone X не мають переконливого кутового радіусу. Вони не є звичайними дугами, це " суцільні кути ".

Ви не можете повторити їх за допомогою простого .cornerRadius, а також не можете використовувати власні безперервні кути Apple, оскільки це приватний API.

CALayer на iOS 11 має приватну властивість "kontinuCorners", завдяки чому багато закруглених кутів у SpringBoard - і, швидше за все, більше! Зараз я ревную.

https://twitter.com/argentumko/status/955773459463790592

Найближчим ви можете дістатись без власної реалізації - закруглений прямокутний малюнок UIBezierPath, який використовується _continuousRoundedRectBezierPath.


велике спасибі, це має набагато більше сенсу зараз
chriscrutt

1

Бред Елліс має статтю з докладним описом кривих на iPhone X .

[..] Куточки екрану iPhone X із закругленнями не використовують класичний метод округлення, коли ви рухаєтеся по прямій лінії, а потім дугою, використовуючи один квадрант кола. Натомість математика трохи складніше. Зазвичай називається білока, схил починається швидше, але більш щадний.

Ви можете побачити різницю тут:

введіть тут опис зображення


1

Наступний рядок Objective-C

NSLog(@"%@", [self traitCollection]);

виконаний в тренажері iOS 11.0.1 на iPhone X дає наступний вихід:

<UITraitCollection: ... _UITraitNameDisplayCornerRadius = 39.000000>

Так виглядає в якийсь момент , хтось із Apple подумав, що радіус кута - 39 балів. Я думаю, це найофіційна відповідь, яку ми отримаємо. :-) Але, як пояснюють інші відповіді, ця інформація не дуже корисна ...

Ще більше марної інформації: Деякі інші тренажери iOS 11.0 та 11.1 повідомляють _UITraitNameDisplayCornerRadius = 0.000000про iPhone без круглих кутів (наприклад, дивіться це питання ТА ), але симулятор для iOS 12.2 не включає _UITraitNameDisplayCornerRadiusвластивість у вихідний журнал UITraitCollection, а також справжній iPhone X працює iOS 11.2.1. Я думаю, що вони видалили цю властивість з виходу журналу в iOS 11.2 або близько того.

PS: Я думаю, це не має значення, але я отримав ці результати на Xcode 10.1.


1

Форму кутів не можна описати як дугу. Однак його можна відтворити за допомогою загальнодоступного API, оскільки iOS 11. UIBezierPath.init(roundedRect:cornerRadius:)створить прямокутник із суцільними закругленими кутами.

Джерело: https://medium.com/fueled-engineering/continuous-rounded-corners-with-uikit-b575d50ab232

iOS 13 представив явну cornerCurveвластивість на CALayer: https://developer.apple.com/documentation/quartzcore/calayercornercurve

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.