关于OC直接打印结构体,点(CGRect,CGSize,CGPoint,UIOffset)等数据类型,我们完全可以把其转换为OC对象来进项打印调试,而不必对结构体中的成员变量进行打印.就好比我们可以使用NSStringFromCGRect(CGRect rect)来直接打印一个结构体,其他打印可以参考以下内容
UIKIT_EXTERN NSString *NSStringFromCGPoint(CGPoint point);
UIKIT_EXTERN NSString *NSStringFromCGVector(CGVector vector);
UIKIT_EXTERN NSString *NSStringFromCGSize(CGSize size);
UIKIT_EXTERN NSString *NSStringFromCGRect(CGRect rect);
UIKIT_EXTERN NSString *NSStringFromCGAffineTransform(CGAffineTransform transform);
UIKIT_EXTERN NSString *NSStringFromUIEdgeInsets(UIEdgeInsets insets);
UIKIT_EXTERN NSString *NSStringFromUIOffset(UIOffset offset);
OC中好多几何学中的内容,一般都包括在 UIGeometry.h 文件中 仔细看看,可以学到好多东西
1 NS_ASSUME_NONNULL_BEGIN
2
3 typedef struct UIEdgeInsets {
4 CGFloat top, left, bottom, right; // specify amount to inset (positive) for each of the edges. values can be negative to 'outset'
5 } UIEdgeInsets;
6
7 typedef struct UIOffset {
8 CGFloat horizontal, vertical; // specify amount to offset a position, positive for right or down, negative for left or up
9 } UIOffset;
10
11 typedef NS_OPTIONS(NSUInteger, UIRectEdge) {
12 UIRectEdgeNone = 0,
13 UIRectEdgeTop = 1 << 0,
14 UIRectEdgeLeft = 1 << 1,
15 UIRectEdgeBottom = 1 << 2,
16 UIRectEdgeRight = 1 << 3,
17 UIRectEdgeAll = UIRectEdgeTop | UIRectEdgeLeft | UIRectEdgeBottom | UIRectEdgeRight
18 } NS_ENUM_AVAILABLE_IOS(7_0);
19
20 UIKIT_STATIC_INLINE UIEdgeInsets UIEdgeInsetsMake(CGFloat top, CGFloat left, CGFloat bottom, CGFloat right) {
21 UIEdgeInsets insets = {top, left, bottom, right};
22 return insets;
23 }
24
25 UIKIT_STATIC_INLINE CGRect UIEdgeInsetsInsetRect(CGRect rect, UIEdgeInsets insets) {
26 rect.origin.x += insets.left;
27 rect.origin.y += insets.top;
28 rect.size.width -= (insets.left + insets.right);
29 rect.size.height -= (insets.top + insets.bottom);
30 return rect;
31 }
32
33 UIKIT_STATIC_INLINE UIOffset UIOffsetMake(CGFloat horizontal, CGFloat vertical) {
34 UIOffset offset = {horizontal, vertical};
35 return offset;
36 }
37
38 UIKIT_STATIC_INLINE BOOL UIEdgeInsetsEqualToEdgeInsets(UIEdgeInsets insets1, UIEdgeInsets insets2) {
39 return insets1.left == insets2.left && insets1.top == insets2.top && insets1.right == insets2.right && insets1.bottom == insets2.bottom;
40 }
41
42 UIKIT_STATIC_INLINE BOOL UIOffsetEqualToOffset(UIOffset offset1, UIOffset offset2) {
43 return offset1.horizontal == offset2.horizontal && offset1.vertical == offset2.vertical;
44 }
45
46 UIKIT_EXTERN const UIEdgeInsets UIEdgeInsetsZero;
47 UIKIT_EXTERN const UIOffset UIOffsetZero;
48
49 // 结构体等数据类型 --> OC对象
50 UIKIT_EXTERN NSString *NSStringFromCGPoint(CGPoint point);
51 UIKIT_EXTERN NSString *NSStringFromCGVector(CGVector vector);
52 UIKIT_EXTERN NSString *NSStringFromCGSize(CGSize size);
53 UIKIT_EXTERN NSString *NSStringFromCGRect(CGRect rect);
54 UIKIT_EXTERN NSString *NSStringFromCGAffineTransform(CGAffineTransform transform);
55 UIKIT_EXTERN NSString *NSStringFromUIEdgeInsets(UIEdgeInsets insets);
56 UIKIT_EXTERN NSString *NSStringFromUIOffset(UIOffset offset);
57
58 // OC对象 --> 结构体等数据类型
59 UIKIT_EXTERN CGPoint CGPointFromString(NSString *string);
60 UIKIT_EXTERN CGVector CGVectorFromString(N