проблема в настройке PopoverContentSize - PullRequest
3 голосов
/ 03 апреля 2011

Я не могу установить размер содержимого с размером (650 400). Но даже я создаю popoverController с такой же шириной и высотой, что он создается.

Не знаете, что беспокоиться?При нажатии Enter оно отображается следующим образом:

enter image description here

- (IBAction)setButtonTapped:(id)sender
{
     popover *mpopover      =   [[popover alloc] init];

    UINavigationController  *NavController      =   [[UINavigationController alloc] initWithRootViewController:mpopover];

    //NavController.navigationBar.backgroundColor = [UIColor darkGrayColor];
    mPickerPopover  = [[[UIPopoverController alloc] initWithContentViewController:NavController] retain];

    CGSize popoversize      =   CGSizeMake(400, 90);

    [mpopover setparent:mPickerPopover];

    [mpopover setToolBarFrame:popoversize];

    mPickerPopover.popoverContentSize   = popoversize;

    [mPickerPopover presentPopoverFromRect:CGRectMake([sender frame].origin.x, [sender frame].origin.y, 20, 20) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];

    [mpopover release];
}

При нажатии кнопка показа выглядит следующим образом enter image description here

 -(void)buttonView:(id)sender
 {

  CGSize popoversize        =   CGSizeMake(650, 320);

  [parent setPopoverContentSize:popoversize animated:YES];


  [toolbar setFrame:CGRectMake(0, popoversize.height- 90, popoversize.width, 60)];

  CATransition *transition = [CATransition animation];
  transition.type = kCATransitionPush;
  transition.duration = 1.0f;
  transition.timingFunction = UIViewAnimationCurveEaseInOut;
  [self.view.layer addAnimation:transition forKey:@"transitionViewAnimation"];
  }

Ответы [ 5 ]

2 голосов
/ 14 апреля 2011

Не очень понятно, о чем вы спрашиваете, но для всплывающих окон вам необходимо убедиться, что вы установили popoverContentSize на контроллере представления контента перед отображением всплывающего окна. Обычно я делаю это в методе viewDidLoad моих контроллеров представления, которые будут использоваться во всплывающих окнах.

1 голос
/ 02 мая 2012

Рассмотрите возможность использования:

-(BOOL)splitViewController:(UISplitViewController *)svcontroller shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation 
{
    return NO;
}

Это представит поповер в портретной и альбомной ориентации.

1 голос
/ 17 сентября 2011

У меня была похожая проблема в том, что я не смог изменить размер контроллера поповера во время вращения устройства.Я нашел информацию, которая привела к моему решению в ответе на похожий вопрос .

Поскольку я представлял всплывающее окно с помощью кнопки «Бар», UIKit «пытался» помочь, настроивразмер всплывающего окна во время вращения (потому что положение кнопки может измениться после изменения ориентации устройства).Несмотря на то, что я точно знал, какого размера я хочу, чтобы поповер был в каждом случае, он не уважал мои вызовы setPopoverContentSize.Мое решение состояло в том, чтобы отклонить popover в willAnimateRotationToInterfaceOrientation, а затем повторно представить тот же popover в didRotateFromInterfaceOrientation после установки соответствующих значений для contentSizeForViewInPopover и popoverContentSize.IHTH

1 голос
/ 02 июня 2011

Из документации Apple:

"значение ширины, которое вы указываете, должно быть не менее 320 точек и не более 600 точек."

Возможно, попытка установить ширину 650 - это проблема.

0 голосов
/ 23 января 2013

Я заметил, что у вас есть UIViewController, называемый popover, который должен отображаться внутри popoever что вы упомянули как mpopover перейти к этому классу и в методе ViewDidLoad цикла ViewController обязательно добавьте следующий код

self.contentSizeForViewInPopover = CGSizeMake(400, 90); // or Any size you like

... & ...

...