Mobil Programlama

iOS

MBProgressHUD ile Uzun İşlemleri Kullanıcıya Belirtmek

Lisans: Creative Commons 26.11.2020 tarihinde güncellendi
Bakabileceğiniz Etiketler: Eğitmen: Geleceği Yazanlar Ekibi

Çoğu uygulamada siyah transparan bir kutu içerisinde bir bekleme animasyonu ve altında bir mesaj içeren bir bekleme uyarısı ile karşılaşmışsınızdır. Uygulamanız arka planda uzun süreli bir işlem yürütüyor ve bu işlem sırasında kullanıcıya hoş bir bekleme animasyonu göstermek istiyorsanız, MB Progress HUD adlı bu projeye göz atmanızı öneririz.

MB Progress HUD projesini kendi projenize dâhil etmek için yapmanız gereken tek şey, MBProgressHUD.h ve MBProgressHUD.m dosyalarını projenize eklemek olacak. MBProgressHUD.h dosyasını ViewController içerisine içeri aldıktan (import) sonra aşağıdaki şekilde ekrana bir bekleme uyarısı çıkartabilirsiniz.

- (void) loadDataFromFeed:(NSString *) url withType:(NSString *) entryType {
    
    [MBProgressHUD showHUDAddedTo:self.view animated:YES];
    
   NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:kConnectionTimeout];
    [urlRequest setValue:@"Mozilla/5.0" forHTTPHeaderField:@"User-Agent"];
    
    [NSURLConnection sendAsynchronousRequest:urlRequest queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
      
        [MBProgressHUD hideHUDForView:self.view animated:YES];
       
    }];
}

 

Örnek bir MBProgressHUD kullanımı

Yukarıdaki örnekte uzaktaki bir web sunucusuna yapılan bir istekle beraber ekrana bir bekleme animasyonu gelmesi sağlanıyor. Ekranda animasyonu göstermek için showHUDAddedTo:animated: metodundan faydalanıyoruz. Bu metot hangi ekran üzerinde animasyonu başlatacağımızı belirliyor ve animated özelliğiyle ekrana yavaşça giriyor. Bağlantı tamamlandığında ise hideHUDForView:animated: metoduyla bekleme animasyonunu ekrandan kaldırabiliyoruz.

Eğer animasyonla beraber aynı zamanda bir metnin de çıkmasını isterseniz, labelText özelliğinden faydalanabilirsiniz. Aşağıdaki kodda animasyonuna "Lütfen bekleyiniz..." yazısının eklendiğini göreceksiniz.

- (void) loadDataFromFeed:(NSString *) url withType:(NSString *) entryType {
    
    MBProgressHUD *progressHud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
    progressHud.labelText = @"Lütfen bekleyiniz...";
    
   NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:kConnectionTimeout];
    [urlRequest setValue:@"Mozilla/5.0" forHTTPHeaderField:@"User-Agent"];
    
    [NSURLConnection sendAsynchronousRequest:urlRequest queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
      
        [MBProgressHUD hideHUDForView:self.view animated:YES];
       
    }];

 

Animasyonla beraber yazı eklenmesi

Kodu çalıştırdığımızda ekrana "Lütfen bekleyiniz..." yazısı geliyor.

İşleminiz uzun sürecek bir işlemse ve işlemin tamamlanma durumunu kullanıcılarla paylaşmak istiyorsanız setProgress metodunu kullanarak bunu gerçekleştirebilirsiniz.

MBProgressHUD *progressHud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
progressHud.labelText = @"Lütfen bekleyiniz...";
progressHud.mode = MBProgressHUDModeAnnularDeterminate;
[progressHud setProgress:.2];

 

setProgress metodu ile durumu güncellemek

Burada yapmanız gereken tek şey, animasyon tipi olarak yüzdesel durumu gösterebileceğiniz bir animasyon seçmek ve setProgress metodunu işlem sırasında güncellemek olacak. MBProgressHUDModeAnnularDeterminate tipindeki animasyon aşağıdaki görüntüyü ekrana getirir. setProgress metodu float cinsinden değer alır ve 0 - 1 aralığında sayı değerleri bekler.