【问题标题】:Remove pageIndicator on UIPageViewController on rotation在旋转时删除 UIPageViewController 上的 pageIndicator
【发布时间】:2014-02-27 20:07:56
【问题描述】:

在横向时,我希望 UIPageViewController 的内容是全屏的,并且我想隐藏页面指示器。纵向显示页面指示器。

我知道实现数据源方法是使页面指示器显示/不显示的原因(请参阅https://stackoverflow.com/a/20749979/1103584),但正如我之前所说,我希望能够根据我的应用程序的方向有选择地隐藏它们.

我该怎么做?我以前在其他应用程序中看到过它(App Annie 中的图表),所以我知道这是可能的。遍历 UIPageViewController 的子视图以查找 UIPageControl 实例的答案对我来说听起来像是一个非常 hacky 的解决方案......必须有一种更“官方”的方式来做到这一点。

提前致谢。

【问题讨论】:

  • 为了暂时解决我的问题,我不得不创建自己的页面指示器。这样,我可以显示/隐藏它们以满足我的需要。如果有人想让我发布一个我如何做的例子,请发表评论,我会的。否则,如果有人知道实现此目的的内置方法,则更“官方”的答案将被标记为正确。

标签: ios objective-c uipageviewcontroller


【解决方案1】:

目前,在调用 setViewControllers:direction:animated:completion: 方法后,无法更改 UIPageViewController 的页面指示器的默认行为。希望以后的更新中会添加类似的隐藏导航栏的方法。

【讨论】:

    【解决方案2】:

    尝试将此添加到您的代码中...

    - (void) willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration
    {
        [super willAnimateRotationToInterfaceOrientation:orientation duration:duration];
    
        UIPageControl *pageControl = [UIPageControl appearance];
    
        if (UIInterfaceOrientationIsLandscape(orientation)) 
        {
            pageControl.alpha = 0;
        }
        else if (UIInterfaceOrientationIsPortrait(orientation)) 
        {
            pageControl.alpha = 1;
        }
    }
    

    【讨论】:

    • 我编辑了代码以包括应该如何使用 alpha 值。
    • 对不起 - 我忘记了我最终解决了我自己的问题,使我自己的 UIPageControl 看起来很像,所以外观代理的东西对我的自定义页面控件没有任何影响。我将更新您的答案以反映设置 alpha 的正确方法,但这确实不能解决我的问题。这只是使 UIPageControl 看起来不可见,但它仍然出现在屏幕上,这不是我想要的。我希望将视图从屏幕上完全移除,这样它就不会占用任何空间。
    • 您的问题询问如何隐藏/显示页面指示器。
    • 不要争论语义,但我的问题的第一句话是“在横向时,我希望 UIPageViewController 的内容是全屏的”-> 关键是句子的结尾, “全屏”。将 alpha 值设置为 0 并不能实现此目标。我更新了我的问题的标题,使其更加具体。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-29
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多