UIPageControl - Как сделать фон прозрачным?
Я использую UIPageControl
и пытаюсь сделать фон прозрачным.
UIPageControl *pageControl = [UIPageControl appearance];
pageControl.pageIndicatorTintColor = [UIColor lightGrayColor];
pageControl.currentPageIndicatorTintColor = [UIColor blackColor];
pageControl.backgroundColor = [UIColor blackColor];
Любые предложения?
Пытались
pageControl.backgroundColor = [UIColor clearColor];
Не повезло.
============
Хорошо, как упоминалось в @powerj1984 и @daniellarsson UIPageControl
, кажется, не изменяется в отношении цвета положения и фона.
Итак, я решил переместить это в UIViewController и создал UIPageControl
и
@property (weak, nonatomic) IBOutlet UIPageControl *pageControl;
И затем верните это в начало моего UIPageViewController
, как в viewDidLoad
self.pageControl.numberOfPages = self.pageTitles.count;
[self.view addSubview:_pageControl.viewForBaselineLayout];
Затем я обновил индекс UIPageControl
в viewControllerBeforeViewController
и viewControllerAfterViewController
NSUInteger index = ((HomePageContentViewController*) viewController).pageIndex;
self.pageControl.currentPage = index;
Ответы
Ответ 1
Хорошо, как упоминалось в @powerj1984 и @daniellarsson UIPageControl, кажется, не изменяются в отношении цвета положения и фона.
Итак, я решил переместить это в UIViewController и создал UIPageControl и
@property (weak, nonatomic) IBOutlet UIPageControl *pageControl;
И затем верните это в начало моего UIPageViewController, как в viewDidLoad
self.pageControl.numberOfPages = self.pageTitles.count;
[self.view addSubview:_pageControl.viewForBaselineLayout];
Затем я обновил индекс UIPageControl в viewControllerBeforeViewController и viewControllerAfterViewController
NSUInteger index = ((HomePageContentViewController*) viewController).pageIndex;
self.pageControl.currentPage = index;
Ответ 2
pageControl.backgroundColor = [UIColor clearColor];
работает, но!! чем вы должны установить backgroundColor
для UIPageViewController
также на [UIColor clearColor]
и чем! вы увидите цвет фона в виде контейнера.
- (void)initPageViewController
{
_pageController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll
navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal
options:nil];
UIImageView *imgView= [[UIImageView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
imgView.image = [UIImage imageNamed:@"NiceBGImage"];
[self.view addSubview:imgView];
self.view.backgroundColor = [UIColor clearColor];
_pageController.view.frame = ({
CGRect frame = [[UIScreen mainScreen] bounds];
frame;
});
_pageController.delegate = self;
_pageController.dataSource = self;
_pageController.view.backgroundColor = [UIColor clearColor];
NSArray *controllers = @[_controllers[0]];
[self.pageController setViewControllers:controllers
direction:UIPageViewControllerNavigationDirectionForward
animated:NO
completion:nil];
UIPageControl *pageControl = [UIPageControl appearance];
pageControl.pageIndicatorTintColor = [UIColor lightGrayColor];
pageControl.currentPageIndicatorTintColor = [UIColor whiteColor];
pageControl.backgroundColor = [UIColor clearColor];
pageControl = [UIPageControl appearanceWhenContainedIn:[_pageController class], nil];
[self addChildViewController:_pageController];
[[self view] addSubview:_pageController.view];
[self.pageController didMoveToParentViewController:self];
}
Ответ 3
Управление по умолчанию прозрачно по умолчанию.
Проверьте этот пример кода:
UIPageControl *pageControl = [[UIPageControl alloc] init];
pageControl.frame = CGRectMake(10,10,100,100);
pageControl.numberOfPages = 8;
pageControl.currentPage = 0;
[self.view addSubview:pageControl];
[self.view bringSubviewToFront:pageControl];
[self.view setBackgroundColor:[UIColor blackColor]];
Пожалуйста, найдите дополнительные возможности настройки ниже
Внешний вид элементов управления страницы
Вы можете настроить внешний вид элемента управления страницы, установив свойства, изображенные ниже.
![enter image description here]()
Чтобы настроить внешний вид всех элементов управления страницы в приложении, используйте прокси-сервер (например, [UIPageControl внешний вид]). Для получения дополнительной информации о внешних прокси-серверах см. Пространства внешнего вида.
Цвет оттенков
Единственный способ настроить внешний вид элемента управления страницы - это настроить пользовательские оттенки для точек, представляющих каждую страницу. Поле Current Page (currentPageIndicatorTintColor) влияет на цвет точки, представляющей отображаемую на данный момент страницу, а поле Tint Color (pageIndicatorTintColor) влияет на цвет точек, представляющих каждую другую страницу. Цвет по умолчанию белый для текущей точки страницы и полупрозрачный серый для других точек страницы.
![enter image description here]()
Если вы хотите, чтобы ваши пользовательские цвета были полупрозрачными, вы должны указать цвет с альфа-значением менее 1.0. Это необходимо сделать программно, как в следующем примере:
self.myPageControl.currentPageIndicatorTintColor = [UIColor colorWithRed:0.0 green:0.0 blue:1.0 alpha:0.5];
self.myPageControl.pageIndicatorTintColor = [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:0.5];
Подробнее читайте в UIPageControl - документация разработчика.
Ответ 4
Как и в Xcode 6.1.1 и iOS 8.1.1, я знаю, что настройка фонового цвета объекта UIPageControl на прозрачный цвет работала для меня.
[[self pageControl] setBackgroundColor:[UIColor clearColor]];
Ответ 5
Наконец-то я нашел рабочее решение для этой проблемы в Swift. Вы можете найти исходный код и ответ в этой ссылке.
Это требует, чтобы вы переопределили функцию viewDidLayoutSubviews(), чтобы привести элемент управления страницы в начало представления.
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
let subViews: NSArray = view.subviews
var scrollView: UIScrollView? = nil
var pageControl: UIPageControl? = nil
for view in subViews {
if view.isKindOfClass(UIScrollView) {
scrollView = view as? UIScrollView
}
else if view.isKindOfClass(UIPageControl) {
pageControl = view as? UIPageControl
}
}
if (scrollView != nil && pageControl != nil) {
scrollView?.frame = view.bounds
view.bringSubviewToFront(pageControl!)
}
}
Ответ 6
Он может работать, если вы установите цвет фона UIPageControl
на фоновое изображение, которое будет выглядеть так же, как цвет фона VC:
[UIPageControl appearance].backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"pageControllerBackground"]];
Ответ 7
Вот ответ с расширением Juan Ariza
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
let subViews: NSArray = view.subviews
var scrollView: UIScrollView? = nil
var pageControl: UIPageControl? = nil
for view in subViews {
if view.isKindOfClass(UIScrollView) {
scrollView = view as? UIScrollView
}
else if view.isKindOfClass(UIPageControl) {
pageControl = view as? UIPageControl
pageControl?.pageIndicatorTintColor = UIColor.lightGrayColor()
pageControl?.currentPageIndicatorTintColor = UIColor.blackColor()
pageControl?.backgroundColor = UIColor.clearColor()
}
}
if (scrollView != nil && pageControl != nil) {
scrollView?.frame = view.bounds
view.bringSubviewToFront(pageControl!)
}
}
Ответ 8
Попробуйте следующее:
pageControl = [UIPageControl appearance];
//for change the bullets color
pageControl.pageIndicatorTintColor = [UIColor colorWithRed:(129.0/255) green:(129.0/255) blue:(129.0/255) alpha:1.0];
pageControl.currentPageIndicatorTintColor = [UIColor colorWithRed:(06.0/255) green:(122.0/255) blue:(145.0/255) alpha:1.0];
pageControl.backgroundColor = [UIColor clearColor];