デフォルトの白い円の代わりに UIPageControls に異なるインジケーターを持つアプリ (meebo など) を見たことがあります。
これを行う簡単な方法はありますか?UIPageControls のドキュメントを読みましたが、画像を置き換える方法はないようです。
デフォルトの白い円の代わりに UIPageControls に異なるインジケーターを持つアプリ (meebo など) を見たことがあります。
これを行う簡単な方法はありますか?UIPageControls のドキュメントを読みましたが、画像を置き換える方法はないようです。
これは、次の手順で実行できます。
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];
UIPageControlがその中にあるビューのviewDidLoad()メソッドで現在のページを設定することを忘れないでください。
ビューが読み込まれると、UIPageControl画像が設定されます。
画像を変更するためのパブリックAPIはありません。UIPageControlをカスタマイズする方法を説明しているこのブログ投稿をご覧ください。