iPad - 重绘可见UIPopOverController的箭头方向

时间:2010-10-06 04:10:35

标签: ipad

我有一个在屏幕的前三分之一处绘制的对象。想象一下,对象顶部(例如图像)和屏幕顶部之间有300个像素。

当我显示一个弹出窗口时,假设有200x200像素并指定箭头方向,弹出窗口可能会出现在对象上,即对象和屏幕顶部之间。

如果弹出由于某种原因,加载另一个视图并调整大小超过对象和屏幕顶部之间的可用空间,它将无法适应那里。 iOS解决了这个问题,禁止popover更多地调整大小。结果是内容被截断,弹出窗口可能会移动一点,箭头指向无处。

有没有办法让弹出窗口增加到重新计算最佳箭头方向?

感谢。

2 个答案:

答案 0 :(得分: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];

如果你之前无法知道这个高度,那么你就没有多少选择。

popovers的限制驱使我模拟一个popover作为Custom ViewController(就像你在ibook中浏览页面时看到的页面popover;那不是真正的popover组件)。这意味着如果你有一个向下箭头,并推动一个新的更大的视图,你甚至可以围绕箭头的原点或任何其他愚蠢的动画旋转视图动画。

我只在企业应用程序中完成此操作,并且我不确定天气这是app-store安全!

答案 1 :(得分:0)

如果您关闭了弹出框,然后在内容大小发生变化后重新显示它会怎样?