Domanda

Ho lavorato su un ridimensionamento automatico UIView personalizzato e Apple ha ben poco da dire su questo. Cosa c'è di più, in base a SO di feedback, la documentazione di Apple è in realtà sbagliato in alcune aree. Infine, anche se ci sono sei componenti di ridimensionamento in Interface Builder e sei per setAutoresizingMask: non sembrano correlare a tutti. Ad esempio, impostando la molla larghezza in IB ha un effetto diverso da impostando il autoresizingMask di UIViewAutoresizingFlexibleWidth durante la rotazione del dispositivo.

Ci sono buone risorse per imparare come il ridimensionamento delle opere su iPhone?

Modifica

ho capito i concetti di base di Apple usi come contentMode, e ho letto attraverso la documentazione UIView. Sto cercando qualcosa che spiega un po 'più a fondo quali sono le impostazioni IB fare in termini di ciò che è disponibile nel SDK di programmazione.

È stato utile?

Soluzione

impostando il autoresizingMask a UIViewAutoresizingFlexibleWidth, equivale a impostare la molla larghezza, oltre sia a sinistra che puntoni giuste Interface Builder (puntoni significano che il bordo è non flessibile). Se si voleva replicare il comportamento di impostare solo la primavera di larghezza, ma non i montanti sinistro e destro, si dovrebbe impostare autoresizingMask a UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin

Altri suggerimenti

Ho trovato questo post utile per capire iOS il ridimensionamento automatico.

http://www.techotopia.com/index.php/IOS_4_iPhone_Rotation,_View_Resizing_and_Layout_Handling

da Apple:

  

... specificare il valore di questa maschera combinando le costanti descritte in   UIViewAutoresizing utilizzando l'operatore OR C. La combinazione di questi   costanti consente di specificare quali dimensioni della vista devono crescere o   ridursi rispetto al superview. Il valore predefinito di questa proprietà   è UIViewAutoresizingNone, che indica che la vista non dovrebbe essere   ridimensionata a tutti.

     

... Per esempio,   supponiamo che questa proprietà comprende l'UIViewAutoresizingFlexibleWidth e   UIViewAutoresizingFlexibleRightMargin costanti ma non include   la costante UIViewAutoresizingFlexibleLeftMargin, indicando così   che il larghezza del margine sinistro della vista è fisso ma che la vista della   margine larghezza e destra può cambiare. Così, la vista appare ancorato   il lato sinistro del suo superview mentre sia la larghezza vista e il divario   alla destra dell'aumento di vista.

     

Se i comportamenti ridimensionamento automatico non offrono il layout preciso che si   necessità di vostri punti di vista, è possibile utilizzare una vista contenitore personalizzato e di override   il suo metodo layoutSubviews per posizionare i vostri subviews più preciso.

Quindi, se si desidera posizionare una vista ancorata al lato superiore e destro del suo superview, si potrebbe applicare una maschera del tipo:

[myView setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleBottomMargin];

superview ha tali parametri come contentMode e autoresizesSubviews , wich tutto con autoresizingMask dei suoi subviews rende ridimensionamento comportamento

http: // developer.apple.com/library/ios/#documentation/uikit/reference/UIView_Class/UIView/UIView.html

Per la cronaca, ho graffiato la mia testa per un'ora perché la mia sola riga UILabel solo sarebbe non auto-regolare la dimensione del carattere per adattarsi larghezza. Infine, questo ha fatto il trucco:

label.contentMode = UIViewContentModeScaleAspectFit;

Ho cercato su google e nessuno sembra per chiarire questo dettaglio (tutti ti dice l'etichetta deve essere 1 riga, impostare adjustsFontSizeToFitWidth / minimumFontSize etc.). Forse il valore predefinito di questa proprietà è cambiato? Sono su iOS 4.3.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top