Antes de pedir a mis preguntas, esto es de la documentación de Apple re: cómo determinar el ancho de una cadena usando cuarzo:iPhone SDK: ¿Cómo mides el ancho y la altura de una cuerda usando Quartz?
Si las mediciones de texto son importantes para su aplicación, es posible a calcular utilizando cuarzo Funciones 2D Sin embargo, es posible que primero considere utilizar ATSUI, cuya fortaleza está en el diseño del texto y la medición . ATSUI tiene varias funciones que obtienen métricas de texto. No solo puede obtener métricas de texto posteriores al diseño, pero en los raros casos las necesita, puede obtener métricas de texto antes del diseño. A diferencia de Quartz, para lo cual debe realizar los cálculos usted mismo, ATSUI calcula las medidas por usted. Por ejemplo, puede obtener el rectángulo delimitador de imágenes para texto llamando a la función ATSUI ATSUMeasureTextImage.
Si decide que el texto de cuarzo se adapte a sus necesidades mejor que ATSUI (o cacao), puede seguir estos pasos para medir la anchura del texto antes de cuarzo dibuja:
- Llame a la función CGContextGetTextPosition a obtener la posición actual del texto
- Establezca el modo de dibujo de texto en kCGTextInvisible con la función CGContextSetTextDrawingMode.
- Dibuje el texto llamando a la función CGContextShowText para dibujar el texto en la posición actual del texto.
- Determine la posición final del texto llamando a la función CGContextGetTextPosition.
- Reste la posición de inicio desde la posición final para determinar el ancho del texto.
Aquí están mis preguntas:
Lo que tienes es la mejor manera de determinar el ancho de una cadena usando núcleo de gráficos? Parece endeble y dado que mi texto coexiste con elementos gráficos 2D, me gustaría utilizar el mismo contexto para todas las representaciones. Esperaba que hubiera algún método compacto, como:
CGContextGetTextWidthAndHeight (context, text);
He leído que ATSUI está desactualizado y va a ser reemplazado por Core Text. ¿Es cierto? Si es así, ¿está en el SDK de iPhone?
El texto principal ahora se envía en iOS 4. Sin embargo, los métodos que pgb respondieron son más simples. – Eonil