Actually the documentation is pretty clear about this:
setNeedsLayout will layout subviews
Call this method on your application’s main thread when you want to adjust the layout of a view’s subviews.
setNeedsDisplay will call for a redraw of your view (
drawRect:
, etc).You can use this method or the setNeedsDisplayInRect: to notify the system that your view’s contents need to be redrawn.