I found the cause: this happens when separatorInset is explicitly set on either the table view or its cells.
With the default insets, separators respect the safe area. Setting separatorInset to .zero makes them extend to the table view’s edges, including underneath the side controls.
In my case, removing the explicit separator insets restored the expected behavior. This wasn’t an issue specific to UITableViewController.
Topic:
UI Frameworks
SubTopic:
UIKit
Tags: