0

編集:私は使用してUIStoryBoardいます。

私はpresentedこのようにしています:

UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];

imagePicker.delegate = self;

imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; //| UIImagePickerControllerSourceTypeSavedPhotosAlbum ;
imagePicker.mediaTypes = [NSArray arrayWithObjects:(NSString *) kUTTypeImage,nil];

if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary])
{
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
    {
        imagePicker.allowsEditing = YES;
        [self.navigationController presentViewController:imagePicker animated:YES completion:^{

        }];  
    }
}

今いつdissmissed

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
   UIImage *image = info[UIImagePickerControllerEditedImage];
    NSLog(@"Image : %@",image);
    [self dismissViewControllerAnimated:YES completion:^{
    }];
}

viewに示すように、次のようになりますfiqure

ここに画像の説明を入力

EDIT : ビューを閉じると、ビューが 20px まで押し上げられます。

編集:これはiOS 6.0のみです

4

4 に答える 4

1

その理由は、のフレームをそのままに設定していたからです。view controllerprotrait modeprevious viewlandscape mode

self.view.bounds = CGRectMake(0,0,...,...);

としてimagepicker dissmiss取得calledmovedたときはいつでも。original positionmentioned

外部にself.view フレームを設定せずstructureにforに変更しました。orientation solvedproblem

于 2013-06-12T05:49:15.807 に答える
0

iOS 8.2でも同様の問題がありました。UIImagePickerController を使用してビデオを選択した後、フレームが 20px 増加し、View Controller の上部領域は見栄えがよくなりますが、下部が切り取られます。解決策は次のとおりです。

-(void)openPicker {}
    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    //configure image picker here
    [self presentViewController:picker animated:YES completion:NULL];
}

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(showStatusBar) userInfo:nil repeats:NO];
    [picker dismissViewControllerAnimated:YES completion:NULL];
}

-(void)showStatusBar {
    dispatch_async(dispatch_get_main_queue(), ^{
        [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationSlide];
    });
}
于 2015-06-12T09:46:22.503 に答える
0

ビューの青い部分がカスタムのUIView場合は、そのビューの自動サイズ変更マスクを確認する必要があります。問題が見つかります。

于 2013-05-23T05:29:52.853 に答える