2011-08-11 6 views
2

addSubViewを使用してカメラモードでUIImagePickerControllerを追加する必要があります。私はそれのためのコードを書いているが、それはビューの上部に空白を残します。addSubViewを使用するUIImagePickerControllerは、ビューの最上部に白い余白を残します。

-(void)viewDidAppear:(BOOL)animated{ 
NSLog(@"ViewDidAppear"); 

OverlayView *overlay = [[OverlayView alloc] 
         initWithFrame:CGRectMake(0,0,SCREEN_WIDTH,SCREEN_HEIGTH)]; 

//create a new image picker instance 
picker = [[UIImagePickerController alloc]init]; 
self.picker.delegate = self; 
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]){ 
    //set source to video! 
    picker.sourceType = UIImagePickerControllerSourceTypeCamera; 
    //hide all controls 
    picker.showsCameraControls = NO; 
    picker.navigationBarHidden = NO; 
    picker.toolbarHidden = YES; 
    picker.editing = NO; 
    //make the video preview full size 
    picker.wantsFullScreenLayout = YES; 
    slider.value = 1; 

    picker.cameraViewTransform = CGAffineTransformScale(picker.cameraViewTransform,slider.value, slider.value); 
    //set our custom overlay view 
    picker.cameraOverlayView = overlay; 
    [picker.view addSubview:slider]; 
    //show picker 


    [picker.view addSubview:capture]; 
    [picker.view addSubview:library]; 
    //[picker.view addSubview:multicapture]; 

    [capture addTarget:self action:@selector(takepicture) forControlEvents:UIControlEventTouchUpInside]; 
    [library addTarget:self action:@selector(goToLibrary) forControlEvents:UIControlEventTouchUpInside]; 
    [self.view addSubview:picker.view]; 
    [picker viewWillAppear:YES]; 
    [picker viewDidAppear:YES]; 

}else{ 
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Test Text" message:@"Camera is Not Availble" delegate:self cancelButtonTitle:@"ok" otherButtonTitles:nil]; 
    [alert show]; 
    [alert release]; 
} 

[overlay release]; 

}

誰も私を助けてください。

ありがとうございました。

+0

あなたがシミュレートされたメトリックとIBのいずれかのビューを作成しました?私は時々それらを使用して複雑なビュー階層(おそらく私の誤った構造化のため)のための奇妙な整列の動作を引き起こすことがわかった – mattacular

+0

私は簡単なタブバーベースのアプリケーションを作成しました。このコードは、1つのタブ項目に配置されたビューのcontollerに書かれています –

+0

NSLogあなたのSCREEN_HEIGHT定数の値を(あなたが正しいと思いますか?上のコードでは、 'SCREEN_HEIGTH') – mattacular

答えて

2

kante0によれば、その白いマージンは消えたステータスバーです。あなたは(あなたがカメラのプレビューを表示する際に一般的に)、ステータスバーを表示したくない場合は、コードのこの部分を使用、

[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone]; 
[self.view addSubview:picker.view]; 

を使用すると、ステータスバーを表示したい場合は、kante0のソリューションを使用します
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide]; 
[self.view setFrame: [[UIScreen mainScreen] bounds]]; 

// Place your overlay view here 

[self.view addSubview:picker.view]; 

しかし、あなたはpickerviewが削除されたときに、もう一度ステータスバーを表示したい場合は、あなたがこれを行う必要がありますことを覚えている:

[picker.view removeFromSuperview]; 
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationSlide]; 
[self.view setFrame: [[UIScreen mainScreen] applicationFrame]]; 

// If you need to place elements programmatically, do it here 
+0

私はこれを使用していくつかの問題があります。私はselfviewにサブビューとしてUIImagePickerViewControllerを追加しました。しかし、UIImagePickerViewControllerライブラリを使用するとき、画像のリストビューをクリックするか、そのリストビューをスクロールすると、画像のすべてのリストが非表示/削除されます。それは何が間違っていますか?これで私を助けてくれますか? – sathiamoorthy

1

正確な寸法を取得するには、NSScreenを参照してください。高さの値が正しいことを再度確認します。たとえば、これを行うことができます:

int width = [[NSScreen mainScreen] frame].size.width; 
int height = [[NSScreen mainScreen] frame].size.height; 
1

ステータスバーが消えていません。

は、私はこの問題を解決:

[のUIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone]。

関連する問題