A content view inside a scrollview which manages a set of
connectable nodes with 0..N inputs and 0..N outputs.
Each node is a view, all drawing subelements are done by its root layer and sublayers. The node has an alpha transparency and shadow as can be seen in the image.
Elements to render with layers are:
Header with icons and captions, sockets, border etc.
A drag between input and output sockets will connect nodes.
While dragging, a curved connection line will appear.
When a drag is over a target socket, the socket will change its color
to indicate an accepted or rejected connection.
When drag is released, the connection line will stay, if accepted by socket.
Each node has a header and can contain 0..N subviews.
The subviews are NOT part of this project, you just have to ensure,
that the node can have dynamic size.
The node has dynamic size and can be resized by dragging above the outline.
The node can be folded/unfolded by clicking a header icon. In collapsed state
only the header will be visible.
The NodesView shows a grid, Nodes position and size can be aligned to the grid.
Platform and language
The code must be written in native Objective-C.
The views can be written as flipped NSView for OSX (prefered) or as UIView
for IOS. In any case the code should be smoothly portable to the other platform.
A test app with just the NodesView in a scrollview for OSX (prefered) or IOS.
Source uploaded to a private github repository.