14
14
NSString *const CYLTabBarItemTitle = @" CYLTabBarItemTitle" ;
15
15
NSString *const CYLTabBarItemImage = @" CYLTabBarItemImage" ;
16
16
NSString *const CYLTabBarItemSelectedImage = @" CYLTabBarItemSelectedImage" ;
17
+ NSString *const CYLTabBarItemImageInsets = @" CYLTabBarItemImageInsets" ;
18
+ NSString *const CYLTabBarItemTitlePositionAdjustment = @" CYLTabBarItemTitlePositionAdjustment" ;
17
19
18
20
NSUInteger CYLTabbarItemsCount = 0 ;
19
21
NSUInteger CYLPlusButtonIndex = 0 ;
@@ -300,18 +302,32 @@ - (void)setViewControllers:(NSArray *)viewControllers {
300
302
NSString *title = nil ;
301
303
id normalImageInfo = nil ;
302
304
id selectedImageInfo = nil ;
305
+ UIOffset titlePositionAdjustment = UIOffsetZero;
306
+ UIEdgeInsets imageInsets = UIEdgeInsetsZero;
303
307
if (viewController != CYLPlusChildViewController) {
304
308
title = _tabBarItemsAttributes[idx][CYLTabBarItemTitle];
305
309
normalImageInfo = _tabBarItemsAttributes[idx][CYLTabBarItemImage];
306
310
selectedImageInfo = _tabBarItemsAttributes[idx][CYLTabBarItemSelectedImage];
311
+
312
+ NSValue *offsetValue = _tabBarItemsAttributes[idx][CYLTabBarItemTitlePositionAdjustment];
313
+ UIOffset offset = [offsetValue UIOffsetValue ];
314
+ titlePositionAdjustment = offset;
315
+
316
+ NSValue *insetsValue = _tabBarItemsAttributes[idx][CYLTabBarItemImageInsets];
317
+ UIEdgeInsets insets = [insetsValue UIEdgeInsetsValue ];
318
+ imageInsets = insets;
307
319
} else {
308
320
idx--;
309
321
}
310
322
311
323
[self addOneChildViewController: viewController
312
324
WithTitle: title
313
325
normalImageInfo: normalImageInfo
314
- selectedImageInfo: selectedImageInfo];
326
+ selectedImageInfo: selectedImageInfo
327
+ titlePositionAdjustment: titlePositionAdjustment
328
+ imageInsets: imageInsets
329
+
330
+ ];
315
331
[[viewController cyl_getViewControllerInsteadOfNavigationController ] cyl_setTabBarController: self ];
316
332
idx++;
317
333
}
@@ -341,7 +357,10 @@ - (void)setTintColor:(UIColor *)tintColor {
341
357
- (void )addOneChildViewController : (UIViewController *)viewController
342
358
WithTitle : (NSString *)title
343
359
normalImageInfo : (id )normalImageInfo
344
- selectedImageInfo : (id )selectedImageInfo {
360
+ selectedImageInfo : (id )selectedImageInfo
361
+ titlePositionAdjustment : (UIOffset)titlePositionAdjustment
362
+ imageInsets : (UIEdgeInsets)imageInsets
363
+ {
345
364
viewController.tabBarItem .title = title;
346
365
if (normalImageInfo) {
347
366
UIImage *normalImage = [self getImageFromImageInfo: normalImageInfo];
@@ -351,11 +370,13 @@ - (void)addOneChildViewController:(UIViewController *)viewController
351
370
UIImage *selectedImage = [self getImageFromImageInfo: selectedImageInfo];
352
371
viewController.tabBarItem .selectedImage = selectedImage;
353
372
}
354
- if (self.shouldCustomizeImageInsets ) {
355
- viewController.tabBarItem .imageInsets = self.imageInsets ;
373
+ if (self.shouldCustomizeImageInsets || ([self isNOTEmptyForImageInsets: imageInsets])) {
374
+ UIEdgeInsets insets = (([self isNOTEmptyForImageInsets: imageInsets]) ? imageInsets : self.imageInsets );
375
+ viewController.tabBarItem .imageInsets = insets;
356
376
}
357
- if (self.shouldCustomizeTitlePositionAdjustment ) {
358
- viewController.tabBarItem .titlePositionAdjustment = self.titlePositionAdjustment ;
377
+ if (self.shouldCustomizeTitlePositionAdjustment || [self isNOTEmptyForTitlePositionAdjustment: titlePositionAdjustment]) {
378
+ UIOffset offset = (([self isNOTEmptyForTitlePositionAdjustment: titlePositionAdjustment]) ? titlePositionAdjustment : self.titlePositionAdjustment );
379
+ viewController.tabBarItem .titlePositionAdjustment = offset;
359
380
}
360
381
[self addChildViewController: viewController];
361
382
}
@@ -372,15 +393,29 @@ - (UIImage *)getImageFromImageInfo:(id)imageInfo {
372
393
}
373
394
374
395
- (BOOL )shouldCustomizeImageInsets {
375
- BOOL shouldCustomizeImageInsets = self. imageInsets . top != 0 . f || self.imageInsets . left != 0 . f || self. imageInsets . bottom != 0 . f || self. imageInsets . right != 0 . f ;
396
+ BOOL shouldCustomizeImageInsets = [ self isNOTEmptyForImageInsets: self .imageInsets] ;
376
397
return shouldCustomizeImageInsets;
377
398
}
378
399
379
400
- (BOOL )shouldCustomizeTitlePositionAdjustment {
380
- BOOL shouldCustomizeTitlePositionAdjustment = self. titlePositionAdjustment . horizontal != 0 . f || self.titlePositionAdjustment . vertical != 0 . f ;
401
+ BOOL shouldCustomizeTitlePositionAdjustment = [ self isNOTEmptyForTitlePositionAdjustment: self .titlePositionAdjustment] ;
381
402
return shouldCustomizeTitlePositionAdjustment;
382
403
}
383
404
405
+ - (BOOL )isNOTEmptyForImageInsets : (UIEdgeInsets)imageInsets {
406
+ if (imageInsets.top != 0 || imageInsets.left != 0 || imageInsets.bottom != 0 || imageInsets.right != 0 ) {
407
+ return YES ;
408
+ }
409
+ return NO ;
410
+ }
411
+
412
+ - (BOOL )isNOTEmptyForTitlePositionAdjustment : (UIOffset)titlePositionAdjustment {
413
+ if (titlePositionAdjustment.horizontal != 0 || titlePositionAdjustment.vertical != 0 ) {
414
+ return YES ;
415
+ }
416
+ return NO ;
417
+ }
418
+
384
419
#pragma mark -
385
420
#pragma mark - KVO Method
386
421
0 commit comments