iphone - samsung - ¿Cómo imprimir o registrar el valor del objeto CGSize?
imprimir desde iphone a impresora hp (6)
Estaba intentando registrar (imprimir) el valor del objeto CGSize de esta manera:
CGSize sizeOfTab = CGSizeMake(self.frame.size.width/tabCount, 49);
NSLog(@"size of tab is %@",sizeOfTab);
¿Hay algo mal en este código? mi aplicación se bloquea mientras el control llega a la declaración NSLog.
Gracias Prasad
% @ significa que está intentando insertar una cadena. CGSize no es una cadena, y no puede convertirse automágicamente en una. Es por eso que tu aplicación falla. En su lugar, debe registrar las propiedades individuales por separado, como
NSLog(@"width is %f, height is %f.", sizeOfTab.width, sizeOfTab.height);
% f se usa porque las propiedades de ancho y alto son del tipo float .
Para otras conversiones de formato, consulte los documentos: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html
Aquí self.view es la vista de UIView Class. Puede imprimir cualquier cuadro con este registro.
NSLog(@"self.view.Frame=%@", NSStringFromCGRect(self.view.frame));
Como JoeBlow mencionó ( me di cuenta después de tipear y formatear esta respuesta ), también está la función UIKit, NSStringFromCGSize()
, para impresión bonita, y su inversa, CGSizeFromString()
, para crear una estructura CGSize
desde un objeto NSString
.
Apple documenta el parámetro de string
de CGSizeFromString(
string
)
siguiente manera:
Una cadena cuyos contenidos son de la forma "{ w , h }", donde w es el ancho y h es la altura. Los valores w y h pueden ser valores enteros o flotantes. Un ejemplo de una cadena válida es @ "{3.0,2.5}". La cadena no está localizada, por lo que los elementos siempre se separan con una coma.
Ejemplo
CGSize size = CGSizeFromString(@"{320,568}");
NSLog(@"Pretty printed size: %@", NSStringFromCGSize(size));
Salida
Pretty printed size: {320, 568}
Otras funciones útiles ( Referencia CGGeometry )
- CGRectGetHeight ()
- CGRectGetWidth ()
Prueba esto
CGSize sizeOfTab = CGSizeMake(self.frame.size.width/tabCount, 49);
NSLog(@"size of tab is %@",NSStringFromCGSize(sizeOfTab));
El bloqueo ocurre porque sizeOfTab
no está en formato NSString
.
Puede llamar a lo siguiente para imprimir el valor que está buscando:
NSLog(@"width = %f, height = %f", mySize.width, mySize.height);
CGSize
tiene el ancho y la altura de los CGFloat
que son de tipo CGFloat
. Puede imprimirlos usando lo siguiente
NSLog(@"Width = %f, height = %f",sizeOfTab.width, sizeofTab.height);