我想隐藏某个VC上的页面控制指示符,而是显示一个带有文本“开始”的按钮。然而,用户仍然能够导航回页面控件。
我试过这个:
self.pageController = [UIPageControl appearance];
self.pageController.pageIndicatorTintColor = [UIColor redColor];
self.pageController.currentPageIndicatorTintColor = [UIColor greenColor];
if(self.pageIndex == 1){
self.pageController.hidden = YES;
NSLog(@"hide you!");
}
然而,这不起作用。在没有if语句的情况下设置self.pageController.hidden = YES
,也会触发nslog。看来这只能设置一次。
我也不知道这会有多顺利。当用户完全到达页面本身时,我显然不希望它改变,但是在转向它时。
解决此问题的最佳方法是什么?
答案 0 :(得分:2)
我用swift做了,也许会有所帮助 -
func setPageControlHidden (hidden: Bool)
{
for subView in self.view.subviews
{
if subView is UIScrollView
{
subView.frame = self.view.bounds
}
else if subView is UIPageControl
{
subView.hidden = hidden
}
}
}
答案 1 :(得分:0)
我猜您可以将hidesForSinglePage设置为YES,当numberOfPages大于1时,这将重置隐藏属性。
答案 2 :(得分:0)
如果您想使用UIPageControl所在的空间,您可以更改视图的框架,以便页面控制不在屏幕上:
func togglePageControl(visible: Bool) {
if let pageVC = parent as? UIPageViewController {
// find UIPageControl
for case let control in pageVC.view.subviews where control is UIPageControl {
let height = control.frame.height
if visible {
pageVC.view.frame.size.height -= height
} else {
pageVC.view.frame.size.height += height
}
break
}
}
}
在你希望使用隐藏页面控件的UIViewController中使用它(检查可见性是因为即使用户开始滑动到其他屏幕然后中断此操作,也会调用viewWillAppear):
var isPageControlVisible = true
override func viewWillAppear(_ animated: Bool) {
if isPageControlVisible {
togglePageControl(visible: false)
isPageControlVisible = false
}
}
override func viewDidDisappear(_ animated: Bool) {
togglePageControl(visible: true)
isPageControlVisible = true
}
答案 3 :(得分:-1)
class MyPageViewController: UIPageViewController {
override func viewDidLoad() {
super.viewDidLoad()
for subView in self.view.subviews where subView is UIPageControl {
subView.isHidden = true
}
}
}