UIPageControl - 如何使背景透明?

sse*_*van 19 objective-c uipagecontrol ios

我正在使用UIPageControl并尝试使背景透明.

UIPageControl *pageControl = [UIPageControl appearance];
pageControl.pageIndicatorTintColor = [UIColor lightGrayColor];
pageControl.currentPageIndicatorTintColor = [UIColor blackColor];
pageControl.backgroundColor = [UIColor blackColor];
Run Code Online (Sandbox Code Playgroud)

有什么建议?

试着

pageControl.backgroundColor = [UIColor clearColor];
Run Code Online (Sandbox Code Playgroud)

没运气.

============

好的,正如@ powerj1984@daniellarsson 所提到的,UIPageControl在位置和背景颜色方面似乎是不可改变的.

所以我决定把它移到UIViewController并创建一个UIPageControl

@property (weak, nonatomic) IBOutlet UIPageControl *pageControl;
Run Code Online (Sandbox Code Playgroud)

然后把这个给我的顶部UIPageViewControllerviewDidLoad

self.pageControl.numberOfPages = self.pageTitles.count;    
[self.view addSubview:_pageControl.viewForBaselineLayout]; 
Run Code Online (Sandbox Code Playgroud)

然后我更新了UIPageControlin viewControllerBeforeViewController和的索引viewControllerAfterViewController

NSUInteger index = ((HomePageContentViewController*) viewController).pageIndex; 
self.pageControl.currentPage = index;
Run Code Online (Sandbox Code Playgroud)

sse*_*van 8

好的,正如@ powerj1984和@daniellarsson所提到的,UIPageControl在位置和背景颜色方面似乎无法改变.

所以我决定把它移到UIViewController并创建一个UIPageControl和

@property (weak, nonatomic) IBOutlet UIPageControl *pageControl;
Run Code Online (Sandbox Code Playgroud)

然后将它带到我的UIPageViewController顶部,就像在viewDidLoad中一样

self.pageControl.numberOfPages = self.pageTitles.count;    
[self.view addSubview:_pageControl.viewForBaselineLayout]; 
Run Code Online (Sandbox Code Playgroud)

然后我在viewControllerBeforeViewController和viewControllerAfterViewController中更新了UIPageControl的索引

NSUInteger index = ((HomePageContentViewController*) viewController).pageIndex; 
self.pageControl.currentPage = index;
Run Code Online (Sandbox Code Playgroud)


Mir*_*bic 5

pageControl.backgroundColor = [UIColor clearColor];
Run Code Online (Sandbox Code Playgroud)

正在工作但是!! 比你必须设置backgroundColorUIPageViewController还要[UIColor clearColor]比!您将看到容器视图的backgroundcolor.

- (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];
}
Run Code Online (Sandbox Code Playgroud)


Sha*_* TK 4

页面控制默认是透明的。

检查此示例代码:

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]];
Run Code Online (Sandbox Code Playgroud)

请在下面找到更多定制可能性

页面控件的外观

您可以通过设置下面描述的属性来自定义页面控件的外观。

在此输入图像描述

要自定义应用程序中所有页面控件的外观,请使用外观代理(例如,[UIPageControl外观])。有关外观代理的更多信息,请参阅外观代理

色调颜色

自定义页面控件外观的唯一方法是为代表每个页面的点设置自定义色调。当前页面 (currentPageIndicatorTintColor) 字段影响代表当前显示页面的点的颜色,色调颜色 (pageIndicatorTintColor) 字段影响代表每个其他页面的点的颜色。当前页面点的默认颜色为白色,其他页面点的默认颜色为半透明灰色。

在此输入图像描述

如果您希望自定义颜色是半透明的,则必须指定 alpha 值小于 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];
Run Code Online (Sandbox Code Playgroud)

在UIPageControl - Developer.Apple 文档中查看更多详细信息

  • 这更多的是点,似乎不是背景 - 你在那里看到的黑色背景 (2认同)