弹出窗口中显示时,视图控制器显示在工具栏下方

时间:2013-09-24 03:11:47

标签: ios uikit

我有UIPopoverController,其中显示UIToolbarUICollectionViewController,其中包含多个单元格。我看到的问题是集合视图出现在工具栏下面。

我试图移动集合视图控制器(通过更改其原点)将其移动到工具栏下方,但无济于事。

在屏幕截图中,我将工具栏设置为半透明,以便您可以看到我的意思。

enter image description here

我正在使用iOS 6 SDK。

构成弹出窗口的元素是直截了当的。我有一个自定义UICollectionViewController,我在自定义init课程的UIPopoverController中创建。这里的代码来自该自定义UIPopoverController类'init - 创建工具栏,然后将其与集合视图控制器(photosCollectionViewController)一起添加:

// init for the custom UIPopoverController derived class follows:
-(id)init
{
    photosCollectionViewController = [[MyPhotosCollectionViewController alloc] init];
    self = [super initWithContentViewController:photosCollectionViewController];

    if (self) {
        // I tried taking the contentViewController's frame and moving it down 
        // by adding TOOLBAR_HEIGHT to its y co-ordinate, but it does not work.
        CGRect frame = self.contentViewController.view.frame;

        UIToolbar *viewToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, frame.size.width, TOOLBAR_HEIGHT)];
        viewToolbar.barStyle = UIBarStyleBlackTranslucent;

        UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelTapped:)];
        UIBarButtonItem *separator = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];

        CGRect labelFrame = CGRectMake(viewToolbar.frame.origin.x, viewToolbar.frame.origin.y, 100, 20);
        UIBarButtonItem *title = [[UIBarButtonItem alloc] initWithCustomView:[PANGraphicsHelper labelForToolbar:labelFrame text:@"Photos"]];
        UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addPhotopTapped:)];
        viewToolbar.items = @[ cancelButton, separator, title, separator, addButton];
        [self.contentViewController.view addSubview:viewToolbar];
        _toolbar = viewToolbar;

        // Make the popover large enough to hold the 3x3 collection view and the toolbar above
        self.popoverContentSize = CGSizeMake(frame.size.width, frame.size.height + TOOLBAR_HEIGHT);
    }
}

2 个答案:

答案 0 :(得分:0)

什么是contentViewController
如果它是包含工具栏和CollectionView的ViewController,那么您应该在initWithContentViewController中使用它。相反,你已经使用了photosCollectionViewController。

heirarchy应该是 UIPopoverController - > ContentViewController

ContentViewController应包含在顶部,photosCollectionViewController的框架应调整到工具栏下方。

答案 1 :(得分:0)

我需要做的是将UICollectionViewController的{​​{1}}移到工具栏下方。

collectionView