首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIPageControl -如何使背景透明?

UIPageControl -如何使背景透明?
EN

Stack Overflow用户
提问于 2014-01-08 21:57:10
回答 8查看 18.8K关注 0票数 19

我正在使用UIPageControl,并试图使背景透明。

代码语言:javascript
复制
UIPageControl *pageControl = [UIPageControl appearance];
pageControl.pageIndicatorTintColor = [UIColor lightGrayColor];
pageControl.currentPageIndicatorTintColor = [UIColor blackColor];
pageControl.backgroundColor = [UIColor blackColor];

有什么建议吗?

试过

代码语言:javascript
复制
pageControl.backgroundColor = [UIColor clearColor];

没有运气。

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

好的,正如@powerj1984 1984提到的,UIPageControl在位置和背景色方面似乎是不可更改的。

所以我决定把这个移到UIViewController,创建一个UIPageControl

代码语言:javascript
复制
@property (weak, nonatomic) IBOutlet UIPageControl *pageControl;

然后把这个放到我的UIPageViewController上面,就像在viewDidLoad里一样

代码语言:javascript
复制
self.pageControl.numberOfPages = self.pageTitles.count;    
[self.view addSubview:_pageControl.viewForBaselineLayout]; 

然后我更新了UIPageControlviewControllerBeforeViewControllerviewControllerAfterViewController中的索引。

代码语言:javascript
复制
NSUInteger index = ((HomePageContentViewController*) viewController).pageIndex; 
self.pageControl.currentPage = index;
EN

回答 8

Stack Overflow用户

发布于 2014-01-10 02:49:13

好的,正如@powerj1984 1984和@daniellarsson提到的,UIPageControl在位置和背景色方面似乎是不可更改的。

所以我决定把这个移到UIViewController,创建一个UIPageControl和

代码语言:javascript
复制
@property (weak, nonatomic) IBOutlet UIPageControl *pageControl;

然后把这个放到我的UIPageViewController上面,就像在viewDidLoad里一样

代码语言:javascript
复制
self.pageControl.numberOfPages = self.pageTitles.count;    
[self.view addSubview:_pageControl.viewForBaselineLayout]; 

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

代码语言:javascript
复制
NSUInteger index = ((HomePageContentViewController*) viewController).pageIndex; 
self.pageControl.currentPage = index;
票数 8
EN

Stack Overflow用户

发布于 2015-03-18 12:44:20

代码语言:javascript
复制
pageControl.backgroundColor = [UIColor clearColor];

正在工作!而必须将backgroundColorUIPageViewController也设置为[UIColor clearColor]和than!您将看到容器视图的背景颜色。

代码语言:javascript
复制
- (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];
}
票数 5
EN

Stack Overflow用户

发布于 2014-01-08 22:37:49

默认情况下,页面控件是透明的。

使用此示例代码进行检查:

代码语言:javascript
复制
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]];

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

页面控件的外观

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

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

淡色

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

如果您希望您的自定义颜色是半透明的,则必须指定alpha值小于1.0的颜色。这必须以编程方式完成,如以下示例所示:

代码语言:javascript
复制
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 - Developer.Apple文档中的更多细节

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21007434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档