UICollectionView Benutzerdefinierte Zelle zum Füllen der Breite in Swift
Ich habe versucht, die Figur-aus, wie kann ich die Zelle füllen Sie die Breite, wie Sie im Bild sehen können, die Breite zwischen den Zellen ist zu groß. ich bin mit benutzerdefinierten Zelle mit nur einer Bildansicht.
Habe ich versucht, um es aus dem storyboard, aber ich denke, es gibt keine option, oder sollte es programmgesteuert ausgeführt werden.
meine UICollectionViewController :
@IBOutlet var collectionView2: UICollectionView!
let recipeImages = ["angry_birds_cake", "creme_brelee", "egg_benedict", "full_breakfast", "green_tea", "ham_and_cheese_panini", "ham_and_egg_sandwich", "hamburger", "instant_noodle_with_egg.jpg", "japanese_noodle_with_pork", "mushroom_risotto", "noodle_with_bbq_pork", "starbucks_coffee", "thai_shrimp_cake", "vegetable_curry", "white_chocolate_donut"]
override func viewDidLoad() {
super.viewDidLoad()
//Uncomment the following line to preserve selection between presentations
//self.clearsSelectionOnViewWillAppear = false
//Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
//Dispose of any resources that can be recreated.
}
override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
//#warning Incomplete method implementation -- Return the number of sections
return 1
}
override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
//#warning Incomplete method implementation -- Return the number of items in the section
return recipeImages.count
}
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! RecipeCollectionViewCell
//Configure the cell
cell.recipeImageView.image = UIImage(named: recipeImages[indexPath.row])
return cell
}
InformationsquelleAutor der Frage AaoIi | 2015-05-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie dies tun, programmatisch.
Implementieren
UICollectionViewDelegateFlowLayout
im view-controller und die Größe incollectionView:layout:sizeForItemAtIndexPath:
Werden Sie auch nennen wollen
collectionView.collectionViewLayout.invalidateLayout()
innen Ihre view-controller -viewWillLayoutSubviews()
so, dass wenn die main view Abmessungen ändern ("rotation", für Beispiel), die Auflistung anzeigen ist neu verlegt.Swift 4 Update
InformationsquelleAutor der Antwort Matt Quiros
Innen Ihre view-controller überschreiben
viewDidLayoutSubviews
Methode(
collectionView
Eigenschaft ist Ihre collectionView)InformationsquelleAutor der Antwort mustafa
Verwenden Sie Folgenden code für die Breite des
UICollectionViewCell
.InformationsquelleAutor der Antwort Nimit Parekh
Auch in Swift 3,
Stellen Sie sicher, dass Ihr view-controller erfüllt die Anforderungen der folgenden:
UICollectionViewDelegate,
UICollectionViewDataSource,
UICollectionViewDelegateFlowLayout
InformationsquelleAutor der Antwort brycejl
Swift 3
Wenn Sie swift 3, verwenden Sie diese Methode:
Die Veränderungen bemerken:
_
vorcollectionView
in den Namen der Methode,NSIndexPath
änderungenIndexPath
InformationsquelleAutor der Antwort JPetric
Programmgesteuert festlegen der
itemSize
zu[UIScreen mainScreen].bounds.size.width/3
InformationsquelleAutor der Antwort rounak
In meinem Fall, unter der Annahme, dass jede Zelle hat eine Breite von 155 und einer Höhe von 220. Wenn ich zeigen will 2 Zellen pro Zeile in einem Porträt-Modus und 3 für die Landschaft.
InformationsquelleAutor der Antwort Eduardo Irias
Die beste Lösung ist die änderung der
itemSize
IhrerUICollectionViewFlowLayout
imviewDidLayoutSubviews
. Das ist, wo können Sie die genaue Größe derUICollectionView
. Sie nicht brauchen, um invalidate aufrufen, die auf Ihrem layout, das erledigen wir für Sie bereits.InformationsquelleAutor der Antwort ZaBlanc
Ich habe die gleiche Anforderung, in meinem Fall Balg Lösung gearbeitet wird. Ich UIImageView top, left, bottom und right-Beschränkungen zu 0 innen UICollectionviewCell
InformationsquelleAutor der Antwort Raju Abe
Für meinen Fall, wollte ich, um zwei Spalten und 3 Zeilen in der UICollectionView
Fügte ich UICollectionViewDelegateFlowLayout delegieren zu meiner Klasse
dann habe ich überschreiben sizeForItemAt indexPath
Den 30 ist der Zeilenabstand, die 20 ist die insent zwischen den Zellen
InformationsquelleAutor der Antwort F.sh