2012-05-06 11 views

risposta

115

Quando si imposta la maschera ridimensionamento automatico per una vista, utilizzare un bitwise OR inclusivo (|) (Objective-C), oppure un array (Swift 2, 3) per specificare molle e Struts.

  • Springs sono rappresentati specificando una maschera (rispettivamente Objective-C o Swift 3):

    • molla verticale: UIViewAutoresizingFlexibleHeight o .flexibleHeight

    • molla orizzontale: UIViewAutoresizingFlexibleWidth o .flexibleWidth

  • Struts sono rappresentati dalla mancanza di una delle quattro maschere 'margine flessibile' (ad es.se un puntone non esiste, viene specificata la maschera per tale margine):

    • UIViewAutoresizingFlexibleLeftMargin o .flexibleLeftMargin

    • UIViewAutoresizingFlexibleRightMargin o .flexibleRightMargin

    • UIViewAutoresizingFlexibleTopMargin o .flexibleTopMargin

    • UIViewAutoresizingFlexibleBottomMargin o .flexibleBottomMargin

Ad esempio, una vista con molla e superiore e inferiore traversi orizzontali avrebbe la larghezza e margini sinistro e destro specificati come flessibile:

Swift 3

mySubview.autoresizingMask = [.flexibleWidth, .flexibleLeftMargin, .flexibleRightMargin] 

Swift 2

mySubview.autoresizingMask = [.FlexibleWidth, .FlexibleLeftMargin, .FlexibleRightMargin] 

Swift 1,2

mySubview.autoresizingMask = .FlexibleWidth | .FlexibleLeftMargin | .FlexibleRightMargin 

Objective-C

mySubview.autoresizingMask = (UIViewAutoresizingFlexibleWidth |  
           UIViewAutoresizingFlexibleLeftMargin | 
           UIViewAutoresizingFlexibleRightMargin); 

enter image description here

+3

@Flink - la modifica è sbagliato. Ho ripristinato la mia risposta allo stato originale. Per favore leggilo attentamente, specialmente questo: "Gli struts sono rappresentati dalla mancanza di una delle quattro maschere 'margin margin' (cioè se un puntone NON esiste, viene specificata la maschera per quel margine):" – MattyG

+0

Mi dispiace, il mio fallimento. .. – Shmidt

+0

molto utile, grazie – kukudas

8

UIViewAutoResizingMasks sono quelli che chiamiamo "montanti" e "molle". Considera questo: hai una grande piazza con un piccolo quadrato all'interno. Affinché quel quadrato rimanga perfettamente centrato, è necessario impostare una larghezza fissa da ciascun bordo interno del quadrato grande, in modo da vincolarlo. Questi sono puntoni.

Le molle, d'altra parte, funzionano più come un UIView durante la rotazione. Diciamo che la nostra vista deve rimanere nella parte inferiore dello schermo, allineata al centro (molto simile a un UIToolbar). Vogliamo mantenere la sua Molla superiore flessibile in modo che quando la vista ruota da 460 px a 320 px, mantenga la sua posizione rispetto alle dimensioni ora modificate dello schermo. Evidenziare una di quelle molle in IB equivale a impostare l'UIViewAutoResizingMask appropriato e mettere in risalto la molla superiore in modo specifico è come chiamare myView.autoResizingMask = UIViewAutoresizingFlexibleTopMargin.

I valori possono essere utilizzati in tandem racchiudendoli in un paio di parentesi e utilizzando una o operatore come myView.autoResizingMask = (UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleLeftMargin)

Le maschere stanno segnalando i numeri a voi perché sono una typdef di un NSUInteger e questi sono le bandiere che la mela li ha assegnati. Cmd + clic su uno per vedere la sua definizione del metodo.