15 votos

Cuál es el radio de esquina definitivo del iPhone X?

He estado experimentando y no he encontrado ningún radio de esquina concluyente para el iPhone X.

Usando Xcode, he creado un círculo con una anchura y una longitud de 80 (por lo que el radio es de 40), y lo puse en la esquina superior izquierda del iPhone X (por lo que x e y son cero), hay un pequeño espacio blanco entre el círculo y el borde de la pantalla, que se puede ver aquí:

También probé otro método, haciendo esto con un botón:

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

Con esto me quedo:

Así que la pregunta es, ¿cuál es el radio real de las esquinas? ¿O qué pasa con Xcode?

21voto

siva Puntos 23

Las esquinas del iPhone X no tienen un radio de esquina concluyente. No son arcos normales, son ' esquinas continuas '.

No puedes replicar esto con un simple .cornerRadius, y tampoco puedes usar las propias esquinas continuas de Apple, ya que es una API privada.

CALayer en iOS 11 tiene una propiedad privada "continuousCorners", que es lo que potencia muchas esquinas redondeadas en SpringBoard - ¡y probablemente más! Ahora estoy celoso.

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

Lo más parecido que se puede conseguir sin una implementación propia es el dibujo de rectángulos redondeados de UIBezierPath, que utiliza _continuousRoundedRectBezierPath .

1 votos

Muchas gracias esto tiene mucho más sentido ahora

3voto

mouviciel Puntos 36624

La siguiente línea de Objective-C

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

ejecutado en el simulador de iOS 11.0.1 en el iPhone X produce el siguiente resultado:

<UITraitCollection: ... _UITraitNameDisplayCornerRadius = 39.000000>

Así que parece que en algún punto en el tiempo, alguien en Apple pensaba que el radio de la esquina era de 39 puntos. Supongo que eso es lo más oficial respuesta que obtendremos. :-) Pero como explican las otras respuestas, esa información no es muy útil...

Más información inútil aún: Algunos otros simuladores de iOS 11.0 y 11.1 informan _UITraitNameDisplayCornerRadius = 0.000000 para iPhones sin esquinas redondas (por ejemplo, ver esta pregunta del SO ), pero el simulador para iOS 12.2 sí lo hace no incluyen el _UITraitNameDisplayCornerRadius en la salida del registro para UITraitCollection , y tampoco lo hace un iPhone X real con iOS 11.2.1. Supongo que han eliminado esta propiedad de la salida del registro en iOS 11.2 o así.

P.D.: Supongo que no importa, pero obtuve estos resultados en Xcode 10.1.

3voto

Leon Deriglazov Puntos 121

La forma de las esquinas no puede describirse como un arco. Sin embargo, puede reproducirse utilizando la API pública desde iOS 11. UIBezierPath.init(roundedRect:cornerRadius:) creará un rectángulo con esquinas redondeadas continuas.

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

iOS 13 introdujo un cornerCurve en CALayer: https://developer.apple.com/documentation/quartzcore/calayercornercurve

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X