2016-03-26 12 views
5

Spesso trovo che uno UIStackView sia perfetto per un particolare layout, tranne per il fatto che ho bisogno di una spaziatura variabile tra i subviews ordinati. UIStackView utilizza la proprietà spacing per disporre le viste lungo il proprio asse, ma esiste un modo per sovrascriverle? Ad esempio, mi piacerebbe poter aggiungere un singolo vincolo manuale usando il formato visivo per definire gli spazi obbligatori e in qualche modo de-priorizzare quelli della vista stack.Ignora spaziatura per UIStackView

Ovviamente potrei rinunciare allo UIStackView, ma la capacità dello stack di restituire spazio tra i subview nascosti è piuttosto difficile da replicare manualmente (ad esempio, aggiungendo e rimuovendo i vincoli in base a quali viste sono nascoste). Ho anche provato a inserire singole visualizzazioni secondarie nelle proprie visualizzazioni di stack in modo da poter utilizzare lo stack layoutMargins per aggiungere un margine superiore. Ma questo richiede quindi la gestione dello stato nascosto del wrapper-stack oltre a quello della sottoview che contiene (a sorpresa - a me - un UIStackView il cui arrangedSubviews è tutto nascosto non viene automaticamente nascosto, quindi non restituisce la spaziatura e i margini indietro la sua superview).

+0

non la più bella, ma è possibile utilizzare una prolunga per aggiungere una serie di "spazi" che creano viste vuote: http://stackoverflow.com/questions/32999159/how-can-i-creare-uistackview-con-variabile spaziatura-tra-visualizzazioni – sdasdadas

risposta

1

Da iOS 11 è possibile utilizzare:

stackView.setCustomSpacing(spacing: CGFloat, after: UIView)