UIScrollView.contentInset is conceptually a very simple API: it extends the scrollable range beyond that implied by the
contentSize property. (The objc.io magazine has a great article on
UIScrollView that explains
contentInset in terms of simple arithmetic.) Its two main use cases are avoiding the keyboard and correctly underlapping iOS 7+’s translucent bars. But if you want to get more complicated than a navbar and a keyboard, the simple nature of
contentInset makes things difficult.