I have just changed my app from supporting iOS 8 and up to supporting iOS 9 and up.
Since I don't use storyboards to create my views, I was wondering if there's the "Use Safe Area Guides" option programmatically or something like that.
I've tried to anchor my view but they keep overlapping the top & bottom in the iPhone X simulator.
Try this in Objective-C and see:
UIView * myView = // initialize view using IBOutlet or programtically
myView.backgroundColor = [UIColor redColor];
myView.translatesAutoresizingMaskIntoConstraints = NO;
if (@available(iOS 11, *)) {
UILayoutGuide * guide = self.view.safeAreaLayoutGuide;
[myView.leadingAnchor constraintEqualToAnchor:guide.leadingAnchor].active = YES;
[myView.trailingAnchor constraintEqualToAnchor:guide.trailingAnchor].active = YES;
[myView.topAnchor constraintEqualToAnchor:guide.topAnchor].active = YES;
[myView.bottomAnchor constraintEqualToAnchor:guide.bottomAnchor].active = YES;
} else {
UILayoutGuide *margins = self.view.layoutMarginsGuide;
[myView.leadingAnchor constraintEqualToAnchor:margins.leadingAnchor].active = YES;
[myView.trailingAnchor constraintEqualToAnchor:margins.trailingAnchor].active = YES;
[myView.topAnchor constraintEqualToAnchor:self.topLayoutGuide.bottomAnchor].active = YES;
[myView.bottomAnchor constraintEqualToAnchor:self.bottomLayoutGuide.topAnchor].active = YES;
}
// Refresh myView and/or main view
[self.view layoutIfNeeded];
//[self.myView layoutIfNeeded];
Ref from: Use Safe Area Layout programmatically - Swift
Result: