Ich würde auch activityView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleBottomMargin; für die richtige Landschaftsorientierung Aussehen und Rotation
hinzufügen
@adsurbum Danke! Es war der Schlüssel, um es auf alle iPhone-Bildschirme von SE bis 8 Plus zu zentrieren! In Swift ist es: activityView.autoresizingMask = [.flexibleLeftMargin, .flexibleTopMargin, .flexibleRightMargin, .flexibleBottomMargin, .flexibleWidth, .flexibleHeight]
balazs630
43
Wenn Sie Swift verwenden, gehen Sie folgendermaßen vor
let activityView = UIActivityIndicatorView(activityIndicatorStyle: .whiteLarge)
activityView.center = self.view.center
activityView.startAnimating()
self.view.addSubview(activityView)
Sie können die Aktivitätsanzeige in der Mitte des Bildschirms zentrieren, indem Sie sie als Unteransicht zum Stamm hinzufügen viewund nicht myBlueSubview.
Sie können das auch UIActivityIndicatorViewim Interface Builder erstellen . Ziehen Sie einfach eine Aktivitätsanzeigeransicht auf das Storyboard und legen Sie die Eigenschaften fest. Stellen Sie sicher, dass Häkchen beim Anhalten aktiviert sind . Verwenden Sie eine Steckdose, um startAnimating()und anzurufen stopAnimating(). Siehe dieses Tutorial .
Denken Sie daran, dass die Standardfarbe des LargeWhiteStils Weiß ist. Wenn Sie also einen weißen Hintergrund haben, den Sie nicht sehen können, ändern Sie einfach die Farbe in Schwarz oder eine andere gewünschte Farbe.
activityIndicator.color = UIColor.black
Ein häufiger Anwendungsfall ist die Ausführung einer Hintergrundaufgabe. Hier ist ein Beispiel:
// 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()
}
}
Willkommen bei S / O, Ihre Antwort sollte niemals 100% Code sein. Fügen Sie immer eine Erklärung hinzu.
Taslim Oseni
Ich bin mir nicht sicher, ob dies eine Schwarz-Weiß-Regel ist. Wenn der Umfang der Frage einfach genug und der Code selbsterklärend ist, ist es meiner Meinung nach völlig in Ordnung, nur einen Code zu beantworten. @ Orkhan Antwort ist genau richtig.
Wenn Sie versuchen möchten, dies über die Benutzeroberfläche zu tun, können Sie mein Video dazu anzeigen . Auf diese Weise müssen Sie keinen Code schreiben, um die Aktivitätsanzeige in der Mitte des iPhone-Bildschirms anzuzeigen.
Antworten:
UIActivityIndicatorView *activityView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; activityView.center=self.view.center; [activityView startAnimating]; [self.view addSubview:activityView];
quelle
activityView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleBottomMargin;
für die richtige Landschaftsorientierung Aussehen und RotationWenn Sie Swift verwenden, gehen Sie folgendermaßen vor
let activityView = UIActivityIndicatorView(activityIndicatorStyle: .whiteLarge) activityView.center = self.view.center activityView.startAnimating() self.view.addSubview(activityView)
quelle
Code für Swift 3 aktualisiert
SWIFT-Code
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) } }
Anmerkungen
Sie können die Aktivitätsanzeige in der Mitte des Bildschirms zentrieren, indem Sie sie als Unteransicht zum Stamm hinzufügen
view
und nichtmyBlueSubview
.activityIndicator.center = CGPoint(x: self.view.bounds.size.width/2, y: self.view.bounds.size.height/2) self.view.addSubview(activityIndicator)
Sie können das auch
UIActivityIndicatorView
im Interface Builder erstellen . Ziehen Sie einfach eine Aktivitätsanzeigeransicht auf das Storyboard und legen Sie die Eigenschaften fest. Stellen Sie sicher, dass Häkchen beim Anhalten aktiviert sind . Verwenden Sie eine Steckdose, umstartAnimating()
und anzurufenstopAnimating()
. Siehe dieses Tutorial .Denken Sie daran, dass die Standardfarbe des
LargeWhite
Stils Weiß ist. Wenn Sie also einen weißen Hintergrund haben, den Sie nicht sehen können, ändern Sie einfach die Farbe in Schwarz oder eine andere gewünschte Farbe.activityIndicator.color = UIColor.black
Ein häufiger Anwendungsfall ist die Ausführung einer Hintergrundaufgabe. Hier ist ein Beispiel:
// 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() } }
quelle
Das ist der richtige Weg:
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];
Richten Sie Ihre automatische Größenmaske ein, wenn Sie die Drehung unterstützen. Prost!!!
quelle
Versuchen Sie es auf diese Weise
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];
quelle
Wenn Sie einen Text zusammen mit dem Aktivitätsindikator hinzufügen möchten, besuchen Sie bitte http://nullpointr.wordpress.com/2012/02/27/ios-dev-custom-activityindicatorview/
quelle
Swift 4, Autolayout-Version
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), ]) }
quelle
Sie können die Position so einstellen
UIActivityIndicatorView *activityView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite]; activityView.frame = CGRectMake(120, 230, 50, 50); [self.view addSubview:activityView];
Ändern Sie entsprechend die Rahmengröße .....
quelle
Wenn Sie den Spinner mit AutoLayout zentrieren möchten, gehen Sie wie folgt vor:
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]];
quelle
Swift 3, xcode 8.1
Sie können eine kleine Erweiterung verwenden, um UIActivityIndicatorView im Zentrum von UIView und geerbten UIView-Klassen zu platzieren:
Code
extension UIActivityIndicatorView { convenience init(activityIndicatorStyle: UIActivityIndicatorViewStyle, color: UIColor, placeInTheCenterOf parentView: UIView) { self.init(activityIndicatorStyle: activityIndicatorStyle) center = parentView.center self.color = color parentView.addSubview(self) } }
Wie benutzt man
let activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: .whiteLarge, color: .gray, placeInTheCenterOf: view) activityIndicator.startAnimating()
Vollständiges Beispiel
In diesem Beispiel befindet sich UIActivityIndicatorView in der Mitte der ViewControllers-Ansicht:
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) } }
quelle
Für Swift 3 können Sie Folgendes verwenden:
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 }
quelle
Hoffe das wird funktionieren:
// 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];
quelle
Wenn Sie versuchen möchten, dies über die Benutzeroberfläche zu tun, können Sie mein Video dazu anzeigen . Auf diese Weise müssen Sie keinen Code schreiben, um die Aktivitätsanzeige in der Mitte des iPhone-Bildschirms anzuzeigen.
quelle
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) } }
quelle
Ich habe eine Möglichkeit gefunden, den Aktivitätsindikator mit dem Mindestcode anzuzeigen:
Importieren Sie zunächst Ihr UI-Kit
import UIKit;
Dann müssen Sie die Aktivitätsanzeige einleiten
let activityIndicator:UIActivityIndicatorView = UIActivityIndicatorView();
Dann kopieren Sie einfach diese Funktionen, die selbsterklärend sind, und rufen Sie sie an, wo immer Sie sie benötigen:
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(); }
quelle