blob: 43c54409bd6000fa2437493c99898c84a5439d79 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
#import "UIView+MGLAdditions.h"
@implementation UIView (MGLAdditions)
- (UIViewController *)mgl_viewControllerForLayoutGuides
{
// Per -[UIResponder nextResponder] documentation, a UIView’s next responder
// is its managing UIViewController if applicable, or otherwise its
// superview. UIWindow’s next responder is UIApplication, which has no next
// responder.
UIResponder *laterResponder = self;
while ([laterResponder isKindOfClass:[UIView class]])
{
laterResponder = laterResponder.nextResponder;
}
if ([laterResponder isKindOfClass:[UIViewController class]])
{
return (UIViewController *)laterResponder;
}
return nil;
}
- (NSLayoutYAxisAnchor *)mgl_safeTopAnchor {
if (@available(iOS 11.0, *)) {
return self.safeAreaLayoutGuide.topAnchor;
} else {
UIViewController *viewController = self.mgl_viewControllerForLayoutGuides;
BOOL useLayoutGuides = viewController.view && viewController.automaticallyAdjustsScrollViewInsets;
if (useLayoutGuides) {
return viewController.topLayoutGuide.bottomAnchor;
}
else {
return self.topAnchor;
}
}
}
- (NSLayoutXAxisAnchor *)mgl_safeLeadingAnchor {
if (@available(iOS 11.0, *)) {
return self.safeAreaLayoutGuide.leadingAnchor;
} else {
return self.leadingAnchor;
}
}
- (NSLayoutYAxisAnchor *)mgl_safeBottomAnchor {
if (@available(iOS 11.0, *)) {
return self.safeAreaLayoutGuide.bottomAnchor;
} else {
UIViewController *viewController = self.mgl_viewControllerForLayoutGuides;
BOOL useLayoutGuides = viewController.view && viewController.automaticallyAdjustsScrollViewInsets;
if (useLayoutGuides) {
return viewController.bottomLayoutGuide.topAnchor;
}
else {
return self.bottomAnchor;
}
}
}
- (NSLayoutXAxisAnchor *)mgl_safeTrailingAnchor {
if (@available(iOS 11.0, *)) {
return self.safeAreaLayoutGuide.trailingAnchor;
} else {
return self.trailingAnchor;
}
}
@end
|