UIPageControl使用UIScrollView渲染怪癖

时间:2009-11-04 20:32:09

标签: iphone objective-c cocoa-touch iphone-sdk-3.0

我正在构建一个iPhone应用程序,像大多数人一样,我正在尝试使用UIPageControl实现UIScrollView,但是我遇到了一个非常古怪的行为,我认为这可能是一个错误。希望你们其中一个人之前见过这个,因为它让我疯狂。

基本上,页面控件工作正常,一切都连接起来并且在所有帐户上都能正常工作,除了UIVage内的UIPageControl的某些放置,UIPageControl将停止渲染。

我将只是截取XIB窗口的屏幕截图来帮助说明......这是一个完美无缺的展示位置:

http://www.jasconi.us/prob1.png

UIPageControl实际位于UIScrollView上方。效果很好,一切都清晰可见。

接下来的两个不起作用:

http://www.jasconi.us/prob2.png http://www.jasconi.us/prob3.png

第一个简单地放在滚动视图下方。根本不渲染。

第二个放置在滚动视图上方,但技术上并不在其中。也不呈现。

这到底是怎么回事?我尝试过使用

[[self view] bringSubviewToFront:pageControl];

......无济于事。

有什么想法吗?

4 个答案:

答案 0 :(得分:2)

好的,我找到了答案,这是Kevin Bacon的六度。

这实际上不是一个软件错误,而是一个XIB怪癖,由于某种原因,页面控件的较低位置与自动调整大小和锚点的默认设置相结合似乎将控制放弃到外层空间。

如果您关闭所有自动缩放和自动调整大小以及自动锚定以及所有其他废话,控件将完全按预期显示。放置在ScrollView上方时可靠显示的事实很奇怪。

耸肩

希望这有助于未来的iPhone发起。

答案 1 :(得分:0)

您是否检查过以确保numberOfPages不为0?

如果设置断点,你能看到pageControl不是nil吗?

答案 2 :(得分:0)

这听起来真的没什么好事,但我被它抓住了。

默认情况下,UIPageControl预计会出现在黑暗的背景下。 IE:点为浅灰色,白色为当前页面。

我自己使用UIPageControl而没有滚动视图来更改我使用drawRect:

呈现的图表的时间范围

长话短说,图表背景是白色的,所以页面控制器工作,我只是看不到它。解决方案是将图形本身放在子视图中,并使包含页面控件的父级具有深色背景。

答案 3 :(得分:0)

即使在尝试了所有人发布的答案之后,我仍然遇到了同样的问题。我的问题最终变成了“DOH”:

我在模态FormSheet的底部使用了UIPageControl,但是,我忘了在xib中将视图的大小设置为Form Sheet。这导致我的页面控件离开屏幕并且永远不可见。

道德:在基本视图中设置xib中的视图大小(Full,Form,Page等)。