在 iOS 上的 navigationController 推送上更改 contentSizeForViewInPopover
Posted
技术标签:
【中文标题】在 iOS 上的 navigationController 推送上更改 contentSizeForViewInPopover【英文标题】:Change contentSizeForViewInPopover on navigationController push on iOS 【发布时间】:2012-03-31 20:15:53 【问题描述】:我有一个带有 navigationController 和一堆子视图的 UIPopoverController。弹出框的大小是在显示之前设置的:
[self.myPopover setPopoverContentSize:CGSizeMake(320, 500)];
效果很好。弹出框以调整后的大小显示。当另一个视图被推送到导航堆栈时,再次设置弹出框的大小 - 需要不同的高度 - 在 viewWillAppear 方法中:
self.contentSizeForViewInPopover = CGSizeMake(320, 700);
这也很好用。当我返回上一个视图时,大小不会改变。
我在第一个视图的 viewWillAppear 中添加了相同的调用,但视图没有调整大小。
在视图之间导航时如何管理弹出框的大小调整?
【问题讨论】:
【参考方案1】:我使用这个技巧:
- (CGSize)contentSizeForViewInPopover
return CGSizeMake(320, 200);
- (void) forcePopoverSize
CGSize currentSetSizeForPopover = self.contentSizeForViewInPopover;
CGSize fakeMomentarySize = CGSizeMake(currentSetSizeForPopover.width - 1.0f,
currentSetSizeForPopover.height - 1.0f);
self.contentSizeForViewInPopover = fakeMomentarySize;
- (void)viewWillAppear:(BOOL)animated
[super viewWillAppear:animated];
[self forcePopoverSize];
- (void)viewDidAppear:(BOOL)animated
[super viewDidAppear:animated];
CGSize currentSetSizeForPopover = self.contentSizeForViewInPopover;
self.contentSizeForViewInPopover = currentSetSizeForPopover;
【讨论】:
***.com/questions/2752394/…【参考方案2】:这是一个棘手的问题。我尝试了很多东西,终于让这个工作了。它也可能对你有用。
在我的contentViewController
中,我保留了对UIPopoverController
*parent 的引用;
此引用在UIPopoverController
及其内容的初始化期间设置。
这当然可能不直接适合您的视图层次结构。代码在UIViewController
这表明UIPopowerController
类似于:
if (self.popoverController == nil)
_contentController = [[ContentViewController alloc] initWithNibName:@"ContentViewController"
bundle:[NSBundle mainBundle]];
UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:_contentController];
_contentController.parent = popover;
[popover setPopoverContentSize: CGSizeMake(520.0,580.0)];
popover.delegate = self;
self.popoverController = popover;
当我想从contentViewController
中动态更改内容大小时,我使用:
-(void)setNewSize:(CGSize) newSize
[_parent setPopoverContentSize:newSize animated:YES];
【讨论】:
@BorutTomazin:我知道 - 它实际上很丑 :) 但经过 8 小时的工作,我终于找到了一件有用的东西。我可能会尝试为此找到更优雅的解决方案......可能。我会试试你上面发布的链接。 是的,我知道。有时是丑陋的,工作比好而不工作更好。 :) 如果您找到更好的解决方案,请告诉我。谢谢!以上是关于在 iOS 上的 navigationController 推送上更改 contentSizeForViewInPopover的主要内容,如果未能解决你的问题,请参考以下文章
在 Swift 中对 UITabBarController 进行 segue 后如何摆脱 UINavigationController?