mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Fix use of safeAreaInsets for old versions of iOS
Summary: This would cause a crash on iOS 9.3 because this method does not exist on UIView on that platform. By wrapping it in an availability check, we provide some safety. Changelog: [iOS] [Fixed] safeAreaInsets call would crash on older versions of iOS Reviewed By: fkgozali Differential Revision: D18118025 fbshipit-source-id: fb7e517b3bcb3e0ba11ae81d8bf8397abc227e04
This commit is contained in:
committed by
Facebook Github Bot
parent
285d4742a9
commit
03acf57b76
@@ -49,16 +49,25 @@ static UIScrollView *findScrollView(UIView *view, uint recursionDepth = 0)
|
||||
return self;
|
||||
}
|
||||
|
||||
- (UIEdgeInsets)_safeAreaInsets
|
||||
{
|
||||
if (@available(iOS 11.0, tvOS 11.0, *)) {
|
||||
return self.safeAreaInsets;
|
||||
}
|
||||
|
||||
return UIEdgeInsetsZero;
|
||||
}
|
||||
|
||||
- (void)layoutSubviews
|
||||
{
|
||||
[super layoutSubviews];
|
||||
UIScrollView *scrollView = findScrollView(self);
|
||||
if (scrollView && CGSizeEqualToSize(scrollView.bounds.size, self.bounds.size)) {
|
||||
[scrollView setContentInset:self.safeAreaInsets];
|
||||
[scrollView setContentInset:self._safeAreaInsets];
|
||||
} else {
|
||||
if (_state != nullptr) {
|
||||
CGSize size = self.bounds.size;
|
||||
size.height -= self.safeAreaInsets.bottom;
|
||||
size.height -= self._safeAreaInsets.bottom;
|
||||
auto newState = SafeAreaViewState{RCTSizeFromCGSize(size)};
|
||||
_state->updateState(std::move(newState));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user