Domanda

So che UicollectionViewDelegateFlowLayout è un protocollo mentre UicollectionViewFlowlayout è una classe, e conosco la differenza tra un protocollo e una classe. Dalla mia comprensione, posso avere una classe per seguire il protocollo di UicollectionViewDelegateFlowLayOut per ottenere lo stesso effetto esatto di avere una classe ereditata da UicollectionViewFlowLayOut. Raggiungo questa conclusione trovando tali relazioni tra il protocollo e la classe: UicollectionviewDelegateFlowlayout -------------- uicollectionViewFlowLoWAY RaccoltaVisualizza: Layout: SizefoRitematindexpath: ---- Elementi RaccoltaVisualizza: Layout: insetforsectionAtIndex: ---- Sezione Sezione - RaccoltaVisualizza: Layout: ReferencesIzeForHeaderInsection: - HeaderRefer Centrale - RaccoltaVisualizza: Layout: ReferencesIzeForFooterInsecuzione: - FooteoFeriencesze

Ho anche letto quanto segue nel riferimento del protocollo: "Tutti i metodi in questo protocollo sono facoltativi. Se non implementa un metodo particolare, il delegato della layout di flusso utilizza i valori nelle proprie proprietà per le informazioni di spaziatura appropriate" Quindi la mia comprensione è: se una collectionview ha una proprietà di layout e un delegateFlowlayout, il delegateFlowLayout può potenzialmente sovrascrivere qualcosa. In altre parole, posso avere entrambi e il protocollo prenderà priorità più alta. Giusto?

Allora, qual è la logica dietro inventando un protocollo e una classe che fanno la stessa cosa?

È stato utile?

Soluzione

La classe Layout di flusso è una sorta di layout di flusso "predefinito" che funziona in molti, se non la maggior parte delle circostanze. Se hai bisogno di qualcosa che UicollectionViewFlowLayout non può gestire, è possibile sottoclasse UicollectionViewLayout per fornire la funzionalità aggiunta.

I metodi delegati forniscono solo una personalizzazione limitata, tramite le chiamate Delegate, per il predefinito UicollectionViewFlowLayout.

Dai documenti ", il protocollo di UicollectionViewDelegateFlowlayout definisce i metodi che ti consentono di coordinarsi con un oggetto UICOLOLECEVISEFLOWLAYOUT per implementare un layout basato su griglia. I metodi di questo protocollo definiscono la dimensione degli articoli e la spaziatura tra gli elementi nella griglia". < / P >.

non fanno le stesse cose; Il protocollo è fornito per consentire di fare qualcosa di extra che il layout di flusso senza i metodi delegati non fa per impostazione predefinita. Il protocollo, in effetti, ti dà più "controllo". Non è necessario utilizzare i metodi Delegate se non ne hai bisogno.

Non c'è "priorità"; Il protocollo è facoltativo. Quindi, non si utilizza il protocollo se non si utilizza UicollectionViewFlowlayout.

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