Dat noem ik een workaround waarbij de developer gewoon 3x een UI moet bouwen die nog steeds niet schaalt bij toekomsige telefoons.
Dat vind ik een vreemde stelling, er is namelijk geen alternatief. Als je je applicaties optimaal gebruik wilt laten maken van (sterk) verschillende resoluties _en_ schermoppervlak, dan moet je sowieso verschillende versies maken, en aanpassen aan de mogelijkheden van elk apparaat. Dus split-views en pop-overs op de iPad, en navigation controllers op de iPhone. Volledig automatisch opschalen en de layout automatisch optimaliseren voor elke schermresolutie is onmogelijk, probeer het anders maar eens met een Windows of OS X programma, bijna geen enkel programma dat er nog goed uitziet met een venster van 320x480, en heel erg veel applicaties die bergen schermruimte verspillen met 'lege pixels' als je ze mega groot maakt. Het mooie van iOS is dat je de views van je applicatie in de UI builder kunt maken (grafisch dus) en je resources op 2x resolutie kunt opslaan, en dan praktisch nul extra code hoeft te schrijven om de versie te kiezen die optimaal is voor het apparaat waar je op draait. De view controller is namelijk onafhankelijk, en de view zelf kun je met een simpele classname swappen wanneer je bij het opstarten van je app weet wat de resolutie is. Voor de iPad zal je extra werk moeten doen omdat de navigatie van iPad apps vaak veel handiger kan dan op de iPhone, waardoor je (stukken van) je view controllers zult willen aanpassen, maar als je je applicatie slim opzet (en iOS dwingt je bijna om dat te doen door de manier waarop UIKit werkt), dan zijn zowel de duplicatie als de uitzonderingen in de code vrij minimaal.
Het feit dat iOS niet schaalt maakt het gebruik van deze oplossing noodzakelijk
Dat is dus niet waar, iOS schaalt volledig automatisch tussen de iPhone resoluties (wat ook niet zo moeilijk is omdat de schermverhoudingen en de afmetingen van het scherm hetzelfde zijn) door fonts en UI elementen op dubbele resolutie te renderen en layout afstanden te verdubbelen (dit is dus niet hetzelfde als de 2x mode op de iPad!!). Wil je een applicatie die op iPhone en iPad werkt, dan zal je zelf nog iets extra moeten doen in de vorm van aangepaste views, maar als je tevreden bent met slechts een nettere layout zonder iPad-specifieke controls, dan is dat dus een klusje van 2 minuten per scherm in UI builder: copy/paste de high-res versie en pas alle sizes aan naar iPad formaat, er zit zelfs een functie voor in het XCode menu die het automatisch doet, en dan hoef je alleen nog maar even te controleren of alles naar wens is. Wil je daadwerkelijk gebruik maken van de extra iPad controls dan is er geen andere mogelijkheid dan 2 versies van je UI maken, daar is gewoon geen automatisch alternatief voor te verzinnen op geen enkel mobiel OS. Maar zoals gezegd kan je zelfs dan de hoeveelheid extra werk minimaal houden als je je applicatie netjes hebt opgezet.
Dat noem ik een workaround waarbij de developer gewoon 3x een UI moet bouwen die nog steeds niet schaalt bij toekomsige telefoons.
Zoals gezegd is daar wat mij betreft geen automatische oplossing voor, en bovendien is het een erg hypothetisch probleem. Van iPhone <-> iPad wil je sowieso dus aangepaste versies van je applicatie maken (vanwege het schermoppervlak), en tussen iPhones zijn nu maar 2 mogelijke resoluties, precies 2x zo groot bij de iPhone 4, en dat zal gegarandeerd nog heel lang zo blijven. Ze zijn bij Apple natuurlijk niet op hun achterhoofd gevallen, toen de 3GS uitkwam klaagden heel erg veel mensen dat de resolutie hetzelfde was gebleven (vrij laag dus), maar bij de iPhone 4 was het ineens exact verdubbeld waarmee het zo ongeveer het scherm met de hoogst mogelijke resolutie voor een mobiele telefoon was. Dat is natuurlijk geen toeval, toen de 3GS er net was konden zulke schermen simpelweg nog niet goedkoop genoeg gebruikt worden, en een resolutie tussen die van de 3G en de 4 in wilde Apple dus niet, precies om de problemen die jij beschrijft. Vandaar exact 2x de resolutie van de 3GS waardoor automatisch schalen heel eenvoudig blijft. Reken er maar op dat ze dit zo blijven doen, en dat de iPhones/iPod touches nog minimaal een jaar of wat op 960x640 blijven (en waarschijnlijk altijd zo blijven, hoger heeft geen zin namelijk), en dat de eerste schermupdate van de iPad naar 2048x1536 gaat, of dat de hele iPad zelf kleiner wordt en dezelfdfe resolutie houdt.
[Reactie gewijzigd door johnbetonschaar op 8 augustus 2024 17:36]