簡體   English   中英

UIImagePickerController imagePicker不適合iPhone 4屏幕

[英]UIImagePickerController imagePicker not fitting to iPhone 4 Screen

我讓用戶使用UIImagePickerControllerSourceTypePhotoLibrary選擇圖像。

然后,我可以使用以下方法來獲取編輯后的圖像,應用疊加層,然后將其傳遞給我的PostPictureViewController進行顯示。 在顯示時,我希望圖像保持其原始的寬高比並適合屏幕。

在使用4.3 sdk的模擬器上,它可以正常工作,但是當我將其放在iPhone 4視網膜顯示屏上時,圖像被縮放到左上角,而全屏顯示的圖像只有1/4,而沒有原始的寬高比。 !

我如何縮小它以適合屏幕,就像它在模擬器上一樣?

我也嘗試過完全消除覆蓋,只返回原始圖像和編輯后的圖像進行顯示,但是即使那樣也不能保持其原始縱橫比!

- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{        
    // Access the cropped image from info dictionary
    image = [info objectForKey:@"UIImagePickerControllerEditedImage"];

    // Combine image with overlay before saving!!
    image = [self addOverlayToImage:image];

    overlayGraphicView.image = nil;

    // Take the picture image to the post picture view controller
    postPictureView = [[PostPictureViewController alloc] init:image];    
    [picker pushViewController:postPictureView animated:YES];

    [picker release],picker = nil;
}

這是我的添加疊加圖像功能:

- (UIImage*) addOverlayToImage:(UIImage*)originalImage
{
    //CGRect cgRect =[[UIScreen mainScreen] bounds];
    CGSize size = originalImage.size;

    if (UIGraphicsBeginImageContextWithOptions != NULL) {
        // Use for iPhone 4 Retina
        UIGraphicsBeginImageContextWithOptions(size, YES, 0.0);
    } else {
        UIGraphicsBeginImageContext(size);
    }

    UIImage* overlayImage = [UIImage imageNamed:overlayGraphicName];

    [originalImage drawAtPoint:CGPointMake(0,0)];

    [(UIImage *)overlayImage drawAtPoint:CGPointMake(0,(originalImage.size.height/2 - overlayImage.size.height/2) + 20)];

    UIImage *finalImage = UIGraphicsGetImageFromCurrentImageContext();
    [finalImage retain];

    UIGraphicsEndImageContext();

    return finalImage;
}

最后在我的PostPictureViewController中,我在viewdidload中顯示圖像:

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self.view setBackgroundColor:[UIColor blackColor]];

    // Load the picker image for viewing
    UIImageView *pickerView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320, 480)];
    [pickerView setImage:pickerImage];
    pickerView.contentMode = UIViewContentModeScaleAspectFit;
    [self.view addSubview:pickerView];
    [pickerView release],pickerView=nil;
}

在此用於顯示圖像的viewdidload方法中,如果我這樣做:

UIImageView *pickerView = [[UIImageView alloc] initWithImage:pickerImage];

則圖像不會在模擬器上垂直居中放置在屏幕上,而是從0,0開始,在此實際上使用CGRectMake定義幀的寬度和高度在屏幕上居中。

顯然,對於iPhone 4,我也嘗試更改此設置:

UIImageView *pickerView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 640, 960)];

但是圖像仍然會放大到比屏幕更大和更大!

您可以在界面構建器中將imageview的屬性設置為Aspectfit。這會有所幫助。或者通過編程,您可以使用imageView.contentMode = UIViewContentModeScaleAspectFit;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM