2016-08-26 9 views
6

Posiadam kody uicollectionview z CustomCollectionViewLayout, a wewnątrz mam a lot of small cells, ale użytkownik nie może ich zobaczyć bez zoom. Również wszystkie komórki można wybierać.Sposób powiększania UICollectionView

Chcę dodać mój widok kolekcji wewnątrz funkcji powiększenia!

Moje przejrzyste kody poniżej.

class CustomCollectionViewController: UICollectionViewController { 

    var items = [Item]() 


    override func viewDidLoad() { 
     super.viewDidLoad() 


     customCollectionViewLayout.delegate = self 

     getDataFromServer() 

} 

func getDataFromServer() { 

     HttpManager.getRequest(url, parameter: .None) { [weak self] (responseData, errorMessage) ->() in 

      guard let strongSelf = self else { return } 

      guard let responseData = responseData else { 
       print("Get request error \(errorMessage)") 
       return 
      } 

      guard let customCollectionViewLayout = strongSelf.collectionView?.collectionViewLayout as? CustomCollectionViewLayout else { return } 

      strongSelf.items = responseData 
      customCollectionViewLayout.dataSourceDidUpdate = true 

      NSOperationQueue.mainQueue().addOperationWithBlock({() -> Void in 
       strongSelf.collectionView!.reloadData() 
      }) 
     } 
    } 
} 

extension CustomCollectionViewController { 

    override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int { 
     return items.count 
    } 

    override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
     return items[section].services.count + 1 
    } 

    override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
     let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! CustomCollectionViewCell 


      cell.label.text = items[indexPath.section].base 


     return cell 

} 

    override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath cellForItemAtIndexPath: NSIndexPath) { 

    print(items[cellForItemAtIndexPath.section].base) 


} 

} 

Również moi UICollectionView właściwości układu poniżej poniżej można zobaczyć tam Wybrałem maxZoom 4 ale doesnt mają żadnego działania!

enter image description here

Dziękujemy!

+0

To pytanie może być pomocne: [Make collectionview zoomable] (http://stackoverflow.com/questions/13485617/make-uicollectionview-zoomable) – jojoT

+0

@jojoT ty ale ta próbka obj-c i robienie szczypta zoomu każdy element i chcesz, aby zoom był szybki i obszarowy nie każdy element prosty zoom – SwiftDeveloper

+0

to użytkownik dotyka widoku kolekcji, to komórka otrzyma powiększenie? Czy chodzi Ci o to, że po dotknięciu cały widok kolekcji został zamazany i dotknięta komórka wyświetliła się tylko pośrodku ekranu na widocznej szerokości i wysokości? –

Odpowiedz

1

Nie powiększasz kolekcji tak, jakbyś powiększała prosty widok przewijania. Zamiast tego powinieneś dodać gest uszczypnięcia (lub jakiś inny mechanizm powiększania) i użyć go do zmiany układu, aby Twoja siatka wyświetlała inną liczbę elementów w widocznej części kolekcji. Zasadniczo zmienia to liczbę kolumn, a tym samym wielkość elementu (rozmiar komórki). Po zaktualizowaniu układu kolekcja może animować różne rozmiary, ale jest bardzo mało prawdopodobne, że chcesz uzyskać płynne powiększanie, a następnie przejść bezpośrednio z kolumny N do kolumny N-1.

+0

dziękuję ale wiem, że. Chcę zintegrować mój UICollectionView w prostym ZOOMie, gdy kliknięcie wewnątrz zostanie powiększone. I potrzebuję kodów, które nie potrzebują pomysłów :) – SwiftDeveloper

1

myślę co pytasz o wygląd, jak co się robi w filmie WWDC1012 pt Wyświetleń zaawansowane Collection i budowanie niestandardowych układów (demo zaczyna się o 20:20) https://www.youtube.com/watch?v=8vB2TMS2uhE

Zasadniczo trzeba dodać pinchGesture do ciebie UICollectionView, a następnie przekazać właściwości szczypta (skala, centrum) do UICollectionViewLayout (która jest podklasą UICollectionViewFlowLayout), twój układ następnie wykona transformacje potrzebne do powiększenia żądanej komórki.

+0

Obserwowałem wcześniej, ale nie naprawiaj mojego pytania – SwiftDeveloper