ReactiveCocoaLayout
ReactiveCocoaLayout copied to clipboard
Equally Space Views
What's the easiest way to equally space views with RCL? Would I just align each view’s left side to the previous view’s right side?
You'd have to follow the same general algorithm that manual layout would use. Roughly:
- Divide the available space by the number of views (and spacers) you have.
- Assign each view to one of those spaces.
We should add an operator for this, but it'll basically just do that same thing.
I recently had to do something similar using RCL, and this is how I did it:
- Create an initial signal that contains the origin of the point at which you want to begin laying out the views
- Loop through the views you want to space and create a new origin signal for each one that uses operators on the initial signal to offset the origin by x points in whatever direction(s) (using
-moveRight:
etc). - Use
RACSignal +rectsWithOrigin:size:
to create aCGRect
signal using your modified origin signal and a signal that sends a variable or constant size for the view and bind that to thercl_frame
.
Another approach like you mentioned is to have each iteration create a signal that's dependent on the preview's view's signal, offsetting it by a constant amount instead of having to use the view index to calculate the offset for that particular space. Hope this helps!