如何更改 UIPageControl 点 [重复]
Posted
技术标签:
【中文标题】如何更改 UIPageControl 点 [重复]【英文标题】:How to change UIPageControl dots [duplicate] 【发布时间】:2010-04-20 09:04:48 【问题描述】:我看到应用程序(例如 meebo)在 UIPageControls 上有不同的指示器,而不是默认的白色圆圈。
有没有简单的方法来做到这一点?我已经阅读了 UIPageControls 的文档,似乎没有替换图像的方法。
【问题讨论】:
HHPageControl 这不是另一个问题的欺骗:这里我们想知道如何改变点;链接的“欺骗”只是想改变颜色。我的解决方案附在 Aragon 的下面。 由于这个“欺骗”不再接受答案,我将评论另一个解决方案。如果您只想更改点的大小,可以使用 pagecontrol.transform = CGAffineTransformMakeScale(2, 2); 【参考方案1】:您可以通过以下步骤来实现:
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];
把这个放到customClass.h文件中
UIImage* activeImage;
UIImage* inactiveImage;
@property(nonatomic, retain) UIImage* activeImage;
@property(nonatomic, retain) UIImage* inactiveImage;
5- 只需将 UIPageControl 的当前页面设置在您将页面控件放入其中的类中,使用以下行:
[self.pageControl setCurrentPage:number];
记得在 viewDidLoad() 方法中设置当前页面在 UIPageControl 所在的视图中。
当视图加载时,UIPageControl 图像将被设置。
【讨论】:
点是ios7中的UIView对象,需要更新代码。 我已经更新了 Aragon 的 updateDots: 方法的代码以支持 iOS 7。请参阅下面的答案。 诅咒,答案已关闭,尽管我更喜欢这个解决方案,而不是链接页面上的那个被认为是骗子的解决方案。简单地说,PageControl 的子视图是 UIView,所以我将 UIImageView 注入其中: -(void)updateDots for (int i = 0; i Aragon 的回答结合 Aaron Vegh 的评论是一个可行的解决方案。【参考方案2】:没有用于更改图像的公共 API。您可以查看this blog post,它描述了一种自定义UIPageControl 的方法。
【讨论】:
以上是关于如何更改 UIPageControl 点 [重复]的主要内容,如果未能解决你的问题,请参考以下文章