diff --git a/RDVTabBarController/RDVTabBarItem.h b/RDVTabBarController/RDVTabBarItem.h index db70c24..2fec5b5 100755 --- a/RDVTabBarController/RDVTabBarItem.h +++ b/RDVTabBarController/RDVTabBarItem.h @@ -23,6 +23,11 @@ #import +typedef NS_ENUM(NSUInteger, RDVTabBarItemTitleVericalAlignment) { + RDVTabBarItemTitleVericalAlignmentIconBottom, + RDVTabBarItemTitleVericalAlignmentViewBottom +}; + @interface RDVTabBarItem : UIControl /** @@ -57,6 +62,11 @@ */ @property (copy) NSDictionary *selectedTitleAttributes; +/* + * The alignment for title label + */ +@property (assign) RDVTabBarItemTitleVericalAlignment titleAlignment; + #pragma mark - Image configuration /** diff --git a/RDVTabBarController/RDVTabBarItem.m b/RDVTabBarController/RDVTabBarItem.m index b3fdcf4..d7652d1 100755 --- a/RDVTabBarController/RDVTabBarItem.m +++ b/RDVTabBarController/RDVTabBarItem.m @@ -66,6 +66,7 @@ - (void)commonInitialization { _title = @""; _titlePositionAdjustment = UIOffsetZero; + _titleAlignment = RDVTabBarItemTitleVericalAlignmentIconBottom; if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1) { _unselectedTitleAttributes = @{ @@ -96,7 +97,8 @@ - (void)drawRect:(CGRect)rect { UIImage *backgroundImage = nil; UIImage *image = nil; CGFloat imageStartingY = 0.0f; - + CGFloat titleStartingY = 0.0f; + if ([self isSelected]) { image = [self selectedImage]; backgroundImage = [self selectedBackgroundImage]; @@ -143,9 +145,25 @@ - (void)drawRect:(CGRect)rect { CGContextSetFillColorWithColor(context, [titleAttributes[NSForegroundColorAttributeName] CGColor]); + switch (self.titleAlignment) { + case RDVTabBarItemTitleVericalAlignmentIconBottom: { + titleStartingY = imageStartingY + imageSize.height + _titlePositionAdjustment.vertical; + break; + } + case RDVTabBarItemTitleVericalAlignmentViewBottom: { + static const CGFloat titleBottomOffset = 5.; + titleStartingY = frameSize.height - titleSize.height - titleBottomOffset; + break; + } + default: { + titleStartingY = imageStartingY + imageSize.height + _titlePositionAdjustment.vertical; + break; + } + } + [_title drawInRect:CGRectMake(roundf(frameSize.width / 2 - titleSize.width / 2) + _titlePositionAdjustment.horizontal, - imageStartingY + imageSize.height + _titlePositionAdjustment.vertical, + titleStartingY, titleSize.width, titleSize.height) withAttributes:titleAttributes]; } else {