2011-07-28 8 views
5

Estoy tratando de establecer el marco para la vista de la imagen en el tamaño original de la imagen y mostrarlo en el centro de la vista. ¡He escrito el siguiente código para esto pero la imagen todavía aparece en pantalla completa! ¡Supongamos que el tamaño de la imagen es 320x88, parece redimensionado/estirado a 320x460! Quiero que aparezca en el centro de la pantalla, por lo que configuro la coordenada Y (460-88)/2 pero no funciona. ¿Alguien podría ayudarme a resolver esto? Gracias.iPhone: Mostrar la imagen en su tamaño original

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:filePath]]; 

if(imageView.image.size.width == IPHONE4_RES_WIDTH) 
    [imageView setFrame: CGRectMake(0, 0, imageView.image.size.width/2, imageView.image.size.height/2)]; 

UIViewController *viewController = [[[UIViewController alloc] init] autorelease]; 
viewController.view.backgroundColor = [UIColor blackColor]; 

NSLog(@"%f : %f",viewController.view.bounds.size.height, imageView.bounds.size.height); 

viewController.view = imageView; 
viewController.view.contentMode = UIViewContentModeCenter; 

[self.navigationController pushViewController:viewController animated:YES]; 

Respuesta

12

prueba este

viewController.view.contentMode=UIViewContentModeCenter; 
+0

Hola Rakesh, que funciona, pero si la imagen es el iPhone 4 resolución de ancho, necesito la mitad del ancho de usar la configuración del marco de imageview pero ¡No parece hacer ninguna diferencia! ¡La imagen aparece en el centro de la pantalla pero su ancho es 640 (res iPhone4)! ¿Puedo abordar este problema? Ver mi código editado. Gracias. – applefreak

+0

¡Además, no veo el color de fondo de mi vista en negro! – applefreak

+0

He aceptado su respuesta en base a mi pregunta original. ¡Ya publiqué el código que se encarga de los problemas de tamaño de iPhone 4 y color de fondo! Gracias. – applefreak

2

puede establecer el UIImageView que se estira la imagen .. incluso si es de tamaño completo se mostrará la imagen en el centro cuando se establece

imageView.contentMode = UIViewContentModeCenter 
+0

Gracias. ¡Esto también funciona! pero no puedo resolver el problema de tamaño de iPhone4 que mencioné en respuesta a la respuesta de Rakesh. ¿Puedo deshacerme de eso? – applefreak

0

¡El siguiente funciona perfectamente para mis requerimientos!

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:filePath]]; 

// Reduce the width and height for iPhone 4 res 
if(imageView.image.size.width == IPHONE4_RES_WIDTH) 
    [imageView setFrame: CGRectMake(0, 0, imageView.image.size.width/2, imageView.image.size.height/2)]; 


UIViewController *viewController = [[[UIViewController alloc] init] autorelease]; 
viewController.view.backgroundColor = [UIColor blackColor]; 

float X = (viewController.view.bounds.size.width - imageView.bounds.size.width)/2; 
float Y = (viewController.view.bounds.size.height - imageView.bounds.size.height)/2 - 50; // Size of tabbar and navigation bar deducted 

NSLog(@"(%f, %f) : (%f,%f)",X,Y,imageView.bounds.size.width,imageView.bounds.size.height); 

[viewController.view addSubview:imageView]; 

//viewController.view = imageView; 
//viewController.view.contentMode = UIViewContentModeCenter; 

// Set in the center of the screen 
if(imageView.image.size.width == IPHONE4_RES_WIDTH) 
    [imageView setFrame: CGRectMake(X, Y, imageView.image.size.width/2, imageView.image.size.height/2)]; 
else 
    [imageView setFrame: CGRectMake(X, Y, imageView.image.size.width, imageView.image.size.height)]; 

[self.navigationController pushViewController:viewController animated:YES]; 
2

Resolvió esta pregunta al intentar lograr lo mismo en un archivo storyboard. Así como una adición: en el guión gráfico para la misma cosa puede seleccionar Mode = Center de UIImageView

enter image description here

Cuestiones relacionadas