2013-10-19 81 views
4

我使用的是UIImagePickerControllerUIView作爲我自己的子視圖子視圖。沒有什麼特別的,當我拍照時會出現問題。正在發生的事情是這樣的:UIImagePickerController的視圖大小不正確

1,我從UIImagePickerController的觀點看到的畫面是這樣的:

enter image description here

2這是我所看到的,當我拍攝照片( [self.imagePicker takePicture]; ),並把它放在一個UIImageView

enter image description here

從我看到的形象,出來在Y軸上稍高一些。有什麼辦法可以解決這個問題嗎?我不在乎我是否必須使用某種與圖像裁剪的,在出來:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info; 

,因爲我在UIImageViewcontentMode使用UIViewContentModeScaleAspectFill我可以理解這種行爲,但我希望能夠從我想要開始「看」的位置指定Y.

回答

4

之所以能夠28分鐘圖了這一點,很好哦,這裏有雲:

CGImageRef imageRef = CGImageCreateWithImageInRect([imageTaken CGImage], CGRectMake(0.0f, 0.0f, 960.0f, 960.0f)); 

[selectedImageView setImage:[UIImage imageWithCGImage:imageRef]]; 
CGImageRelease(imageRef); 

通過在960.0f裁剪我能夠保持畫面的原始質量,並能夠從中告訴Y我可以從中「剪掉」它。我還補充說:

+ (UIImage*)rotate:(UIImage*)image andOrientation:(UIImageOrientation)orientation; 
{ 
    UIGraphicsBeginImageContext(image.size); 

    CGContextRef context=(UIGraphicsGetCurrentContext()); 

    if (orientation == UIImageOrientationRight) { 
     CGContextRotateCTM (context, 90/180*M_PI) ; 
    } else if (orientation == UIImageOrientationLeft) { 
     CGContextRotateCTM (context, -90/180*M_PI); 
    } else if (orientation == UIImageOrientationDown) { 
     // NOTHING 
    } else if (orientation == UIImageOrientationUp) { 
     CGContextRotateCTM (context, 90/180*M_PI); 
    } 

    [image drawAtPoint:CGPointMake(0, 0)]; 
    UIImage *img=UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return img; 
} 

因爲圖片旋轉到左邊。