Wie positioniert Aktivitätsanzeige an das Zentrum Ihrer superview mit Auto-Layout programmatisch?
Warum der folgende code funktioniert nicht für die Positionierung der Aktivitäten-Anzeige an das Zentrum Ihrer superview:
UIActivityIndicatorView *activityIndicator = [[UIActivityIndicatorView alloc]
initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
[self.mysuperview addSubview:activityIndicator];
[activityIndicator addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"|-(>=20)-[view(==100)]-(>=20)-|"
options:NSLayoutFormatAlignAllCenterX | NSLayoutFormatAlignAllCenterY
metrics:nil
views:@{@"view" : self.mysuperview}]];
Aktivitätsanzeige positioniert ist irgendwo in der oberen linken Ecke, auf jeden Fall nicht in der Mitte.
==================
Update:
LÖSUNG GEFUNDEN: ich habe zum ausschalten autoresizing Einschränkungen nach der Erstellung Kennzeichen und dann alle Lösungen, wo diese Arbeit:
[activityIndicator setTranslatesAutoresizingMaskIntoConstraints:NO];
Ich fand es auf dem angegebenen link von @Vignesh, so dass ich akzeptieren Sie seine/Ihre Antwort.
- Für Informationen, wenn Sie github.com/dkduck/FLKAutoLayout dann ist es-handle, das auch für Sie.
- Ich bevorzuge github.com/Masonry/Masonry
- Yep. Es war translatesAutoresizingMaskIntoConstraints auch für mich. Einfach zu vergessen.
- OMG ich hatte den gleichen Fehler.
- Siehe meine Antwort das gibt 4 verschiedene Möglichkeiten, um Ihr problem zu lösen mit Auto-Layout oder Spring und Struts.
InformationsquelleAutor zyxel | 2013-10-17
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie versuchen, diese,
Entnommen hier.
Den vier folgenden Swift 5 /iOS 12 code-Beispiele zeigen, wie auf center einem
UIActivityIndicatorView
innerhalb derUIView
einerUIViewController
mit Auto-layout.Alle Proben, die zum gleichen Ergebnis führen, aber, nach Ihren Bedürfnissen und Ihrem Geschmack, können Sie eine oder das andere.
Wenn Ihr
UIActivityIndicatorView
's superview ist nichtself.view
Sie ersetzen einfach jedeself.view
rufen Sie mit Ihrem eigenen (nicht umhüllt)superview
.1.
NSLayoutConstraint
Initialisierer Stil2.
UIViewAutoresizing
StilFedern und Federbeine übersetzt werden in die entsprechenden auto-layout-constraints zur Laufzeit.
3. Visual Format Language style
4.
NSLayoutAnchor
Stil (erfordert iOS 9)Es treffen die Anforderungen, indem Sie in der Ecke, da bist du nicht die besagt, dass die Lücken auf jeder Seite gleich sein müssen. Versuchen Sie dies:
Und vertikal zentrieren tun dies auch:
Alternativ empfehle ich mit der FLKAutoLayout Projekt, um dies alles vereinfachen:
https://github.com/dkduck/FLKAutoLayout
Dann können Sie tun:
Das ist schön 🙂
CenterY
auch, wenn Sie es wollen, in den Mittelpunkt. Mit nur X kann es überall auf der vertikalen Linie in der Mitte der superview.Ich zentriert mein Aktivitätsanzeige in seinem superview, indem Sie im Interface Builder mit einem alpha-Wert von null (und ein IBOutlet für es in meinem view-controller-Klasse). Dann habe ich die Einschränkungen, um es in die X-und Y-Achsen. Endlich, ich habe Breite und Höhe Einschränkungen, um es zum schweigen ein autolayout Fehler.
In meinem view controller ist startActivityIndicator Methode, habe ich die alpha der Aktivitätsanzeige auf und nennen die startAnimating-Methode auf. In meinem stopActivityIndicator Methode, ich nenne das stopAnimating-Methode auf und setzen Sie den alpha-Aktivität-Anzeige auf null zu stellen.