2010-04-20 64 views
8

我見過的應用程序(例如meebo)在UIPageControls上具有不同的指示符,而不是默認的白色圓圈。如何更改UIPageControl點

有沒有簡單的方法來做到這一點?我已閱讀UIPageControls的文檔,似乎沒有方法來替換圖像。

+0

[** HHPageControl **](https://github.com/hemangshah/HHPageController) – Hemang 2013-09-07 04:56:55

+2

這不是另一個問題的謎團:在這裏我們想知道如何改變點;鏈接的「笨蛋」只是想改變顏色。我的解決方案附加到阿拉貢的下面。 – 2014-03-20 14:07:51

+0

既然這個「笨蛋」不接受答案了,我會評論另一種解決方案。如果你只是想改變點的大小,你可以使用pagecontrol.transform = CGAffineTransformMakeScale(2,2); – mvandillen 2017-04-05 13:38:05

回答

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]; 
} 

在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圖像將被設置。

+2

點是iOS7中的UIView對象,所以需要更新代碼。 – Centurion 2013-10-07 15:40:10

+0

我已更新Aragon的updateDots:方法的代碼以支持iOS 7.請參閱下面的答案。 – 2014-03-20 14:04:56

+0

詛咒,答案是封閉的,儘管我喜歡這個解決方案比鏈接頁面上的這個解決方案更好。簡單地說,PageControl的子視圖是UIViews,所以我向它們中注入了一個UIImageView: – 2014-03-20 14:06:11

相關問題