2016-01-18 12 views
6

In iOS 9, è presente un'opzione nell'ispettore Xcode SIZE denominata "Segue leggibile larghezza" che posizionerà il riempimento sui lati sinistro/destro di una vista in modo che vinca si estendono fino ad ora (soprattutto su iPad) per rendere più facile la lettura dei contenuti.iOS 9 - Xcode: "Segue la larghezza leggibile" a livello di programmazione

(potete vedere un esempio di questo su App Twitter, quando sono immessi nel paesaggio su iPhone 6/6s plus.)

Comunque, io non riesco a trovare il modo di fare questo livello di programmazione. Nell'ispettore Xcode SIZE, è solo una casella di controllo impostata. Ovviamente è un valore booleano che puoi impostare su qualsiasi UIView o su qualsiasi cosa che ne erediti. Non riesco proprio a trovare nulla di simile.

Chiunque ha programmato questo programma? Si prega di vedere lo screenshot allegato.

Oh, I può trovare "Preserve Superview Margins" correttamente, ma non la proprietà "Segue Readable Width".

enter image description here

+0

Si prega di consultare la mia risposta aggiornata. L'impostazione per codice è possibile, ma solo per UITableViews. –

+1

@ FrederikA.Winkelsdorf Bene, quella risposta aggiornata è sbagliata. Il 'readableContentGuide' può essere bloccato per qualsiasi vista. – matt

+0

@matt: Ci dispiace, ma è quello che ho scritto. "Se vuoi appuntare il tuo layout su di esso, crea un set di NSLayoutConstraints by Code e collegali ai" punti di ancoraggio readableContentGuide''' ". La domanda qui riguardava l'impostazione di questa particolare * proprietà * per codice. Fatto: la * proprietà * può essere impostata solo per un TableView. Per favore, prenditi il ​​tuo tempo e riconsidera il tuo voto negativo. Ciò che affermi in quella copertina è completamente incluso nella mia risposta. Scuotendo la testa ora. –

risposta

7

I "Follow Leggibile Larghezza" opzione è possibile impostare in Interface Builder viene gestito dal codice in due modi diversi:

1) UITableViews

C'è un proprietà per UITableView per attivare la larghezza leggibile:

if #available(iOS 9, *) { 
    tableView.cellLayoutMarginsFollowReadableWidth = false 
} 

Quindi questo è paragonabile alla gestione della conservazione dei margini di superview, che è fatto dal codice con preservesSuperviewLayoutMargins = true/false.

Dalla documentazione API per cellLayoutMarginsFollowReadableWidth:

Un valore booleano che indica se i margini di cella sono derivati ​​ dalla larghezza della guida contenuto leggibile.

Questa proprietà è l'equivalente all'opzione in Interface Builder.

2) UIViews

Purtroppo non c'è un'unica proprietà come sopra a disposizione del pubblico con l'API UIKit. Ma la citazione dai documenti API fornisce già un suggerimento:

Invece di una singola proprietà da attivare con true/false, ogni UIView fornisce una proprietà readableContentGuide. Questa proprietà fa parte della nuova classe UILayoutGuide (iOS 9 e versioni successive).

Per capire di cosa si tratta e come usarlo, diamo un'occhiata a ciò che il "Segui Leggibile Larghezza" opzione non: Se si attiva questa opzione in Interface Builder, un insieme di vincoli viene automaticamente aggiunto che vista.

Il readableContentGuide fornisce in pratica un set di questi punti di ancoraggio.

Se si desidera collegare il layout alla larghezza leggibile mediante codice, creare un gruppo di NSLayoutConstraints e collegarli ai punti di ancoraggio di readableContentGuide. Anche questo deve essere racchiuso in un blocco #available(iOS 9, *).

Aggiornato 04/21/16 Aggiunto informazioni UITableView cellLayoutMarginsFollowReadableWidth

Aggiornato 04/22/16 riformulato per rendere le cose chiare. Grazie a @matt per avermi fatto conoscere!

+0

Come possiamo usare readableContentGuide senza usare l'autolayout? Questa proprietà è disponibile come un semplice CGFloat? –

+0

@VaddadiKartick Non l'ho provato. Potresti provare ad accedere alla matrice delle guide di layout readableContentGuide. Ognuno di loro dovrebbe restituire un CGRect per la sua variabile layoutFrame. Vedi https://developer.apple.com/documentation/uikit/uiview/1622644-readablecontentguide, https://developer.apple.com/documentation/uikit/uilayoutguide e https://developer.apple.com/documentation/uikit/uilayoutguide/1619657-layoutframe. hth! –