如何更改UIPageControl点

8 iphone objective-c interface-builder uipagecontrol

我见过的应用程序(例如meebo)在UIPageControls上有不同的指标,而不是默认的白色圆圈.

是否有捷径可寻?我已经阅读了UIPageControls的文档,似乎没有替换图像的方法.

Ara*_*gon 21

您可以通过执行以下步骤来实现此目的:

1-创建从UIPageControl继承的自定义类.

2-将此类分配给要更改其点的所需UIPageControl.

3-将以下代码放在自定义UIPageControl类中.

把它放在customClass.m文件中:

-(id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super initWithCoder:aDecoder];
    if(self)
    {
        activeImage = [UIImage imageNamed:@"active_dot.png"];
        inactiveImage = [UIImage imageNamed:@"inactive_dot.png"];
    }
    return self;
}

-(void)updateDots
{
    for (int i = 0; i < [self.subviews count]; i++)
    {
        UIImageView* dot = [self.subviews objectAtIndex:i];
        dot.frame = CGRectMake(dot.frame.origin.x, dot.frame.origin.y, 14, 14.5);
        if (i == self.currentPage)
            dot.image = activeImage;
        else
            dot.image = inactiveImage;
    }
}

-(void)setCurrentPage:(NSInteger)page
{
    [super setCurrentPage:page];
    [self updateDots];
}
Run Code Online (Sandbox Code Playgroud)

把它放在customClass.h文件中

{
    UIImage* activeImage;
    UIImage* inactiveImage;
}
@property(nonatomic, retain) UIImage* activeImage;
@property(nonatomic, retain) UIImage* inactiveImage;
Run Code Online (Sandbox Code Playgroud)

5-只需使用以下行在您将页面控件放入其中的类中设置UIPageControl的当前页面:

[self.pageControl setCurrentPage:number];
Run Code Online (Sandbox Code Playgroud)

记得在UIPageControl里面的viewDidLoad()方法中设置当前页面.

当加载视图时,将设置UIPageControl图像.

  • -(void)updateDots { for (int i = 0; i &lt; [self.subviews count]; i++) { UIView* dot = [self.subviews objectAtIndex:i]; UIImageView * newDot = [[UIImageView alloc] initWithFrame:CGRectMake(dot.frame.origin.x, dot.frame.origin.y, 14, 14)]; if (i == self.currentPage) { newDot.image = self.activeImage; } else { newDot.image = self.inactiveImage; } [dot addSubview:newDot]; } } (4认同)
  • 点是iOS7中的UIView对象,因此需要更新代码. (2认同)

Lau*_*ble 4

没有用于更改图像的公共API.您可以查看此博客文章,其中介绍了自定义UIPageControl的方法.


归档时间:

查看次数:

36735 次

最近记录:

7 年,3 月 前