// // CYLTabBarController.m // CYLTabBarController // // v1.16.0 Created by 微博@iOS程序犭袁 ( http://weibo.com/luohanchenyilong/ ) on 10/20/15. // Copyright © 2015 https://github.com/ChenYilong . All rights reserved. // #import #import "UIView+CYLTabBarControllerExtention.h" #import "CYLPlusButton.h" @implementation UIView (CYLTabBarControllerExtention) - (BOOL)cyl_isPlusButton { return [self isKindOfClass:[CYLExternPlusButton class]]; } - (BOOL)cyl_isTabButton { BOOL isKindOfButton = [self cyl_isKindOfClass:[UIControl class]]; return isKindOfButton; } - (BOOL)cyl_isTabImageView { BOOL isKindOfImageView = [self cyl_isKindOfClass:[UIImageView class]]; if (!isKindOfImageView) { return NO; } NSString *subString = [NSString stringWithFormat:@"%@cat%@ew", @"Indi" , @"orVi"]; BOOL isBackgroundImage = [self cyl_classStringHasSuffix:subString]; BOOL isTabImageView = !isBackgroundImage; return isTabImageView; } - (BOOL)cyl_isTabLabel { BOOL isKindOfLabel = [self cyl_isKindOfClass:[UILabel class]]; return isKindOfLabel; } - (BOOL)cyl_isTabBadgeView { BOOL isKindOfClass = [self isKindOfClass:[UIView class]]; BOOL isClass = [self isMemberOfClass:[UIView class]]; BOOL isKind = isKindOfClass && !isClass; if (!isKind) { return NO; } NSString *tabBarClassString = [NSString stringWithFormat:@"%@IB%@", @"_U" , @"adg"]; BOOL isTabBadgeView = [self cyl_classStringHasPrefix:tabBarClassString];; return isTabBadgeView; } - (BOOL)cyl_isTabBackgroundView { BOOL isKindOfClass = [self isKindOfClass:[UIView class]]; BOOL isClass = [self isMemberOfClass:[UIView class]]; BOOL isKind = isKindOfClass && !isClass; if (!isKind) { return NO; } NSString *tabBackgroundViewString = [NSString stringWithFormat:@"%@IB%@", @"_U" , @"arBac"]; BOOL isTabBackgroundView = [self cyl_classStringHasPrefix:tabBackgroundViewString] && [self cyl_classStringHasSuffix:@"nd"]; return isTabBackgroundView; } - (UIView *)cyl_tabBadgeBackgroundView { for (UIImageView *subview in self.subviews) { if ([subview cyl_isTabBackgroundView]) { return (UIImageView *)subview; } } return nil; } - (UIView *)cyl_tabBadgeBackgroundSeparator { UIView *subview = [self cyl_tabBadgeBackgroundView]; if (!subview) { return nil; } NSArray<__kindof UIView *> *backgroundSubviews = subview.subviews; if (backgroundSubviews.count > 1) { for (UIView *tabBadgeBackgroundSeparator in backgroundSubviews) { if (CGRectGetHeight(tabBadgeBackgroundSeparator.bounds) < 1.0 ) { return tabBadgeBackgroundSeparator; } } } return nil; } - (BOOL)cyl_isKindOfClass:(Class)class { BOOL isKindOfClass = [self isKindOfClass:class]; BOOL isClass = [self isMemberOfClass:class]; BOOL isKind = isKindOfClass && !isClass; if (!isKind) { return NO; } BOOL isTabBarClass = [self cyl_isTabBarClass]; return isTabBarClass; } - (BOOL)cyl_isTabBarClass { NSString *tabBarClassString = [NSString stringWithFormat:@"U%@a%@ar", @"IT" , @"bB"]; BOOL isTabBarClass = [self cyl_classStringHasPrefix:tabBarClassString]; return isTabBarClass; } - (BOOL)cyl_classStringHasPrefix:(NSString *)prefix { NSString *classString = NSStringFromClass([self class]); return [classString hasPrefix:prefix]; } - (BOOL)cyl_classStringHasSuffix:(NSString *)suffix { NSString *classString = NSStringFromClass([self class]); return [classString hasSuffix:suffix]; } + (UIView *)cyl_tabBadgePointViewWithClolor:(UIColor *)color radius:(CGFloat)radius { UIView *defaultTabBadgePointView = [[UIView alloc] init]; [defaultTabBadgePointView setTranslatesAutoresizingMaskIntoConstraints:NO]; defaultTabBadgePointView.backgroundColor = color; defaultTabBadgePointView.layer.cornerRadius = radius; defaultTabBadgePointView.layer.masksToBounds = YES; defaultTabBadgePointView.hidden = YES; // Width constraint [defaultTabBadgePointView addConstraint:[NSLayoutConstraint constraintWithItem:defaultTabBadgePointView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute: NSLayoutAttributeNotAnAttribute multiplier:1 constant:radius * 2]]; // Height constraint [defaultTabBadgePointView addConstraint:[NSLayoutConstraint constraintWithItem:defaultTabBadgePointView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute: NSLayoutAttributeNotAnAttribute multiplier:1 constant:radius * 2]]; return defaultTabBadgePointView; } @end