UIPageControl改变小圆点的问题


今天开发遇到了UIPageControl, 发现默认的小圆点(页码标示), 是看不到的, 除非设置背景色或者在有色背景上.

所以就想着就去改变其颜色, 网上搜了一大堆, 统一的方式就两种(本人测试两种方法都不行, ios7.0, xcode6.0): 

方法1.  继承自UIPageControl, 覆盖setCurrentPage()方法, 然后通过获取subViews(小圆点)设置其image即可.

详细见http://blog.sina.com.cn/s/blog_5da93c8f0101q45m.html

方法2. 给pageControl添加监听事件, 然后在事件中处理跟上述一样的过程.

// 监听
 [pc addTarget:self action:@selector(pageChanged:) forControlEvents:UIControlEventValueChanged];

/* set image */
-(void)pageChanged:(UIPageControl*)pc{
    NSArray *subViews = pc.subviews;
    for (int i = 0; i < [subViews count]; i++) {
        UIView* subView = [subViews objectAtIndex:i];
        if ([NSStringFromClass([subView class]) isEqualToString:NSStringFromClass([UIImageView class])]) {
            ((UIImageView*)subView).image = (pc.currentPage == i ? [UIImage imageNamed:@"RedPoint.png"] : [UIImage imageNamed:@"BluePoint.png"]);
        }
        
    }

详细见:http://blog.sina.com.cn/s/blog_5da93c8f0101q45m.html

两种方式都试过, 第一种方案会提示UIImage setImage时找不到实例, 但调试确实发现是UIImageView对象(不知道啥原因,有知情者可以留言), 第二种方案压根不会进入监听, UIControlEventValueChanged监听不到; 


终极解决方案(so easy):  

UIPageControl *pageControl = [[UIPageControl alloc] initWithFrame: ... 
pageControl.numberOfPages = 5; 
// 当前页圆点样式
pageControl.currentPageIndicatorTintColor = [UIColor blackColor];
// 未选中页
pageControl.pageIndicatorTintColor = [UIColor grayColor];

本人Ios版本7.0, xcode6.0

你可能感兴趣的:(IOS)