ラベル iPad の投稿を表示しています。 すべての投稿を表示
ラベル iPad の投稿を表示しています。 すべての投稿を表示

2011年10月27日木曜日

iPadでカメラロールはpopOverViewで表示する


UIImagePickerControllerでsourceTypeをPhotoLibraryにして、
カメラロールを表示させる場合、iPhoneの場合はモーダルビューで表示させる。

[self presentModalViewController:imagePickerController animated:YES];


だが、これだと、iPadではエラーとなる。 
iPadの場合は、全面にモーダルビューを表示する事は非推奨となっているため、
popOverViewなどで画面の一部だけを使って表示させる。

- (void)albumAction:(id)sender

{
imagePickerController[[UIImagePickerController alloc] init];

imagePickerController.delegate = self;

    imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

    
UIButton *btn = sender;
    
    imagePopController = [[UIPopoverController alloc] initWithContentViewController:imagePickerController];
    [imagePopController presentPopoverFromRect:btn.bounds inView:btn permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES]; 
}


presentPopoverFromRectにある、btn.bounds、は、
UIButtonがタップされたらその場所を基準にpopOverviewを出す、ってことで、
そのボタンの場所を指定している。

もうひとつ、presentPopoverFromBarButtonItemでも出せる。

これはその名の通り、barButtonを基準に出す場合に便利。



delegateはiPhoneと同じで、

・選択された時

imagePickerController
・キャンセルされた時
imagePickerControllerDidCancel
と、なる。


・参考



2011年10月26日水曜日

iPadかiPhoneかをコードで判別する

これで大丈夫そう。

SDK3.2未満の場合はiPhoneとみなす


#if (__IPHONE_OS_VERSION_MAX_ALLOWED >= 30200)
    // sdk3.2以上の時
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
        // iPad
    }
    else {
        //iPhone
    }
#else
    // sdk3.2未満
#endif


・参考