2013-04-17 48 views
10

Uygulamamda gezinme çubuğunun ortasına etkinlik göstergesi eklemek istiyorum (başlık konumu) .Web hizmeti yanıtı tamamlandığında eski başlıkla değiştirilmelidir.Onun içinde 5 gezinme çubuğu var Ben google arama yaptım.Çok sayıda kod var ama onlar sadece sağ veya sol bar düğmesini değiştiriyorsunuz.Herhangi bir yardım?Gezinme Çubuğunun ortasındaki etkinlik göstergesi

cevap

19

Gezinme çubuğunun başlığını değiştirmek için gezinme öğesinin titleView özelliğini kullanın. Yani bir etkinlik göstergesini eklemek için, sadece bu yapın:

UIActivityIndicatorView *aiView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 
    aiView.hidesWhenStopped = NO; //I added this just so I could see it 
    self.navigationItem.titleView = aiView; 

yeniden başlığını kaldırmak ve göstermek istediğinizde:

self.navigationItem.titleView = nil; 
+0

Etkinlik göstergesinin "bağlanıyor" gibi bir metinle görüntülenmesini sağlamanın bir yolu var mı? – bobsacameno

+0

@ roi.holtzman, bunun mümkün olabileceğini düşünüyorum. NavigationItem'in title'ı olarak bir UIView oluşturmanız ve ona iki alt görüş vermeniz gerekir; Bir etkinlik göstergesi ve bir etiket. – rdelmar

2

Ayrıca, yanına bir metin etiketi eklemek istiyorsanız (ayarlar uygulamasından, mesela Facebook Giriş Apple tarafından yapılan gibi) aktivite göstergesi, bunu yapabilirsiniz:

- (void)showActivityIndicator 
{ 
    UIActivityIndicatorView *activityIndicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite]; 
    activityIndicatorView.frame = CGRectMake(0, 0, 22, 22); 
    activityIndicatorView.color = [UIColor blackColor]; 
    [activityIndicatorView startAnimating]; 

    UILabel *titleLabel = [UILabel new]; 
    titleLabel.text = @"Creating Account"; 
    titleLabel.font = [UIFont boldFlatFontOfSize:18]; 

    CGSize fittingSize = [titleLabel sizeThatFits:CGSizeMake(200.0f, activityIndicatorView.frame.size.height)]; 
    titleLabel.frame = CGRectMake(activityIndicatorView.frame.origin.x + activityIndicatorView.frame.size.width + 8, 
            activityIndicatorView.frame.origin.y, 
            fittingSize.width, 
            fittingSize.height); 

    UIView *titleView = [[UIView alloc] initWithFrame:CGRectMake(-(activityIndicatorView.frame.size.width + 8 + titleLabel.frame.size.width)/2, 
                   -(activityIndicatorView.frame.size.height)/2, 
                   activityIndicatorView.frame.size.width + 8 + titleLabel.frame.size.width, 
                   activityIndicatorView.frame.size.height)]; 
    [titleView addSubview:activityIndicatorView]; 
    [titleView addSubview:titleLabel]; 

    self.navigationItem.titleView = titleView; 
} 

- (void)hideActivityIndicator 
{ 
    self.navigationItem.titleView = nil; 
} 
10

pasqls cevap benim için iyi çalıştı, ben hızlı

bunu yazdım
func showActivityIndicator() { 
     let activityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.White) 
     activityIndicatorView.frame = CGRectMake(0, 0, 14, 14) 
     activityIndicatorView.color = UIColor.blackColor() 
     activityIndicatorView.startAnimating() 

     let titleLabel = UILabel.new() 
     titleLabel.text = "...Connecting" 
     titleLabel.font = UIFont.italicSystemFontOfSize(14) 

     let fittingSize = titleLabel.sizeThatFits(CGSizeMake(200.0, activityIndicatorView.frame.size.height)) 
     titleLabel.frame = CGRectMake(activityIndicatorView.frame.origin.x + activityIndicatorView.frame.size.width + 8, activityIndicatorView.frame.origin.y, fittingSize.width, fittingSize.height) 

     let titleView = UIView(frame: CGRectMake(((activityIndicatorView.frame.size.width + 8 + titleLabel.frame.size.width)/2), ((activityIndicatorView.frame.size.height)/2), (activityIndicatorView.frame.size.width + 8 + titleLabel.frame.size.width), (activityIndicatorView.frame.size.height))) 
     titleView.addSubview(activityIndicatorView) 
     titleView.addSubview(titleLabel) 

     self.navigationItem.titleView = titleView 
    } 

    func hideActivityIndicator() { 
     self.navigationItem.titleView = nil 
    } 
+3

Cevabınız hakkında daha iyi bir açıklama yazmak daha iyidir. – serenesat

+1

Hızla cevap bulmak bazen zor! Teşekkürler – krummens

İlgili konular