gpt4 book ai didi

iphone - UIImagePickerController imagePicker 不适合 iPhone 4 屏幕

转载 作者:行者123 更新时间:2023-11-29 05:02:45 24 4
gpt4 key购买 nike

我让用户使用 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;

关于iphone - UIImagePickerController imagePicker 不适合 iPhone 4 屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6490854/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com