Buttons via Code positionieren/sizen Probleme bei mehrmaliger Rotation

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

  • Buttons via Code positionieren/sizen Probleme bei mehrmaliger Rotation

    Hey Leute,

    und zwar versuche ich gerade meinen MainScreen zu formatieren ohne AutoLayout zu nutzen. Ich habe dort vier Buttons und ein Image. Die Buttons sollen je nach Orientation unterschiedlich positioniert werden.
    Es funktioniert soweit alles auch gut bzw. sieht alles gut aus. Mein Problem tritt erst auf wenn ich den Bildschirm mehrmals rotiere, d.h. beim zweiten Wechsel zw. Portrait und Landscape.

    Portait:
    OQmyF.png

    Beim ersten Wechsel zu Landscape:
    1uIDA.png

    Jetzt bei weiteren Wechsel in den Landscape Modus, in der Portrait-Orientation alles weiterhin wunderbar:
    3Z2Uh.png


    Mein Code:

    Quellcode

    1. -(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    2. if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) {
    3. [logo setHidden:YES];
    4. [start setFrame:CGRectMake(0, 150, 528, 100)];
    5. [impressum setFrame:CGRectMake(0, 500, 528, 50)];
    6. [uebungen setFrame:CGRectMake(5, 370, 250, 50)];
    7. [verlauf setFrame:CGRectMake(65, 370, 250, 50)];
    8. } else {
    9. [logo setHidden:NO];
    10. [start setFrame:CGRectMake(150, 115, 280, 135)];
    11. [impressum setFrame:CGRectMake(150, 245, 280, 65)];
    12. [uebungen setFrame:CGRectMake(50, 209, 135, 65)];
    13. [verlauf setFrame:CGRectMake(390, 209, 135, 65)];
    14. }
    15. }
    Alles anzeigen



    Wenn ich den Else-Fall auskommentiere sieht das ganze im Portrait-Orientation schlecht bzw. unformatiert aus, allerdings tritt dann mein Fehler nicht mehr auf.
  • macmoonshine schrieb:

    basti12354 schrieb:

    und zwar versuche ich gerade meinen MainScreen zu formatieren ohne AutoLayout zu nutzen.

    Warum machst Du so etwas? Autosizing sollte das Mindeste sein.

    Auf dem iPhone 6 oder Splitscreens (munkel, munkel) bekommst Du mit Deinen festen Werten aber schwer in die Bredouille.


    Habe das mit dem Autosizing ewig versucht aber nicht hinbekommen, wie müsste ich denn in meinem Fall in etwa die Haken setzen (Habt ihr ein gutes Tutorial, habe leider hier nichts passendes gefunden, nur Sachen zu Autolayout)
    Mein größtes Problem waren eigtl. die Abstände, d.h. im Landscape hatte mein "Start"-Button nicht oben begonnen, sondern es war immer ein gewisser Abstand vorhanden, den ich nicht wegbekommen habe.

    VIelen Dank schonmal für die Hilfe, ich komme aus der Android-Entwicklung, wo alles über XML-Files läuft und habe daher hier noch meine Probleme.
  • welche haken?

    du erstellst constraints. sagst also welche abstände, höhen etc statisch sein sollen, wie elemente zueinander vergrößert werden sollen etc.
    ich hab gehört es soll direkt vom hersteller sowas wie eine bebilderte doku geben ;) natüürlich gibts auch jede menge auf youtube in form von videos dazu...
  • Ich nutze einige Views mit ScrollView und unterschiedlich vielen Bildern in versch. Auflösungen und es gab mit AutoLayout keine passable Lösung für mich (sah alles nicht so perfekt aus, wie ich es haben wollte)


    Zurück zum Autolayout:

    iOS Simulator Bildschirmfoto 06.08.2014 23.30.08.png

    Wie bekomme ich hier noch die Abstände zwischen den Buttons hin? Wie schaffe ich es das der Start-Button ganz oben unter der Navi-Bar ist und dann darunter die anderen beiden.
  • basti12354 schrieb:

    Ich nutze einige Views mit ScrollView und unterschiedlich vielen Bildern in versch. Auflösungen und es gab mit AutoLayout keine passable Lösung für mich (sah alles nicht so perfekt aus, wie ich es haben wollte)


    Zurück zum Autolayout:

    iOS Simulator Bildschirmfoto 06.08.2014 23.30.08.png

    Wie bekomme ich hier noch die Abstände zwischen den Buttons hin? Wie schaffe ich es das der Start-Button ganz oben unter der Navi-Bar ist und dann darunter die anderen beiden.


    abstand oben fixieren, höhe fixieren, links und rechts fixieren. schon bleibt er immer oben und gleich hoch, verändert sich aber in der breite. so gets mit allen anderen weiter.
  • gritsch schrieb:

    basti12354 schrieb:

    Ich nutze einige Views mit ScrollView und unterschiedlich vielen Bildern in versch. Auflösungen und es gab mit AutoLayout keine passable Lösung für mich (sah alles nicht so perfekt aus, wie ich es haben wollte)


    Zurück zum Autolayout:

    iOS Simulator Bildschirmfoto 06.08.2014 23.30.08.png

    Wie bekomme ich hier noch die Abstände zwischen den Buttons hin? Wie schaffe ich es das der Start-Button ganz oben unter der Navi-Bar ist und dann darunter die anderen beiden.


    abstand oben fixieren, höhe fixieren, links und rechts fixieren. schon bleibt er immer oben und gleich hoch, verändert sich aber in der breite. so gets mit allen anderen weiter.


    Wie kann ich ohne AutoLayout Abstände angeben bzw. wo geht das?
    Vielen Dank für deine Hilfe und Geduld ;)
  • basti12354 schrieb:

    gritsch schrieb:

    basti12354 schrieb:

    Ich nutze einige Views mit ScrollView und unterschiedlich vielen Bildern in versch. Auflösungen und es gab mit AutoLayout keine passable Lösung für mich (sah alles nicht so perfekt aus, wie ich es haben wollte)


    Zurück zum Autolayout:

    iOS Simulator Bildschirmfoto 06.08.2014 23.30.08.png

    Wie bekomme ich hier noch die Abstände zwischen den Buttons hin? Wie schaffe ich es das der Start-Button ganz oben unter der Navi-Bar ist und dann darunter die anderen beiden.


    abstand oben fixieren, höhe fixieren, links und rechts fixieren. schon bleibt er immer oben und gleich hoch, verändert sich aber in der breite. so gets mit allen anderen weiter.


    Wie kann ich ohne AutoLayout Abstände angeben bzw. wo geht das?
    Vielen Dank für deine Hilfe und Geduld ;)
    durchgängige linie. bei breite und abstand unten gekringelte linie.
  • gritsch schrieb:

    basti12354 schrieb:

    gritsch schrieb:

    basti12354 schrieb:

    Ich nutze einige Views mit ScrollView und unterschiedlich vielen Bildern in versch. Auflösungen und es gab mit AutoLayout keine passable Lösung für mich (sah alles nicht so perfekt aus, wie ich es haben wollte)


    Zurück zum Autolayout:

    iOS Simulator Bildschirmfoto 06.08.2014 23.30.08.png

    Wie bekomme ich hier noch die Abstände zwischen den Buttons hin? Wie schaffe ich es das der Start-Button ganz oben unter der Navi-Bar ist und dann darunter die anderen beiden.


    abstand oben fixieren, höhe fixieren, links und rechts fixieren. schon bleibt er immer oben und gleich hoch, verändert sich aber in der breite. so gets mit allen anderen weiter.


    Wie kann ich ohne AutoLayout Abstände angeben bzw. wo geht das?
    Vielen Dank für deine Hilfe und Geduld ;)
    durchgängige linie. bei breite und abstand unten gekringelte linie.


    Jetzt muss ich nochmals ganz blöd fragen: Ich befinde mich im IB wähle meinen gewünschten Button an und dann?
  • basti12354 schrieb:

    gritsch schrieb:

    basti12354 schrieb:

    gritsch schrieb:

    basti12354 schrieb:

    Ich nutze einige Views mit ScrollView und unterschiedlich vielen Bildern in versch. Auflösungen und es gab mit AutoLayout keine passable Lösung für mich (sah alles nicht so perfekt aus, wie ich es haben wollte)


    Zurück zum Autolayout:

    iOS Simulator Bildschirmfoto 06.08.2014 23.30.08.png

    Wie bekomme ich hier noch die Abstände zwischen den Buttons hin? Wie schaffe ich es das der Start-Button ganz oben unter der Navi-Bar ist und dann darunter die anderen beiden.


    abstand oben fixieren, höhe fixieren, links und rechts fixieren. schon bleibt er immer oben und gleich hoch, verändert sich aber in der breite. so gets mit allen anderen weiter.


    Wie kann ich ohne AutoLayout Abstände angeben bzw. wo geht das?
    Vielen Dank für deine Hilfe und Geduld ;)
    durchgängige linie. bei breite und abstand unten gekringelte linie.


    Jetzt muss ich nochmals ganz blöd fragen: Ich befinde mich im IB wähle meinen gewünschten Button an und dann?


    du bekommst das nur mit autolayout hin dass unten die zwei buttons sich gleichmäßig resizen.
    warum kein autolayout?
  • gritsch schrieb:

    basti12354 schrieb:

    gritsch schrieb:

    basti12354 schrieb:

    gritsch schrieb:

    basti12354 schrieb:

    Ich nutze einige Views mit ScrollView und unterschiedlich vielen Bildern in versch. Auflösungen und es gab mit AutoLayout keine passable Lösung für mich (sah alles nicht so perfekt aus, wie ich es haben wollte)


    Zurück zum Autolayout:

    iOS Simulator Bildschirmfoto 06.08.2014 23.30.08.png

    Wie bekomme ich hier noch die Abstände zwischen den Buttons hin? Wie schaffe ich es das der Start-Button ganz oben unter der Navi-Bar ist und dann darunter die anderen beiden.


    abstand oben fixieren, höhe fixieren, links und rechts fixieren. schon bleibt er immer oben und gleich hoch, verändert sich aber in der breite. so gets mit allen anderen weiter.


    Wie kann ich ohne AutoLayout Abstände angeben bzw. wo geht das?
    Vielen Dank für deine Hilfe und Geduld ;)
    durchgängige linie. bei breite und abstand unten gekringelte linie.


    Jetzt muss ich nochmals ganz blöd fragen: Ich befinde mich im IB wähle meinen gewünschten Button an und dann?


    du bekommst das nur mit autolayout hin dass unten die zwei buttons sich gleichmäßig resizen.
    warum kein autolayout?


    Gibt mehrere Gründe: Wichtigster zuerst App ist fertig bis auf diesen Screen
    2. Ich halte dieses Autolayout für eigtl. eine gute Sache, mir ist es noch zu wenig ausgereift, es dauert ewig, tausende Abstände für einfachste Views. Das hat für mich nichts einfacher, bedienungsfreundlicher Entwicklung zu tun. (Habe mich zwar nur zwei, drei Tage damit herum geärgert, aber dies hat mir gereicht)


    Das mit dem Abstand wäre mir in diesem Fall jetzt egal, die einzige Sache die ich immer noch nicht hinbekomme ist den blauen Button im Landscape nach oben, direkt unter die Navigation-Bar zu bekommen.