App maken: ook jij kunt het leren!

 

de iOS Academie Forums

Forums - App-ontwikkeling - Swift en iOS: AutoLayout Portrait en Landscape

Bart  Op de eerste vier stappen van zijn/haar studiekaart scoort Bart 36%. Klokje23 feb 2015, 09:08
Avatar
Avatar
Berichten:17


Ik tracht de layout van mijn app wat aan te passen voor zowel een portrait als een landscape weergave.

Ik maak gebruik van AutoLayout. Alles is naar behoren ingesteld voor de portrait weergave. Alles staat op de plek zoals ik heb ingesteld met de nodige constrains. Dit alles is gemaakt voor de afmetingen width: Compact en height: Any.

Dus nu tracht ik de layout aan te passen voor een landscape weergave. In AutoLayout geef ik de opdracht om over te schakelen naar width: Any ; height: Compact. Ik plaats opnieuw al mijn objecten op een goede plaats. Weliswaar wijkt deze layout een beetje af van de portrait weergave maar dat is niet meer dan normaal.

Nochthans krijg ik niet alle elementen op de goede plek. In portrait mode heb ik een Image View staan, gecentreerd vanboven. Dit krijg ik niet voor elkaar in landscape mode. Telkens wijkt deze Image View iets af van de plek waar ik die wil.

Hoe doen jullie dit?

Reageer


AppChanger  Laurens heeft nog geen Studiekaart. Klokje23 feb 2015, 11:52
Avatar
Avatar
Berichten:301
Fans:13


Hallo Bart, 

Is het mogelijk om je project online te zetten? Dan kan ik eens kijken wat er fout gaat.

Met vriendelijke groeten,

Laurens

Reageer


Bart  Op de eerste vier stappen van zijn/haar studiekaart scoort Bart 36%. Klokje23 feb 2015, 11:56
Avatar
Avatar
Berichten:17


Ik maak gebruik van Size Classes maar om de één of andere manier zijn er objecten die telkens mee verplaatsen in diverse Size Classes.

Ik ga ervanuit dat wanneer ik een item goed zet in bijvoorbeeld de wCompact, hAny deze gewoon blijft staan in een andere Size Classe bv. wAny, hCompact. Die regel geldt voor de meeste items uitgezonderd enkelingen. Ik heb geen flauw idee hoe ik duidelijk moet maken dat ik zelf wel alle items goed plaats zodat ik mijn eigen layout kan maken voor portrait en landscape.

Reageer


AppChanger  Laurens heeft nog geen Studiekaart. Klokje23 feb 2015, 12:04
Avatar
Avatar
Berichten:301
Fans:13


Het is belangrijk dat je constrains goed staan, ik kan je niet zo uit het niets zeggen hoe je het oplost. Heb je al constrains toegevoegd?

Met vriendelijke groeten,

Laurens

Reageer


Bart  Op de eerste vier stappen van zijn/haar studiekaart scoort Bart 36%. Klokje23 feb 2015, 12:11
Avatar
Avatar
Berichten:17


AutoLayout en de nodige constrains lukt me wel. Maar deze keer wou ik een compleet andere layout maken tussen portrait en landscape. Maar blijkbaar blijven sommige items hardnekkig en hoe ik ze ook aanpas ze doen dit zowel voor portrait als landscape en dat is niet de bedoeling.

Heb het probleem (tijdelijk) opgelost door die items (meestal UIlabels, en UIimageView) uit te schakelen voor een bepaalde Size Class en dan een nieuwe toegevoegd. Maar ergens staat er volgens mij een instelling ofzo verkeerd waardoor ik die items niet echt afzonderlijke constrains kan geven voor een bepaalde Size Class.

Reageer


AppChanger  Laurens heeft nog geen Studiekaart. Klokje23 feb 2015, 12:16
Avatar
Avatar
Berichten:301
Fans:13


Bart,

Zo kan je het oplossen, dat is waar. Waarschijnlijk doe je toch iets mis. Indien je het toch wilt oplossen met constrains stuur dan je project op.

Met vriendelijke groeten,

Laurens

Reageer


Bart  Op de eerste vier stappen van zijn/haar studiekaart scoort Bart 36%. Klokje23 feb 2015, 16:50
Avatar
Avatar
Berichten:17


Wat me nog opvalt met AutoLayout is dat er verschillen zijn tussen Preview mogelijkheid in Xcode en de Simulator. 

De Preview werkt perfect met de nodige constrains die zijn opgegeven. Maar het uiteindelijk ziet het er weer compleet anders uit in de Simulator. :'(

Reageer


Bart  Op de eerste vier stappen van zijn/haar studiekaart scoort Bart 36%. Klokje24 feb 2015, 08:55
Avatar
Avatar
Berichten:17


Ik heb het probleem gevonden hoe het komt dat er bij de AutoLayout soms verschillen zijn tussen de Preview functie in Xcode en de Simulator.

Blijkbaar update de Preview functie niet altijd correct. Hierdoor worden sommigen objecten niet op de correcte plaats gezet zoals je hebt aangegeven met constrains.

De oplossing is om soms even de getoonde iPhone te kantelen in de Preview of even de getoonde iPhone te verwijderen en nadien met het '+' onderaan opnieuw toe te voegen. Door deze methode worden de objecten wel op de correcte plaats getoond.

Reageer


AppChanger  Laurens heeft nog geen Studiekaart. Klokje24 feb 2015, 20:17
Avatar
Avatar
Berichten:301
Fans:13


Super dat het opgelost is!

Reageer


Bart  Op de eerste vier stappen van zijn/haar studiekaart scoort Bart 36%. Klokje25 feb 2015, 19:29
Avatar
Avatar
Berichten:17


Mja ik blijf toch echt wel sukkelen met die AutoLayout.

Zelfs al neem ik een compleet nieuw Project en zet er een paar labels, buttons, enzovoort op. Dan werkt het nog steeds niet hoe ik het wens. Ik heb de trucs van AutoLayout wel onder de knie. Ik kan elementen laten schalen naar gelang de breedte, hoogte,... Soms maak ik deze procentueel kleiner of groter dan een ander element. Kortom die instellingen lukt me wel. Enkel die Size Classes :'(

AutoLayout en Size Classes staan aangevinkt. Ik start met een nieuw project en in de Size Class: wAny, hAny stel ik alles in hoe ik het wens. Later ga ik naar wCompact, hAny (iPhones staand) en maak indien nodig nog kleine aanpassingen. Nadien ga ik naar wAny, hCompact (iPhones liggend) en maak opnieuw de nodige aanpassingen MAAR terwijl ik deze aanpassingen verwezenlijkt merk ik dat sommige elementen in de Preview bij een staande iPhone ook meegaan?!

Als ik het project uitprobeer op een iPhone merk ik inderdaad op dat de elementen niet meer staan waar ik ze wens.

Het klopt toch hoe ik denk dat het moet werken, niet? Je werkt eerst in wAny, hAny en alle andere aanpassingen die je doet in een andere Size Class mogen toch geen effect hebben op de andere? Of zie ik dit verkeerd?

Reageer


Bart  Op de eerste vier stappen van zijn/haar studiekaart scoort Bart 36%. Klokje25 feb 2015, 20:30
Avatar
Avatar
Berichten:17


Hmm...dagen lig ik er al mee sukkelen. Net iets anders geprobeerd en nu werkt het. Als Size Classe: wCompact hRegular en wCompact, hCompact genomen. Er wordt dan ook gemeld: Final Values ipv Base Values.

Ik weet niet of ik dan echt wel de correct Size Classes gebruikt, maar nu werkt het wel net zoals ik het wens.

Gebruiken jullie ook deze Size Classes: wCompact hRegular en wCompact, hCompact om staand en liggend voor een iPhone?

Reageer


Admin Roelf  Klokje26 feb 2015, 08:48
Avatar


Bart,

Voor de zekerheid: de juiste size classes zijn:

iPhone 6 plus:

Staand: width compact, height regular
Liggend: width regular, height compact

Alle andere iPhones:

Staand: width compact, height regular
Liggend: width compact, height compact

iPad:

Staand én liggend: width regular, height regular

De huidige versie van Xcode is inderdaad een beetje wispelturig als het gaat om het 'previewen' van size classes.

Er staat overigens een uitgebreide video (mini-cursus) over Auto Layout en size classes op de planning!

 

Reageer

Goed advies! 2 personen vinden dit goed advies.