如何在ipad中获得指定宽度和高度的弹出框
Posted
技术标签:
【中文标题】如何在ipad中获得指定宽度和高度的弹出框【英文标题】:how to get a popover frame of specified width and height in ipad 【发布时间】:2011-11-28 07:25:45 【问题描述】:我在我的应用程序中使用了弹出视图,当我浏览示例时,我发现了如何创建弹出视图,但在示例代码中,弹出视图正在显示到整个页面。当我点击按钮时,我想要指定宽度和高度的弹出框。
-(IBAction) settingsGo:(id) sender
NSLog(@"Go");
if (self.popoverController == nil)
PopOver *lang = [[PopOver alloc]
initWithNibName:@"PopOver" bundle:[NSBundle mainBundle]];
UIPopoverController *popOver =
[[UIPopoverController alloc]initWithContentViewController:lang];
popOver.delegate = self;
[lang release];
self.popoverController = popOver;
[popOver release];
CGRect popoverRect = [self.view convertRect:[button frame]fromView:[button superview]];
popoverRect.size.width = MIN(popoverRect.size.width, 50);
[self. popoverController
presentPopoverFromRect:popoverRect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];
那么我应该在上面的代码中进行哪些更改以获得指定宽度和高度大小的框架。
【问题讨论】:
【参考方案1】:Account 是要显示的类。 popAccount 是它的实例。 buttonA 是点击后会显示 popOver 的按钮。
-(void)viewDidLoad
popAccount = [[Account alloc] init];
//[popAccount setDelegate:self];
popOverControllerA = [[UIPopoverController alloc] initWithContentViewController:popAccount];
popOverControllerA.popoverContentSize = CGSizeMake(200, 200);
-(IBAction)togglePopOverControllerA
if ([popOverControllerA isPopoverVisible])
[popOverControllerA dismissPopoverAnimated:YES];
else
[popOverControllerA presentPopoverFromRect:buttonA.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
进一步询问任何问题..
【讨论】:
CGRect popoverRect = [self.view convertRect:[button frame]fromView:[button superview]]; popoverRect.size.width = MIN(popoverRect.size.width, 50);这两行代码让我没有设置框架位置。当我使用此代码时 popOverControllerA.popoverContentSize = CGSizeMake(200, 200);仍然将框架放置在左角 [popOverControllerA presentPopoverFromRect:buttonA.frame inView:self.view allowedArrowDirections:UIPopoverArrowDirectionAny animated:YES];将使此弹出框从 buttonA 框架中弹出 是的,我添加了它的工作正常,但是当我点击按钮时,我的按钮在右上角,框架显示在左上角。我希望它显示在按钮下方 可能是代表导致问题,所以现在我编辑了代码并删除了 [popAccount setDelegate:self];它工作正常。【参考方案2】:将popoverController.popoverContentSize
设置为您想要的任何大小。
【讨论】:
谢谢你,如果我想要特定位置的框架我应该在上面的代码中添加什么代码? popOverControllerA.popoverContentSize = CGSizeMake(200, 200);【参考方案3】:在根视图中定位
CGRect frame= CGRectMake(0,0, 0, 0);
[self.myPickerPopover presentPopoverFromRect:frame inView:self.view permittedArrowDirections:0 animated:NO];
在弹出窗口中显示的视图控制器内容中调整大小
-(void)viewDidLoad
self.contentSizeForViewInPopover = CGSizeMake(750,880);
【讨论】:
以上是关于如何在ipad中获得指定宽度和高度的弹出框的主要内容,如果未能解决你的问题,请参考以下文章
带有 ModalPresentationStyle 的弹出框不在 iOS 7 iPad 中居中