2

モーダルビューを表示したいのですが、2つの問題があります。

  1. iOS 6にはpresentModalViewControllerはなく、presentViewControllerを使用する必要があります。これは、フルスクリーンオプションのないモーダルウィンドウではなく、モーダルセグエのように2番目のViewControllerを表示するだけです。

  2. 2番目の問題は、UICollectionViewControllerからモーダルウィンドウを表示する方法です。presentViewControllerを使用しようとしましたが、CollectionViewControllerではなくViewControllerでのみ機能します。

私がやりたいことの最も良い例はこれ(Instagram)です。彼らはどのようにしてこのモーダルウィンドウを作成しましたか?それはまだ古いバージョンのiOSで動作していて、まだiOS 6ではないからですか?または、UICollectionViewControllerからこのようなモーダルウィンドウを表示する別の方法はありますか?

ありがとう

ここに画像の説明を入力してください

4

3 に答える 3

2

私があなたを正しく理解した場合、あなたが達成しようとしていることは、あなたの1人を親のViewControllers上に提示し、それでも親ViewControllerをバックグラウンドで見ることです。

最初の解決策:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
    vc.view.backgroundColor = [UIColor clearColor];
    self.navigationController.modalPresentationStyle = UIModalPresentationCurrentContext; //self.modalPresentationStyle might do a better job here
    [self presentViewController:vc animated:NO completion:nil];

SecondViewControllerコンテンツが現在の``ViewController`よりも小さく、StoryBoard\xibでその背景色を確認できることを確認してください。背景色がクリアになり、透明効果が生まれます。

2番目の解決策:

コンテナーを作成します(ストーリーボードIBの使用を計画している場合はiOS 6以降、それより低いとコンテナーを作成できますが、段階的にのみ作成できます)。

容器

コンテナサイズを親サイズの3/4に設定し、2番目のビューコントローラをそれに接続します。2番目のビューコントローラに\プッシュする代わりに、次のことができます。

myContainer.alpha = 1; 

画面に表示します。

于 2013-08-23T12:40:08.870 に答える
0

フルスクリーン以外のモーダルプレゼンテーションと同様の方法で、別のViewControllerの子としてViewControllerを表示するために使用されるUIContainerViewのドキュメントを見てみましょう。

于 2012-10-08T03:23:26.067 に答える
0

あなたが言っているように、それpresentViewControllerUIViewControllerUICollectionViewController.

次に、以下に示すようUIViewControllerに、のヘッダーファイルにクラスをインポートするだけです。CollectionViewController

#import <UIKit/UIKit.h>

@class UIViewController;

@interface MyCVController : UICollectionViewController

@end
于 2013-08-20T05:56:59.197 に答える