私はUIImagePickerControllerSourceTypePhotoLibraryで画像を選択することができます。UIImagePickerController imagePickerがiPhone 4の画面に適合しない
次に、編集した画像を取得し、オーバーレイを適用して、それを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でフレームの幅と高さを定義すると、画面上にその中心が表示されます。
UIImageView *pickerView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 640, 960)];
をしかし、画像は依然として高いと画面その後、大きなまでスケールアップされています
もちろん、iPhone 4のために、私が試してみました、あまりにもこれを変えます!
あなたのご意見ありがとうございましたが、質問を読んでください、私はすでにそのセットを持っていますが、それは何か違いがあるようです!:pickerView.contentMode = UIViewContentModeScaleAspectFit; – GameDev
誰ですか?確かにそれは複雑ではない?多分ちょうど見落としですか? – GameDev