Set UIPopOverController size

时间秒杀一切 提交于 2020-01-13 10:43:16

问题


I have a view with a bunch of button in a UIScrollView. When the user presses a button, I want a UIPopOverController to display pointing at the selected button. It kind of works, but the popover is the wrong size and points to a random point in the view. Here is my code.

-(void)detail:(id)sender{
    UIButton *button = sender;
    NSLog(@"tag = %i", button.tag);

    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController];
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    self.popover = [[UIPopoverController alloc] initWithContentViewController:navController];
    self.popover.delegate = self;
    [self.popover presentPopoverFromRect:button.bounds inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}

Than the problem with the size of the popover: In the view that is inside the popover, I have:

self.contentSizeForViewInPopover = scroll.contentSize;
NSLog(@"%f, %f", scroll.contentSize.height, scroll.contentSize.width);
NSLog(@"showing: %f, %f",  self.contentSizeForViewInPopover.height,  self.contentSizeForViewInPopover.width);

and both logs are matching. So I think everything should work correctly. But it doesn't. Here is a screen shot. Let me know if you need more of my code. Thanks in advance.


回答1:


Regarding the size of the popover only: I managed to do it with a variable heighted UILabel:

UILabel *hinweis;
hinweis.text = @"...";
hinweis.frame = CGRectMake(x,y,width,800);
[hinweis sizeToFit];

And for the arrow: have you tried a different inView param like self.parentViewController.view?




回答2:


First thing I noticed is that you should be using the button.frame not the button.bounds for the from rectangle. The difference between these UIView properties:

The geometry of a view is defined by its frame, bounds, and center properties. The frame property defines the origin and dimensions of the view in the coordinate system of its superview and is commonly used during layout to adjust the size or position of the view.

The bounds property defines the internal dimensions of the view as it sees them and is used almost exclusively in custom drawing code.

You can set the height of your popover controller using its setPopoverContentSize message:

// so something like this ...
[self.popover setPopoverContentSize:CGSizeMake(320, 460)];
// and to bind the popover to your button 
[self.popover presentPopoverFromRect:button.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];


来源:https://stackoverflow.com/questions/6770987/set-uipopovercontroller-size

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!