2012-07-19 103 views
1

UIImageView是否可以讓橫向圖像處理與縱向圖像不同的橫向圖像?全屏模式下的橫向模式圖像UIImageView

我會盡力解釋,我有ImageViewControllerUIImageView填充整個屏幕。
在某些情況下,用戶啓動UIImagePickerController並從相機膠捲中選擇一張照片。
然後,我創建了ImageViewController的實例與圖片,並將它推

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; 


    ImageViewController *ivc = [[ImageViewController alloc] initWithImage:image]; 
    [picker pushViewController:ivc animated:YES]; 
    [ivc release]; 
} 

的問題是,如果圖像是在橫向模式下,它仍然充滿了整個屏幕。
我希望它看起來像iPhone照片應用程序呈現風景圖像(在黑色背景屏幕的中心)。

在UIImageView中顯示風景模式圖像的方式是否有構建?還是需要根據圖像方向設置imageView框?

回答

0
UIImageView *imgView; 
imgView.contentMode = UIViewContentModeCenter; 
+0

我不希望它填滿整個屏幕 – Eyal 2012-07-19 13:02:42

+0

它不會填滿整個屏幕。它將適合你的屏幕放大而不縮放內容,以100%提供的UIImageView。 – Eugene 2012-07-19 13:16:34

3

剛剛成立的:

imageView.contentMode = UIViewContentModeAspectFit; 

並能持續的比重適應屏幕,不加油吧。

+0

這對於橫向圖像非常適用,但是當我設置縱向圖像時,它不會填滿整個屏幕,因此我會在左右邊緣留出一小塊空間,爲什麼? – Eyal 2012-07-19 13:04:14

+0

在viewDidLoad中抓取圖像大小,看看高度是否大於寬度。如果是,它是縱向圖像,您應該設置AspectFill contentMode,如果它不是橫向或正方形,則應使用AspectFit或Center contentModes。 – Eugene 2012-07-19 13:20:09

+0

這是因爲景觀中的圖像的比例與UIImageView的比率不同。你可以執行一些計算來檢查圖像大小的比例,並根據它,定義contentMode到UIViewContentModeAspectFit或UIViewContentModeAspectFill – 2012-07-19 13:20:20

1

您可能想要根據圖片的比例更改UIImageViewcontentMode屬性。

所以在viewDidLoad

if (imageView.image.size.height > imageView.image.size.width) { 
    imageView.contentMode = UIViewContentModeAspectFill; 
} else { 
    imageView.contentMode = UIViewContentModeAspectFit; 
} 

,並更改模式,當用戶切換爲橫向,所以例如在willAnimateRotationToInterfaceOrientation:duration:

if (UIInterfaceOrientationIsLandscape(toIntefaceOrientation)){ 
    if (imageView.image.size.height > imageView.image.size.width) { 
     imageView.contentMode = UIViewContentModeAspectFit; 
    } else { 
     imageView.contentMode = UIViewContentModeAspectFill; 
    } 
} else { 
    if (imageView.image.size.height > imageView.image.size.width) { 
     imageView.contentMode = UIViewContentModeAspectFill; 
    } else { 
     imageView.contentMode = UIViewContentModeAspectFit; 
    } 
} 

注意:注意測試,但可能工作