now call setNeedsLayout instead of calling layoutSubviews directly.