在哪里设置弹出窗口中显示的视图控制器的大小?
Posted
技术标签:
【中文标题】在哪里设置弹出窗口中显示的视图控制器的大小?【英文标题】:Where to set the size of a view controller presented in a popover? 【发布时间】:2012-10-12 18:06:03 【问题描述】:基于 Apple 的 sample code,我的应用程序在弹出窗口中显示了一个视图控制器,它由一个条形按钮触发:
- (IBAction)configChartTapped:(id)sender
GrowthChartConfigOneViewController *panelViewController = [[GrowthChartConfigOneViewController alloc]init];
UIPopoverController *popover = [[UIPopoverController alloc]initWithContentViewController:panelViewController];
popover.delegate = self;
// Store the popover in a custom property for later use.
self.popover = popover;
[self.popover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
但是,我没有找到设置弹出框大小的方法。
问题:我应该在哪里以及如何设置弹出框及其视图控制器的大小?我可以直接在 XCode 中设置大小以使视图在情节提要中正确调整大小吗?
【问题讨论】:
【参考方案1】:您也可以在弹出框类本身中设置它。这样,如果您允许从多个位置调用弹出框,您只需设置一次大小。
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
// Custom initialization
self.view.backgroundColor = [UIColor redColor];
self.contentSizeForViewInPopover = CGSizeMake(320.0, 216.0);
return self;
【讨论】:
Alex,您可能必须将其移至 viewDidLoad。 在 ios7 Xcode 中说 contentSizeForViewInPopover 已被弃用,而是使用“preferredContentSize”,如下所示:self.preferredContentSize = CGSizeMake(630, 340);【参考方案2】:只需给出 popovercontentsize 并确保该视图应符合如下定义的弹出框大小:
popover = [[UIPopoverController alloc] initWithContentViewController: panelViewController];
popover.popoverContentSize = CGSizeMake(550, 700);
【讨论】:
我可以直接在 Xcode 中设置弹出框大小吗?当我在代码中设置大小时,弹出视图具有标准视图大小,并且在情节提要中的大小不正确。【参考方案3】:上面的答案很好,但由于我的需求略有不同,我只是想为情节提要更新它。如果您使用这样的情节提要标识符进行实例化:
CBItemViewController *addNewPayee = [self.storyboard instantiateViewControllerWithIdentifier:@"cbItemPopover"];
然后您可以在弹出框的代码中设置自定义大小,如下所示:
- (id)initWithCoder:(NSCoder *)decoder
if(self = [super initWithCoder:decoder])
self.preferredContentSize = CGSizeMake(630, 340);
return self;
【讨论】:
以上是关于在哪里设置弹出窗口中显示的视图控制器的大小?的主要内容,如果未能解决你的问题,请参考以下文章
window.open 里的resizable=no参数在火狐里无效!有啥方法在火狐里的弹出窗不能拖动大小吗?
MFC无法运行的原因?我在MFC中加入了一个CWebBrowser的控件后,运行没有出错,但是点击运行是却没有弹出窗