it-swarm.dev

Yükleme göstergesinin üst durum çubuğunda nasıl gösterileceği

Safari ve Mail gibi bazı uygulamaların, şebekeye erişirken durum çubuğunda (telefonun en üstündeki çubuk) yükleme göstergesi gösterdiğini fark ettim. Aynı şeyi SDK uygulamalarında yapmanın bir yolu var mı, yoksa bu bir Apple mı?

116
rustyshelf

UIA uygulamasındadır:

[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;

swift için:

UIApplication.shared.isNetworkActivityIndicatorVisible = true
205

Aşağıdaki makroları oldukça faydalı buldum!

#define ShowNetworkActivityIndicator() [UIApplication sharedApplication].networkActivityIndicatorVisible = YES
#define HideNetworkActivityIndicator() [UIApplication sharedApplication].networkActivityIndicatorVisible = NO

Böylece uygulamanız içinden ShowNetworkActivityIndicator(); veya HideNetworkActivityIndicator(); işlevlerini arayabilirsiniz (başlık elbette dahil edildiği sürece).

30

Olanların bir sayacını tutarak birden fazla bağlantının problemini çözen bir singleton yazdım.

Başlık dosyası:

#import <Foundation/Foundation.h>

@interface RMActivityIndicator : NSObject

-(void)increaseActivity;
-(void)decreaseActivity;
-(void)noActivity;

+(RMActivityIndicator *)sharedManager;

@end

ve uygulama:

#import "RMActivityIndicator.h"

@interface RMActivityIndicator ()

@property(nonatomic,assign) unsigned int activityCounter;

@end

@implementation RMActivityIndicator

- (id)init
{
    self = [super init];
    if (self) {
        self.activityCounter = 0;
    }
    return self;
}

    -(void)increaseActivity{
        @synchronized(self) {
             self.activityCounter++;
        }
        [self updateActivity];
    }
-(void)decreaseActivity{
    @synchronized(self) {
           if (self.activityCounter>0) self.activityCounter--;
    }
    [self updateActivity];
}
-(void)noActivity{
    self.activityCounter = 0;
    [self updateActivity];
}

-(void)updateActivity{
    UIApplication* app = [UIApplication sharedApplication];
    app.networkActivityIndicatorVisible = (self.activityCounter>0);
}

#pragma mark -
#pragma mark Singleton instance

+(RMActivityIndicator *)sharedManager {
    static dispatch_once_t pred;
    static RMActivityIndicator *shared = nil;

    dispatch_once(&pred, ^{
        shared = [[RMActivityIndicator alloc] init];
    });
    return shared;
}

@end

Örnek:

    [[RMActivityIndicator sharedManager]increaseActivity];
    [NSURLConnection sendAsynchronousRequest:urlRequest queue:self.networkReceiveProcessQueue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
    {
        [[RMActivityIndicator sharedManager]decreaseActivity];
    }
25
Resh32

Bunu yapmak için tek bir satır kodu:

[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
19
asish

Şebeke görüşmeniz bittikten sonra etkinlik göstergesini gizlemeye de dikkat etmeniz gerekir.

AFNetworking kullanıyorsanız, fazla bir şey yapmanıza gerek yoktur.

AppDelegate Sınıfındaki değişiklikleri yapın:

  1. AFNetworking/AFNetworkActivityIndicatorManager.h dosyasını içe aktar

  2. Bunu didFinishLaunchingWithOptions: içine koy

[[AFNetworkActivityIndicatorManager sharedManager] setEnabled:YES]

5
Babu Lal

UI ile ilgili olduğu için ana iş parçacığında çalıştırdığınızdan emin olmanız da yararlı olabilir. 

dispatch_async(dispatch_get_main_queue(), ^{
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
});
2
Sev

Birçoğunun söylediği gibi, iPhone X ve muhtemelen çentikli diğer yeni iPhone'lar için bir ağ etkinliği göstergesi yoktur.

Ortwin Gentz ​​tarafından yazılan bu inanılmaz kütüphaneye rastladım, FutureTap: https://github.com/futuretap/FTLinearActivityIndicator

Göstergeyi, iPhone X ilk kez piyasaya sürüldüğü yerin arkasına koyar, birçoğu Knight Rider'ın tip göstergesini hatırlardı.

Bu kütüphane Swift 4.2 için kullanılabilir, bu yüzden burada açıklandığı şekilde Swift Language ayarlarını değiştirmeniz gerekecektir: Type 'NSAttributedStringKey' (aka 'NSString') 'üye' üyeliğine sahip değildir

0
erickva

Durum çubuğu ağ etkinliği göstergesi iOS 1 içinde kullanımdan kaldırıldı.

UIApplication.shared.isNetworkActivityIndicatorVisible = true kullanmak artık çalışmaz.

İtiraz mesajı şöyle diyor:

İsterseniz uygulamanızda özel bir ağ etkinliği kullanıcı Arabirimi sağlayın.

0
Mo Reza Farahani