2011-06-02 14 views
4

我遇到了UIView的問題,它是由相機膠捲的圖像提供的。從相機卷加載的圖片過於拉伸在肖像模式

當我選擇在肖像模式下拍攝的照片時,該視圖總是將照片拉得太高,但是當我旋轉設備時,照片拉伸得很好。

 

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    if(info){ 
     { 
      [artView removeFromSuperview]; 
      artView = nil; 
      artView = [[UIImageView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]]; 

      artView.image = [info objectForKey:UIImagePickerControllerOriginalImage]; 
      artView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; 
      artView.contentMode = UIViewContentModeScaleAspectFill; 

[self.contentView addSubview:artView]; 

任何幫助表示讚賞。

+0

我或多或少都有同樣的問題。當我拍照時,這工作得很好。當我從相機膠捲中選擇一張照片時,沒有骰子。在我的情況下,我使用UIViewContentModeScaleAspectFill,將clipsToBounds設置爲YES,並將幀限制爲設備寬度和100.0高度。它最終將整個圖像裝配到高度上,以100pts的圖像填充框架。然而,嘗試使用相機拍攝,並且它做了正確的事情。 – 2012-06-27 14:57:17

回答

2

你的代碼看起來不錯,除了它泄漏,你有太多的開放大括號和沒有大括號。

你可能希望它看起來是這樣的:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    if (info) { 
     [artView removeFromSuperview]; 
     artView = [[UIImageView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]]; 

     artView.image = [info objectForKey:UIImagePickerControllerOriginalImage]; 
     artView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; 
     artView.contentMode = UIViewContentModeScaleAspectFill; 

     [self.contentView addSubview:artView]; 
     [artView release]; 
    } 
} 

UIViewContentModeScaleAspectFill不應拉伸圖像。它應該剪輯它。或許UIViewContentModeScaleAspectFit是你在找什麼?

+2

不幸的是,我遇到了和OP *一樣的問題,沒有語法/內存錯誤。 (我猜測OP是匆忙試圖將他的代碼修改到我們想看的部分。) – BHSPitMonkey 2011-07-01 18:39:41

+0

我想知道是否有跟進?我現在遇到了同樣的問題 – NSTJ 2012-08-20 04:59:39

5

如果其他人仍然有這個問題嘗試在contentMode後設置圖像。

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    if (info) { 
     [artView removeFromSuperview]; 
     artView = [[UIImageView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]]; 

     artView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; 
     artView.contentMode = UIViewContentModeScaleAspectFill; 
     artView.image = [info objectForKey:UIImagePickerControllerOriginalImage]; 

     [self.contentView addSubview:artView]; 
     [artView release]; 
    } 
} 
相關問題