2011-07-28 21 views
5

Próbuję ustawić ramkę dla podglądu obrazu na oryginalny rozmiar obrazu i wyświetlić go w środku widoku. Napisałem następujący kod, ale obraz nadal pojawia się na całym ekranie! Załóżmy, że rozmiar obrazu wynosi 320x88, rozmiar/rozciągnięcie do 320x460 jest zmieniony! Chcę, aby pojawił się na środku ekranu, więc ustawiam współrzędną Y na (460-88)/2, ale to nie działa. Czy ktoś mógłby mi pomóc rozwiązać ten problem. Dzięki.iPhone: Wyświetl obraz w oryginalnym rozmiarze

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]; 

Odpowiedz

12

spróbować

viewController.view.contentMode=UIViewContentModeCenter; 
+0

Hi Rakesh, że działa, ale jeśli obraz jest iPhone 4 rozdzielczość szerokość, muszę połowy szerokości pomocą ustawienia ramki ImageView, ale to nie robi żadnej różnicy! Obraz pojawia się na środku ekranu, ale jego szerokość wynosi 640 (iPhone4 res)! Czy mogę rozwiązać ten problem? Zobacz mój edytowany kod. Dzięki. – applefreak

+0

Również nie widzę koloru tła mojego widoku w czerni! – applefreak

+0

Przyjąłem twoją odpowiedź na podstawie mojego pierwotnego pytania. Napisałem kod, który zajmuje się rozmiarem iPhone'a 4 i kolorem tła! Dzięki. – applefreak

2

można ustawić UIImageView nie rozciągnąć obraz .. nawet jeśli jest w pełnym rozmiarze pokaże obraz w centrum po ustawieniu

imageView.contentMode = UIViewContentModeCenter 
+0

Dzięki. To też działa! ale nie jestem w stanie rozwiązać problemu z wielkością iPhone4, o którym wspomniałem w odpowiedzi na odpowiedź Rakesha. Czy mogę się go pozbyć? – applefreak

0

Następujące prace idealnie spełniają moje wymagania!

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

biegł to pytanie, starając się osiągnąć to samo w pliku storyboard. Tylko jako dodatek: w serii ujęć, za to samo można wybrać Mode = Center z UIImageView

enter image description here

Powiązane problemy