Zauważyłem, że niektóre aplikacje, takie jak Safari i Mail, pokazują wskaźnik ładowania na pasku stanu (pasek na samej górze telefonu), gdy uzyskują dostęp do sieci. Czy istnieje sposób na zrobienie tego samego w aplikacjach SDK, czy też jest to jedyna rzecz dla Apple?
ios
cocoa-touch
rustyshelf
źródło
źródło
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
// as a one linerUIApplication.sharedApplication().networkActivityIndicatorVisible = true
Uważam, że następujące makra są całkiem przydatne!
Możesz więc po prostu zadzwonić
ShowNetworkActivityIndicator();
lubHideNetworkActivityIndicator();
z poziomu aplikacji (o ile oczywiście nagłówek jest dołączony!).źródło
Napisałem singletona, który rozwiązuje problem wielu połączeń, utrzymując licznik tego, co się dzieje (aby uniknąć usuwania statusu, gdy połączenie powraca, ale inne jest nadal aktywne):
Plik nagłówkowy:
i realizacja:
Przykład:
źródło
Służy do tego jednoliniowy kod:
źródło
Musisz zadbać o ukrycie wskaźnika aktywności również po zakończeniu połączenia sieciowego.
Jeśli używasz
AFNetworking
, nie musisz dużo robić.Dokonaj następujących zmian w
AppDelegate
klasie:Import
AFNetworking/AFNetworkActivityIndicatorManager.h
Włóż to
didFinishLaunchingWithOptions:
[[AFNetworkActivityIndicatorManager sharedManager] setEnabled:YES]
źródło
Wskaźnik aktywności sieci na pasku stanu został wycofany w systemie iOS 13 .
Używanie
UIApplication.shared.isNetworkActivityIndicatorVisible = true
nie będzie już działać.Komunikat o wycofaniu mówi:
źródło
Pomocne może być również upewnienie się, że uruchamiasz go w głównym wątku, ponieważ jest to związane z interfejsem użytkownika.
źródło
Jak wielu powiedziało, nie ma wskaźnika aktywności sieciowej dla iPhone'a X i prawdopodobnie dla innych nowych iPhone'ów z wycięciem.
Natknąłem się na tę niesamowitą bibliotekę napisaną przez Ortwina Gentza, FutureTap: https://github.com/futuretap/FTLinearActivityIndicator
Umieszcza wskaźnik z powrotem w miejscu, w którym znajdował się w momencie premiery iPhone'a X, wielu zapamiętałoby wskaźnik typu Knight Rider.
Ta biblioteka jest dostępna dla Swift 4.2, więc będziesz musiał zmienić ustawienia języka Swift, jak opisano tutaj: Wpisz „NSAttributedStringKey” (aka „NSString”) nie ma „czcionki” elementu członkowskiego
źródło