15 votes

Quel est le rayon d'angle définitif de l'iPhone X ?

J'ai fait des expériences et je n'ai trouvé aucun rayon d'angle concluant pour l'iPhone X.

En utilisant Xcode, j'ai créé un cercle avec une largeur et une longueur de 80 (donc un rayon de 40), et je l'ai placé dans le coin supérieur gauche de l'iPhone X (donc x et y sont zéro), il y a un petit espace blanc entre le cercle et le bord de l'écran, que vous pouvez voir ici :

J'ai également essayé une autre méthode, en faisant cela avec un bouton :

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

Sur ce, je me retrouve avec :

La question est donc de savoir quel est le véritable rayon de courbure ? Ou qu'est-ce qui se passe avec Xcode ?

21voto

grg Points 181593

Les coins de l'iPhone X ne sont pas ont un rayon d'angle concluant. Ce ne sont pas des arcs normaux, ce sont des ' coins continus '.

Vous ne pouvez pas les reproduire avec un simple .cornerRadius, et vous ne pouvez pas non plus utiliser les coins continus d'Apple, puisqu'il s'agit d'une API privée.

CALayer sur iOS 11 possède une propriété privée "continuousCorners", qui est à l'origine de nombreux coins arrondis dans SpringBoard - et probablement d'autres ! Maintenant je suis jaloux.

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

Le plus proche que vous puissiez obtenir sans votre propre implémentation est le dessin de rectangle arrondi de UIBezierPath, qui utilise _continuousRoundedRectBezierPath .

3voto

mouviciel Points 36624

La ligne Objective-C suivante

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

exécuté dans le simulateur iOS 11.0.1 sur l'iPhone X produit le résultat suivant :

<UITraitCollection: ... _UITraitNameDisplayCornerRadius = 39.000000>

Donc, il semble qu'à à un moment donné dans le temps, quelqu'un chez Apple, on pensait que le rayon d'angle était de 39 points. Je suppose que c'est le plus officiel réponse que nous obtiendrons. :-) Mais comme l'expliquent les autres réponses, cette information n'est pas très utile...

Encore plus d'informations inutiles : Certains autres simulateurs d'iOS 11.0 et 11.1 rapportent _UITraitNameDisplayCornerRadius = 0.000000 pour les iPhones sans coins arrondis (voir par exemple cette question SO ), mais le simulateur pour iOS 12.2 fait pas comprennent le _UITraitNameDisplayCornerRadius dans la sortie du journal pour UITraitCollection et un vrai iPhone X fonctionnant sous iOS 11.2.1 non plus. Je suppose qu'ils ont supprimé cette propriété de la sortie du journal dans iOS 11.2 ou plus.

P.S. : Je suppose que cela n'a pas d'importance, mais j'ai obtenu ces résultats avec Xcode 10.1.

3voto

Leon Deriglazov Points 131

La forme des angles ne peut être décrite comme un arc. Elle peut toutefois être reproduite à l'aide de l'API publique depuis iOS 11. UIBezierPath.init(roundedRect:cornerRadius:) créera un rectangle avec des coins arrondis continus.

Source : https://medium.com/fueled-engineering/continuous-rounded-corners-with-uikit-b575d50ab232

iOS 13 a introduit une fonction explicite cornerCurve sur CALayer : https://developer.apple.com/documentation/quartzcore/calayercornercurve

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X