dodałbym też activityView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleBottomMargin; dla poprawnego wyglądu i rotacji orientacji poziomej
adsurbum
@adsurbum Dziękuję! To był klucz do wyśrodkowania go na wszystkich rozmiarach ekranów iPhone'a od SE do 8 Plus! W Swift jest to: activityView.autoresizingMask = [.fasticLeftMargin, .fasticTopMargin, .f flexibleRightMargin, .fasticBottomMargin, .f flexibleWidth, .f flexibleHeight]
balazs630
43
Jeśli używasz Swift, tak to robisz
let activityView = UIActivityIndicatorView(activityIndicatorStyle: .whiteLarge)
activityView.center = self.view.center
activityView.startAnimating()
self.view.addSubview(activityView)
Możesz również utworzyć UIActivityIndicatorVieww Interface Builder. Wystarczy przeciągnąć widok wskaźnika aktywności na scenorys i ustawić właściwości. Pamiętaj, aby zaznaczyć opcję Ukrywa się po zatrzymaniu . Użyj gniazdka, aby zadzwonić startAnimating()i stopAnimating(). Zobacz ten samouczek .
Pamiętaj, że domyślnym kolorem LargeWhitestylu jest biały. Więc jeśli masz białe tło, nie możesz go zobaczyć, po prostu zmień kolor na czarny lub inny, który chcesz.
activityIndicator.color = UIColor.black
Typowym przypadkiem użycia może być uruchomienie zadania w tle. Oto przykład:
// start animating before the background task startsactivityIndicator.startAnimating()
// background taskDispatchQueue.global(qos: .userInitiated).async {
doSomethingThatTakesALongTime()
// return to the main threadDispatchQueue.main.async {
// stop animating now that background task is finishedself.activityIndicator.stopAnimating()
}
}
Witamy w S / O, Twoja odpowiedź nigdy nie powinna być w 100% kodem. Zawsze dodawaj jakieś wyjaśnienie.
Taslim Oseni
Nie jestem pewien, czy jest to reguła czarno-biała. Jeśli zakres pytania jest dość prosty, a kod nie wymaga objaśnień, myślę, że odpowiedź zawierająca tylko kod jest w porządku. Odpowiedź @ Orkhan jest trafna.
? Jeśli chcesz spróbować to zrobić za pomocą interfejsu, możesz obejrzeć mój film . W ten sposób nie musisz pisać żadnego kodu, aby wyświetlać wskaźnik aktywności na środku ekranu iPhone'a.
Odpowiedzi:
UIActivityIndicatorView *activityView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; activityView.center=self.view.center; [activityView startAnimating]; [self.view addSubview:activityView];
źródło
activityView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleBottomMargin;
dla poprawnego wyglądu i rotacji orientacji poziomejJeśli używasz Swift, tak to robisz
let activityView = UIActivityIndicatorView(activityIndicatorStyle: .whiteLarge) activityView.center = self.view.center activityView.startAnimating() self.view.addSubview(activityView)
źródło
Kod zaktualizowany dla Swift 3
Kod SWIFT
import UIKit class ViewController: UIViewController { let activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.whiteLarge) @IBOutlet weak var myBlueSubview: UIView! @IBAction func showButtonTapped(sender: UIButton) { activityIndicator.startAnimating() } @IBAction func hideButtonTapped(sender: UIButton) { activityIndicator.stopAnimating() } override func viewDidLoad() { super.viewDidLoad() // set up activity indicator activityIndicator.center = CGPoint(x: myBlueSubview.bounds.size.width/2, y: myBlueSubview.bounds.size.height/2) activityIndicator.color = UIColor.yellow myBlueSubview.addSubview(activityIndicator) } }
Uwagi
Możesz wyśrodkować wskaźnik aktywności na środku ekranu, dodając go jako podwidok do katalogu głównego,
view
a niemyBlueSubview
.activityIndicator.center = CGPoint(x: self.view.bounds.size.width/2, y: self.view.bounds.size.height/2) self.view.addSubview(activityIndicator)
Możesz również utworzyć
UIActivityIndicatorView
w Interface Builder. Wystarczy przeciągnąć widok wskaźnika aktywności na scenorys i ustawić właściwości. Pamiętaj, aby zaznaczyć opcję Ukrywa się po zatrzymaniu . Użyj gniazdka, aby zadzwonićstartAnimating()
istopAnimating()
. Zobacz ten samouczek .Pamiętaj, że domyślnym kolorem
LargeWhite
stylu jest biały. Więc jeśli masz białe tło, nie możesz go zobaczyć, po prostu zmień kolor na czarny lub inny, który chcesz.activityIndicator.color = UIColor.black
Typowym przypadkiem użycia może być uruchomienie zadania w tle. Oto przykład:
// start animating before the background task starts activityIndicator.startAnimating() // background task DispatchQueue.global(qos: .userInitiated).async { doSomethingThatTakesALongTime() // return to the main thread DispatchQueue.main.async { // stop animating now that background task is finished self.activityIndicator.stopAnimating() } }
źródło
To jest właściwy sposób:
UIActivityIndicatorView *activityIndicator = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; activityIndicator.center = CGPointMake(self.view.frame.size.width / 2.0, self.view.frame.size.height / 2.0); [self.view addSubview: activityIndicator]; [activityIndicator startAnimating]; [activityIndicator release];
Skonfiguruj maskę autorezowania, jeśli obsługujesz rotację. Twoje zdrowie!!!
źródło
Spróbuj w ten sposób
UIActivityIndicatorView *activityIndicator = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; activityIndicator.frame = CGRectMake(10.0, 0.0, 40.0, 40.0); activityIndicator.center = super_view.center; [super_view addSubview: activityIndicator]; [activityIndicator startAnimating];
źródło
Jeśli chcesz dodać tekst wraz ze wskaźnikiem aktywności, zajrzyj na http://nullpointr.wordpress.com/2012/02/27/ios-dev-custom-activityindicatorview/
źródło
Swift 4, wersja Autolayout
func showActivityIndicator(on parentView: UIView) { let activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: .gray) activityIndicator.startAnimating() activityIndicator.translatesAutoresizingMaskIntoConstraints = false parentView.addSubview(activityIndicator) NSLayoutConstraint.activate([ activityIndicator.centerXAnchor.constraint(equalTo: parentView.centerXAnchor), activityIndicator.centerYAnchor.constraint(equalTo: parentView.centerYAnchor), ]) }
źródło
Możesz ustawić pozycję w ten sposób
UIActivityIndicatorView *activityView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite]; activityView.frame = CGRectMake(120, 230, 50, 50); [self.view addSubview:activityView];
Odpowiednio zmień rozmiar ramy .....
źródło
Jeśli chcesz wyśrodkować pokrętło za pomocą Autoukładu, wykonaj:
UIActivityIndicatorView *activityView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; [activityView startAnimating]; [self.view addSubview:activityView]; [self.view addConstraint:[NSLayoutConstraint constraintWithItem:activityView attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0.0]]; [self.view addConstraint:[NSLayoutConstraint constraintWithItem:activityView attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterY multiplier:1.0 constant:0.0]];
źródło
Swift 3, xcode 8.1
Możesz użyć małego rozszerzenia, aby umieścić UIActivityIndicatorView w centrum UIView i dziedziczonych klas UIView:
Kod
extension UIActivityIndicatorView { convenience init(activityIndicatorStyle: UIActivityIndicatorViewStyle, color: UIColor, placeInTheCenterOf parentView: UIView) { self.init(activityIndicatorStyle: activityIndicatorStyle) center = parentView.center self.color = color parentView.addSubview(self) } }
Jak używać
let activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: .whiteLarge, color: .gray, placeInTheCenterOf: view) activityIndicator.startAnimating()
Pełny przykład
W tym przykładzie UIActivityIndicatorView umieszczony w środku widoku ViewControllers:
import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. let activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: .whiteLarge, color: .gray, placeInTheCenterOf: view) activityIndicator.startAnimating() } } extension UIActivityIndicatorView { convenience init(activityIndicatorStyle: UIActivityIndicatorViewStyle, color: UIColor, placeInTheCenterOf parentView: UIView) { self.init(activityIndicatorStyle: activityIndicatorStyle) center = parentView.center self.color = color parentView.addSubview(self) } }
źródło
W przypadku Swift 3 możesz użyć:
func setupSpinner(){ spinner = UIActivityIndicatorView(frame: CGRect(x: 0, y: 0, width: 40, height:40)) spinner.color = UIColor(Colors.Accent) self.spinner.center = CGPoint(x:UIScreen.main.bounds.size.width / 2, y:UIScreen.main.bounds.size.height / 2) self.view.addSubview(spinner) spinner.hidesWhenStopped = true }
źródło
Mam nadzieję, że to zadziała:
// create activity indicator UIActivityIndicatorView *activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 20.0f, 20.0f)]; [activityIndicator setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleWhite]; ... [self.view addSubview:activityIndicator]; // release it [activityIndicator release];
źródło
? Jeśli chcesz spróbować to zrobić za pomocą interfejsu, możesz obejrzeć mój film . W ten sposób nie musisz pisać żadnego kodu, aby wyświetlać wskaźnik aktywności na środku ekranu iPhone'a.
źródło
import UIKit class ViewController: UIViewController { @IBOutlet weak var textLbl: UILabel! var containerView = UIView() var loadingView = UIView() var activityIndicator = UIActivityIndicatorView() override func viewDidLoad() { super.viewDidLoad() let _ = Timer.scheduledTimer(withTimeInterval: 10, repeats: false) { (_) in self.textLbl.text = "Stop ActivitiIndicator" self.activityIndicator.stopAnimating() self.containerView.removeFromSuperview() } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } @IBAction func palyClicked(sender: AnyObject){ containerView.frame = self.view.frame containerView.backgroundColor = UIColor(red: 0/255, green: 0/255, blue: 0/255, alpha: 0.3) self.view.addSubview(containerView) loadingView.frame = CGRect(x: 0, y: 0, width: 80, height: 80) loadingView.center = self.view.center loadingView.backgroundColor = UIColor(red: 0/255, green: 0/255, blue: 0/255, alpha: 0.5) loadingView.clipsToBounds = true loadingView.layer.cornerRadius = 10 containerView.addSubview(loadingView) activityIndicator.frame = CGRect(x: 0, y: 0, width: 40, height: 40) activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.whiteLarge activityIndicator.center = CGPoint(x:loadingView.frame.size.width / 2, y:loadingView.frame.size.height / 2); activityIndicator.startAnimating() loadingView.addSubview(activityIndicator) } }
źródło
Znalazłem sposób na wyświetlenie wskaźnika aktywności z minimalnym kodem:
przede wszystkim zaimportuj swój zestaw interfejsu użytkownika
import UIKit;
Następnie musisz zainicjować wskaźnik aktywności
let activityIndicator:UIActivityIndicatorView = UIActivityIndicatorView();
Następnie po prostu skopiuj, wklej te funkcje poniżej, które są samoobjaśniające i zadzwoń do nich, gdziekolwiek ich potrzebujesz:
func startLoading(){ activityIndicator.center = self.view.center; activityIndicator.hidesWhenStopped = true; activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.gray; view.addSubview(activityIndicator); activityIndicator.startAnimating(); UIApplication.shared.beginIgnoringInteractionEvents(); } func stopLoading(){ activityIndicator.stopAnimating(); UIApplication.shared.endIgnoringInteractionEvents(); }
źródło