BDPLayout.h
3.02 KB
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
//
// BDPLayout.h
// BDPLayout
//
// Created by jilutao on 2019/12/04.
// Copyright © 2019年 Baidu. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "BBASplitController.h"
NS_ASSUME_NONNULL_BEGIN
/// 容器的差异化布局适配,兼容IPAD与IPHONE具有差异化布局的情况,否则无需使用该功能
@interface BDPLayout : NSObject
/// 容器竖屏差异化布局的留白边界,取整数
@property (nonatomic, assign) NSInteger portraitEdgeSpace;
/// 容器横屏差异化布局的边界,取整数
@property (nonatomic, assign) NSInteger landscapeEdgeSpace;
/// 分屏下布局的边界,取整数
@property (nonatomic, assign) NSInteger splitEdgeSpace;
/// 屏幕方向默认UIInterfaceOrientationMaskPortrait
@property (nonatomic, assign) UIInterfaceOrientationMask supportOrientation;
/// splitViewController
@property (nonatomic, weak) BBASplitController *splitController;
+ (BDPLayout *)sharedInstance;
/// 容器差异化布局的宽度
- (CGFloat)layoutWidth;
@end
/// 当前屏幕方向是否为竖屏
static inline BOOL BDPOrientationIsPortrait() {
return UIInterfaceOrientationIsPortrait([UIApplication sharedApplication].statusBarOrientation);
}
/// 当前是否分屏
static inline BOOL BDPIsSplitMode() {
return [[BDPLayout sharedInstance].splitController isSplitMode];
}
/// 容器差异化布局的左边距
static inline CGFloat BDPLayoutSplitMasterWidth() {
return [BDPLayout sharedInstance].splitController.primaryColumnWidth;
}
/// Split容器差异化布局的边距
static inline CGFloat BDPLayoutSplitMargin() {
if (BDPOrientationIsPortrait()) {
return [BDPLayout sharedInstance].portraitEdgeSpace;
} else {
if (BDPIsSplitMode()) {
return [BDPLayout sharedInstance].splitEdgeSpace;
}
return [BDPLayout sharedInstance].landscapeEdgeSpace;
}
}
/// 非Split容器差异化布局的左边距
static inline CGFloat BDPLayoutMargin() {
if (BDPOrientationIsPortrait()) {
return [BDPLayout sharedInstance].portraitEdgeSpace;
} else {
return [BDPLayout sharedInstance].landscapeEdgeSpace;
}
}
/// 非Split容器差异化布局的左边距
__attribute__((deprecated("废弃,请使用BDPLayoutMargin")))
static inline CGFloat BDPLayoutLeftMargin() {
return BDPLayoutMargin();
}
/// 容器差异化竖屏布局的左边距
static inline CGFloat BDPPortraitLayoutMargin() {
return [BDPLayout sharedInstance].portraitEdgeSpace;
}
/// Split容器差异化横屏布局的左边距
static inline CGFloat BDPLandscapeLayoutSplitMargin() {
if (BDPIsSplitMode()) {
return [BDPLayout sharedInstance].splitEdgeSpace;
}
return [BDPLayout sharedInstance].landscapeEdgeSpace;
}
/// 非Split容器差异化横屏布局的左边距
static inline CGFloat BDPLandscapeLayoutMargin() {
return [BDPLayout sharedInstance].landscapeEdgeSpace;
}
/// 支持的屏幕方向
static inline UIInterfaceOrientationMask BDPSupportOrientation() {
return [[BDPLayout sharedInstance] supportOrientation];
}
NS_ASSUME_NONNULL_END