2010-11-20 61 views
0

我有一个UITabBarController里面的UIPopoverController,我只从一个UIBarButtonItem显示。显示时,我希望弹出窗口占用允许的最大垂直高度。如果我点击显示它,然后解散,然后旋转,它工作正常。但是,如果我将横向显示在横向上,然后旋转到纵向,则不再会填充整个垂直距离。我将标签栏控制器的内容大小属性设置为320×1000,而且我甚至在每次设备旋转时都尝试将其重置。更糟的是,当用户激活搜索栏时,弹出窗口缩小得非常小,并保持这种状态直到应用程序重新启动。弹出窗口大小调整不规则

http://cl.ly/3JdChttp://cl.ly/3JdC

而且http://cl.ly/3JVF

我怎样才能阻止这一点,并有酥料饼总是填补了最大垂直尺寸?

回答

1

我只是有同样的问题,并发现它只有当我使用的方法提出了UIPopoverController情况:

- (void)presentPopoverFromBarButtonItem:(UIBarButtonItem *)item permittedArrowDirections:(UIPopoverArrowDirection)arrowDirections animated:(BOOL)animated 

,但是当我用它工作正常:

- (void)presentPopoverFromRect:(CGRect)rect inView:(UIView *)view permittedArrowDirections:(UIPopoverArrowDirection)arrowDirections animated:(BOOL)animated 

不幸UIBarButtonItem没有框架您可以使用这最后一个方法,所以我的修补程序是使用UIToolbar的框架并相应地修改frame.origin.xframe.size.width以使弹出窗口显示在UIBarButtonItem旁边的正确位置。

希望Apple会在iOS的下一个版本中解决这个问题。

问候

+2

我把'self.contentSizeForViewInPopover = CGSizeMake(0,0); self.contentSizeForViewInPopover = CGSizeMake(320,1000);'进入'-viewDidAppear:'方法,这也工作。虽然感觉像一个黑客。 – axiixc 2010-12-20 17:13:21