This is what worked for me in iOS 12 :
I tried to set insetsContentViewsToSafeArea , but it did not work, although it set me on the right path. What fixed it for me was setting "Inset Content" in the nib / storyboard to "Never" (in the code, this is the property contentInsetAdjustmentBehavior ).
Explanation: It appears that for iPhoneX and above, the system automatically adds a bottom indent for table views, so that the content goes beyond the home indicator.
source share