2010-10-06 106 views
0

我有一个画面靠近屏幕的前三分之一绘制的对象。想象一下,物体顶部(例如图像)和屏幕顶部之间有300个像素。iPad - 重画一个可见的UIPopOverController的箭头方向

当我显示一个弹出窗口时,让我们说200x200像素,并指定箭头方向,弹出窗口可能会出现在对象上,也就是说,在对象和屏幕顶部之间。

如果出于某种原因的弹出窗口加载另一个视图并且被调整大于对象和屏幕顶部之间的可用空间,则它将无法适应此处。 iOS解决了这个问题,禁止弹出窗口调整到可能的程度。其结果是内容被截断,可能弹出窗口会稍微移动一点,箭头将指向任何地方。

是否有任何方法可以使增加的popover重新计算最佳的箭头方向?

谢谢。

回答

1

您可以计算所需的尺寸未来内容(contentView)并将其与您的阈值进行比较并强制箭头方向。您可能需要试验阈值,因为内容视图的大小不是整个弹出窗口的高度。

int popoverArrowDirection 15;//any 
int threshold = 300;   
     if(viewThatWillbeInserted.frame.size.height>threshold)popoverArrowDirection = 1;//up 


[myPopoverController presentPopoverFromBarButtonItem:myBarButton permittedArrowDirections:popoverArrowDirection animated:YES]; 

如果你不知道这个高度,那么你没有太多的选择。

弹出的限制促使我将自定义ViewController模拟为popover(例如,当您滑过ibook中的页面时看到的页面弹出窗口;这不是实际的弹出窗口组件)。这意味着如果你有一个向下的箭头,并推动一个新的更大的视图,你甚至可以动画旋转箭头的提示或任何其他愚蠢的动画的视图的动画..

我只在企业应用程序,并且我不确定的天气,这是应用程序商店的安全!

+0

我怀疑我不得不做那样的事情,但我希望有一种方法可以自动做到这一点......如果你的按钮是稳定的,Popovers是很好的。如果他们移动,那么他们吸吮。我将填写一份错误报告。谢谢。 – SpaceDog 2010-10-06 14:38:53

0

如果您关闭弹出窗口并在内容大小发生更改后重新显示它,会发生什么情况?

+0

我喜欢它现在是怎么做的......从一种尺寸到另一种尺寸的popover动画... – SpaceDog 2010-10-06 05:02:33

+0

我认为你将不得不选择其中一种。用截短的内容制作酷动画,或者用全部内容制作糟糕的动画。尽我所知,你不能同时获得这两个。 – 2010-10-06 06:01:45