Изменить цвет фона для управления страницей

Есть ли способ изменить цвет фона элемента управления страницей в 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

Заранее спасибо.


person Pushpa Y    schedule 20.10.2015    source источник


Ответы (3)


Этот прозрачный фон является подпредставлением в UIPageControl типа UIVisualEffectView. Вы можете удалить его следующим образом:

for subview in pageControl.subviews {
  if subview.isKindOfClass(UIVisualEffectView) {
    subview.removeFromSuperview()
  }
}
person Alexander Johmann    schedule 07.12.2015
comment
Спасибо .. Работает отлично :) - person Pushpa Y; 08.12.2015

Упомянутое Александром исправление не сработало для меня, когда нужно было отобразить слишком много страниц. Я бы предпочел установить эффект на ноль:

for subview in pageControl.subviews {
    guard let effectView = subview as? UIVisualEffectView else { continue }
    effectView.effect = nil
}
person Vincent Friedrich    schedule 13.05.2019
comment
да! это сработало для меня, removeFromSuperView() некоторые точки исчезают в следующей настройке numberOfPages. - person apieceofcode1801; 05.07.2021

У @alexander-johmann выше есть решение (хотя я хотел бы найти другой способ).

В идеале было бы лучше иметь возможность установить фактический цвет фона. Это решение на самом деле этого не делает; он удаляет элементы UIPageControl, чтобы получить «эффект» предоставления четкого фона, фактически не делая этого.

Вот версия того же кода для Objective-C:

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