JLChen
2021-11-04 1443556e9ccb1a19ed8e6710c16c8adc4d4f4fb3
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
//
//  Copyright © 2016年 dahua. All rights reserved.
//
 
#import "UINavigationItem+LeChange.h"
 
@implementation UINavigationItem (LeChange)
 
- (void)setLc_leftBarButtonItems:(NSArray<UIBarButtonItem *> *)lc_leftBarButtonItems
{
    NSMutableArray *leftItems = [NSMutableArray new];
    for (UIBarButtonItem *item in lc_leftBarButtonItems) {
        //添加一个空的,调整左边距
        UIBarButtonItem *spacer = [self spaceItemWithWidth:-5];
        [leftItems addObject:spacer];
        
        item.customView.contentMode = UIViewContentModeLeft; //居左
        [leftItems addObject:item];
        //[item.customView sizeToFit]; //会导致文字的长度变成系统默认的
        
//#if DEBUG
//        item.customView.backgroundColor = [UIColor greenColor];
//#endif
    }
    
    self.leftBarButtonItems = leftItems;
}
 
- (NSArray<UIBarButtonItem *> *) lc_leftBarButtonItems
{
    return self.leftBarButtonItems;
}
 
- (void)setLc_rightBarButtonItems:(NSArray<UIBarButtonItem *> *)lc_rightBarButtonItems
{
    NSMutableArray *rightItems = [NSMutableArray new];
    for (UIBarButtonItem *item in lc_rightBarButtonItems) {
        //添加一个空的,调整右边距
        UIBarButtonItem *spacer = [self spaceItemWithWidth:-5];
        [rightItems addObject:spacer];
        
        if ([item isKindOfClass:[UIButton class]]) {
            UIButton *button = (UIButton *)item;
            button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentRight;
            button.imageView.contentMode = UIViewContentModeRight;
        }
        
        [rightItems addObject:item];
        item.customView.contentMode = UIViewContentModeRight; //居右
        //[item.customView sizeToFit]; //会导致文字的长度变成系统默认的
        
//#if DEBUG
//        item.customView.backgroundColor = [UIColor redColor];
//#endif
    }
    
    self.rightBarButtonItems = rightItems;
}
 
- (NSArray<UIBarButtonItem *> *) lc_rightBarButtonItems
{
    return self.rightBarButtonItems;
}
 
- (void)setLc_leftBarButtons:(NSArray<UIView *> *)lc_leftBarButton
{
    self.leftBarButtonItems = [self barItemsFromButtonViewArray:lc_leftBarButton];
}
 
- (NSArray <UIView *> *)lc_leftBarButtons
{
    return [self buttonsFromBarItems:self.lc_leftBarButtonItems];
}
 
- (void)setLc_rightBarButtons:(NSArray<UIView *> *)lc_rightBarButton
{
    self.rightBarButtonItems = [self barItemsFromButtonViewArray:lc_rightBarButton];
}
 
- (NSArray<UIView *> *)lc_rightBarButtons
{
    return [self buttonsFromBarItems:self.lc_rightBarButtonItems];
}
 
#pragma mark - custom methods
- (NSArray<UIBarButtonItem *> *)barItemsFromButtonViewArray:(NSArray <UIView *>*)buttonArray
{
    NSMutableArray *batItems = [NSMutableArray new];
    for (UIView *oneView in buttonArray)
    {
        //添加一个空的,调整左边距
        UIBarButtonItem *spacer = [self spaceItemWithWidth:-5];
        [batItems addObject:spacer];
        
        [oneView sizeToFit];
        UIBarButtonItem *barItem = [[UIBarButtonItem alloc]initWithCustomView:oneView];
#if DEBUG
        //oneView.backgroundColor = [UIColor greenColor];
#endif
        [batItems addObject:barItem];
    }
    return batItems;
}
 
- (NSArray<UIView *> *)buttonsFromBarItems:(NSArray<UIBarButtonItem *>*)barItems
{
    NSMutableArray *barButtons = [NSMutableArray new];
    for (UIBarButtonItem *item in barItems)
    {
        UIView *oneView = item.customView;
        if (oneView) {
            [barButtons addObject:oneView];
        }
        
    }
    return barButtons;
}
 
- (UIBarButtonItem *)spaceItemWithWidth:(CGFloat)width
{
    UIBarButtonItem *spacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
    spacer.width = width;
    return spacer;
}
@end