2 views nebeneinander horizontal zentrieren mit Autolayout

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • 2 views nebeneinander horizontal zentrieren mit Autolayout

    ich hab ein Label (fix 100 breit) und ein Textfeld (fix 200 breit), die will ich im Code per autoLayout horizontal zentrieren.




    Quellcode

    1. // Constraints für das Label
    2. [self.usernameLabel.widthAnchor constraintEqualToConstant:100].active = YES;
    3. [self.usernameLabel.heightAnchor constraintEqualToConstant:30].active = YES;
    4. [self.usernameLabel.topAnchor constraintEqualToAnchor:self.header.bottomAnchor constant:20.0].active = YES;
    5. [self.usernameLabel.centerXAnchor constraintEqualToAnchor:superview.centerXAnchor].active = YES;
    6. // Constraints für das Textfeld
    7. [self.username.widthAnchor constraintEqualToConstant:200].active = YES;
    8. [self.username.heightAnchor constraintEqualToConstant:30.0].active = YES;
    9. [self.username.topAnchor constraintEqualToAnchor:self.header.bottomAnchor constant:20.0].active = YES;
    10. [self.username.leadingAnchor constraintEqualToAnchor:self.usernameLabel.trailingAnchor constant:5].active = YES;
    Alles anzeigen
    mit meinem Code wird das Label zentriert dargestellt und das Textfeld steht halt rechts daneben.
    Ich will aber, dass die beiden gemeinsam zentriert dargestellt werden .

    geht das überhaupt?
    Ich habe auch keine Loesung, aber ich bewundere das Problem!
    _____________________________________________________


    Hape42
  • hape42 schrieb:

    Ich will aber, dass die beiden gemeinsam zentriert dargestellt werden .
    Das mag jetzt etwas "hemdsärmelig" sein, aber so spontan fällt mir das ein - Vorsicht, freihändig runtergeschrieben:

    Quellcode

    1. CGFloat totalWidth = 200.0f + 30.0f + 5.0f;
    2. [self.usernameLabel.leadingAnchor constraintEqualToAnchor:superview.centerXAnchor constant:-totalWidth / 2.0f].active = YES;
    3. [self.username.trailingAnchor constraintEqualToAnchor:superview.centerXAnchor constant:totalWidth / 2.0f].active = YES;
    Dich zwingt ja keiner, immer gleiche Anker-Typen zu verwenden, ich würde eben Anfangs- und End-Position symmetrisch zur Mitte mit einem Offset positionieren, welcher der Hälfte der Gesamtbreite "Label + Abstand + Feld" entspricht...

    Grüße, Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • hape42 schrieb:

    so hatte ich es, bevor ich mich zu Autolayout entschlossen hatte.

    da hab ich dann wohl zu kompliziert gedacht :whistling:
    Naja, etwas "komplizierter", aber mehr Autolayout-like ginge auch: Du könntest ja eine "Container-View" erstellen, zu der Du Label und Feld hinzufügst und mit Abstand positionierst. Dann zentrierst Du diese Container-View in der Super-View. Finde ich bei zwei Objekten aber etwas Overkill...

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.