【问题标题】:Change background color for page control更改页面控件的背景颜色
【发布时间】:2015-10-20 11:49:06
【问题描述】:

有没有办法改变 tvOS 中页面控件的背景颜色?

注意:我想将背景色设置为透明色

我尝试了下面的代码,但它在 tvOS 中不起作用。

var pageControl : UIPageControl!
pageControl = UIPageControl(frame: CGRectMake(0, self.view.frame.height - 200, self.view.frame.width, 50))
pageControl.pageIndicatorTintColor = UIColor(red: 255/255, green: 255/255, blue: 255/255, alpha: 0.70)
pageControl.currentPageIndicatorTintColor = UIColor.whiteColor()
pageControl.backgroundColor = UIColor.clearColor()
pageControl.opaque = false
pageControl.numberOfPages = 10
pageControl.currentPage = 0

提前致谢。

【问题讨论】:

    标签: ios tvos apple-tv


    【解决方案1】:

    这个透明背景是 UIPageControl 中 UIVisualEffectView 类型的子视图。你可以这样删除它:

    for subview in pageControl.subviews {
      if subview.isKindOfClass(UIVisualEffectView) {
        subview.removeFromSuperview()
      }
    }
    

    【讨论】:

    • 谢谢.. 完美工作:)
    【解决方案2】:

    当需要显示太多页面时,Alexander 提到的修复对我不起作用。我宁愿将效果设置为零:

    for subview in pageControl.subviews {
        guard let effectView = subview as? UIVisualEffectView else { continue }
        effectView.effect = nil
    }
    

    【讨论】:

    • 是的!这对我有用,removeFromSuperView() 使一些点在下一个设置中消失numberOfPages
    【解决方案3】:

    上面的@alexander-johmann 有一个解决方案(虽然我想找到另一种方法)。

    最好能设置实际的背景颜色。这个解决方案并没有真正做到这一点。它会删除 UIPageControl 的元素以获得提供清晰背景的“效果”,而无需实际这样做。

    这是相同代码的 Objective-c 版本:

    for (UIView *subview in pageControl.subviews) {
        if ([subview isKindOfClass:[UIVisualEffectView class]] == YES) {
            [subview removeFromSuperview];
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-09-15
      • 1970-01-01
      • 2021-09-25
      • 1970-01-01
      • 1970-01-01
      • 2011-11-22
      • 2016-12-09
      • 1970-01-01
      • 2017-05-31
      相关资源
      最近更新 更多