Component Hosting View
So you've created a component and now need some way to render it on screen. If your use case involves using components inside a UICollectionView, you should be using CKCollectionViewDataSource. However, there are some cases where you want to render a component standalone. CKComponentHostingView was built for this purpose.
Setting the model
CKComponentHostingView provides a updateModel:mode: method that you can call to update the model for the hosting view. Similarly a secondary context object is also provided. Updating either model or context will trigger a re-generation of the component in the hosting view.
Size Range Provider
CKComponentHostingView requires a size range provider to be passed into the initializer. The size range provider is an object that responds to a single method (-sizeRangeForBoundingSize:) that calculates a constraining size for a given view bounding size.
Typically you'll want to use CKComponentFlexibleSizeRangeProvider, a class that conforms to CKComponentSizeRangeProviding and implements a set of common sizing behaviors where none, either, or both dimensions (width and height) can be constrained to the view's bounding dimensions.
Layout
To determine an appropriate size for a component hosting view, call -sizeThatFits: with the constraining size.
If an internal state change in the component causes its size to be invalidated, CKComponentHostingView calls its delegate method -componentHostingViewDidInvalidateSize: in order to notify the owner of the view that it should resize the view (the view will not resize itself).