I'm trying to setup a UICollectionViewLayout
programmatically. I'm using a UICollectionView
also without using storyboards, as well as settings its constraints.
I've followed Ray Wenderlich tutorial on the subject with some changes to adapt the code to Swift 3 (as AZCoder2 did https://github.com/AZCoder2/Pinterest).
Since all these examples uses storyboards, I've also introduced some changes to create the UICollectionView
and its UICollectionViewLayout
:
collectionViewLayout = PinterestLayout()
collectionViewLayout.delegate = self
collectionView = UICollectionView.init(frame: .zero, collectionViewLayout: collectionViewLayout)
The result: I can't see anything. If I change the UICollectionViewLayout
with the one that Apple provides (UICollectionViewFlowLayout
), at least I can see the cells with their content. If I implement some changes and use the storyboard, everything works great but it's not the way I want to accomplish this. The whole view is made programmatically and the collection view is a part of it.
What am I missing? Is it something to do with the way I instantiate the UICollectionViewLayout
? Do I have to register something (for example, as I need to register the reusable cell)?
How about you just create a variable that creates your flow layout for you like this
And then you can set it by calling the variable.
I think this will work.
It's possible to do what I was trying to do. Basically, follow the tutorials I suggested in my own question and setup the collection view and its view layout as follow:
Note that I'm using
DynamicCollectionView
(instead ofUICollectionView
). This class is not provided by Apple: I've made my own using the code provided in this post.Remember that this approach is when you're creating a view programmatically, using constraints. (May be it has another cases of use)