2010-04-20 30 views
8

Varsayılan beyaz daireler yerine UIPageControls üzerinde farklı göstergelere sahip uygulamaları (ör. Meebo) gördüm.UIPageControl noktaları nasıl değiştirilir

Bunu yapmanın kolay bir yolu var mı? UIPageControls için dokümanlar okudum ve görüntüleri değiştirmek için bir yöntem yok gibi görünüyor.

+0

[** HHPageControl **] (https://github.com/hemangshah/HHPageController) – Hemang

+2

Bu diğer sorunun bir kopyası değil: Burada noktaların nasıl değiştirileceğini öğrenmek istiyoruz; bağlantılı "dupe" sadece rengi değiştirmek istiyor. Çözümüm Aragon'un altına eklendi. –

+0

Bu "dupe" artık cevapları kabul etmediğinden başka bir çözüm önereceğim. Sadece noktaların boyutunu değiştirmek isterseniz, pagecontrol.transform = CGAffineTransformMakeScale (2, 2) kullanabilirsiniz; IOS7'de – mvandillen

cevap

5

Resimleri değiştirmek için genel API yoktur. UIPageControl'u özelleştirmek için bir yöntem açıklayan this blog post'a bakabilirsiniz.

21

Aşağıdaki adımları yaparak bunu başarabilirsiniz bağlantılar:

1- UIPageControl devralan bir özel sınıf oluşturun.

Bu sınıfı, noktalarını değiştirmek istediğiniz istenen UIPageControl öğesine atayın.

3- Aşağıdaki kodu, özel UIPageControl sınıfınızın içine yerleştirin.

customClass.m dosyasında bu koyun:

{ 
    UIImage* activeImage; 
    UIImage* inactiveImage; 
} 
@property(nonatomic, retain) UIImage* activeImage; 
@property(nonatomic, retain) UIImage* inactiveImage; 

5-

Sadece sınıfta UIPageControl mevcut sayfasını set file

-(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 koy sizi Aşağıdaki satırı kullanarak sayfa denetimini koyun:

Geçerli sayfayı ayarlamayı unutmayın Bu UIPageControl görünümünde viewDidLoad() yönteminin içinde.

Görünüm yüklendiğinde, UIPageControl görüntüleri ayarlanacaktır.

+2

nokta UIView nesnedir, bu nedenle kodu güncellemeniz gerekir. – Centurion

+0

Aragon'un updateDots: yöntemini iOS 7'yi desteklemek için güncelledim. Aşağıdaki cevabımı görün. –

+0

Curses, cevaplar kapalı, bu çözümün sözde bir dupe olduğu bağlantılı sayfadan daha iyi olsa bile. Sadece bir pagecontrol en subviews UIViews vardır koymak, bu yüzden onların içine bir UIImageView enjekte ediyorum: –