2011-07-28 40 views
5

Tôi đang cố gắng đặt khung cho số lần xem hình ảnh thành kích thước hình ảnh gốc và hiển thị hình ảnh ở giữa chế độ xem. Tôi đã viết đoạn mã sau cho điều này nhưng hình ảnh vẫn xuất hiện trên toàn bộ màn hình! Giả sử kích thước hình ảnh là 320x88, kích thước hình ảnh sẽ được thay đổi kích thước/kéo dài thành 320x460! Tôi muốn nó xuất hiện ở giữa màn hình vì vậy tôi đặt Y phối hợp với (460-88)/2 nhưng nó không hoạt động. Bất cứ ai có thể vui lòng giúp tôi giải quyết vấn đề này. Cảm ơn.iPhone: Hiển thị hình ảnh ở kích thước ban đầu

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

Trả lời

12

thử này

viewController.view.contentMode=UIViewContentModeCenter; 
+0

Hi Rakesh, mà làm việc nhưng nếu hình ảnh là iPhone 4 chiều rộng độ phân giải, tôi cần một nửa chiều rộng bằng cách thiết lập khung ImageView nhưng nó dường như không tạo ra bất kỳ sự khác biệt nào! Hình ảnh xuất hiện ở giữa màn hình nhưng chiều rộng của nó là 640 (iPhone4 res)! Tôi có thể giải quyết vấn đề này không? Xem mã đã chỉnh sửa của tôi. Cảm ơn. – applefreak

+0

Ngoài ra tôi không thấy màu nền của chế độ xem của tôi màu đen! – applefreak

+0

Tôi đã chấp nhận câu trả lời của bạn dựa trên câu hỏi ban đầu của tôi. Tôi đã đăng các mã mà sẽ chăm sóc của iPhone 4 kích thước và các vấn đề màu nền! Cảm ơn. – applefreak

2

bạn có thể đặt UIImageView để không căng hình ảnh .. ngay cả khi nó là kích thước đầy đủ nó sẽ hiển thị các hình ảnh trong trung tâm khi bạn thiết

imageView.contentMode = UIViewContentModeCenter 
+0

Cảm ơn. Điều này cũng hoạt động! nhưng tôi không thể giải quyết vấn đề kích thước iPhone4 mà tôi đã đề cập để trả lời câu trả lời của Rakesh. Tôi có thể loại bỏ nó không? – applefreak

0

Làm việc sau đây hoàn hảo cho các yêu cầu của tôi!

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

Chạy qua câu hỏi này trong khi cố gắng đạt được cùng một tệp storyboard. Cũng giống như một sự bổ sung: trong kịch bản cho cùng một điều bạn có thể chọn Mode = Center của UIImageView

enter image description here

Các vấn đề liên quan