Showing preview only (451K chars total). Download the full file or copy to clipboard to get everything.
Repository: jiangyongjian/IrregularTabBar
Branch: master
Commit: a6f7e187f861
Files: 249
Total size: 365.9 KB
Directory structure:
gitextract_ysblp8zo/
├── .gitignore
├── IrregularTabBar/
│ ├── IrregularTabBar/
│ │ ├── AppDelegate.h
│ │ ├── AppDelegate.m
│ │ ├── Assets.xcassets/
│ │ │ ├── AppIcon.appiconset/
│ │ │ │ └── Contents.json
│ │ │ ├── Contents.json
│ │ │ ├── LaunchImage.launchimage/
│ │ │ │ └── Contents.json
│ │ │ ├── NavigationBar/
│ │ │ │ ├── Contents.json
│ │ │ │ ├── NavBackImage-new.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── navigationbar_back_image.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── navigationbar_close.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ └── personalschedule_icon_add.imageset/
│ │ │ │ └── Contents.json
│ │ │ ├── TabBar/
│ │ │ │ ├── Contents.json
│ │ │ │ ├── main_badge.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── navigationbarBackgroundWhite.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── tabBar_icon_contrast.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── tabBar_icon_contrast_default.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── tabBar_icon_customer.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── tabBar_icon_customer_default.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── tabBar_icon_mine.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── tabBar_icon_mine_default.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── tabBar_icon_plan.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── tabBar_icon_plan_default.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── tabBar_icon_schedule.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── tabBar_icon_schedule_default.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── tabBar_publish_icon.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── tab_Irregular.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── tab_IrregularX.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── tab_background.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── tab_backgroundX.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ └── tab_camera.imageset/
│ │ │ │ └── Contents.json
│ │ │ ├── 摄影机图标_点击前.imageset/
│ │ │ │ └── Contents.json
│ │ │ └── 摄影机图标_点击后.imageset/
│ │ │ └── Contents.json
│ │ ├── BXTabBar/
│ │ │ ├── BXBadgeView.h
│ │ │ ├── BXBadgeView.m
│ │ │ ├── BXTabBar.h
│ │ │ ├── BXTabBar.m
│ │ │ ├── BXTabBarBigButton.h
│ │ │ ├── BXTabBarBigButton.m
│ │ │ ├── BXTabBarButton.h
│ │ │ └── BXTabBarButton.m
│ │ ├── Category/
│ │ │ ├── BXExtensions.h
│ │ │ ├── Foundation+Log.m
│ │ │ ├── NSDate+Extension.h
│ │ │ ├── NSDate+Extension.m
│ │ │ ├── NSDictionary+Extension.h
│ │ │ ├── NSDictionary+Extension.m
│ │ │ ├── NSString+BXExtension.h
│ │ │ ├── NSString+BXExtension.m
│ │ │ ├── UIApplication+Extensions.h
│ │ │ ├── UIApplication+Extensions.m
│ │ │ ├── UIBarButtonItem+Extension.h
│ │ │ ├── UIBarButtonItem+Extension.m
│ │ │ ├── UIButton+Extension.h
│ │ │ ├── UIButton+Extension.m
│ │ │ ├── UIDevice+DeviceType.h
│ │ │ ├── UIDevice+DeviceType.m
│ │ │ ├── UIFont+Extension.h
│ │ │ ├── UIFont+Extension.m
│ │ │ ├── UIImage+Extension.h
│ │ │ ├── UIImage+Extension.m
│ │ │ ├── UIImage+ScreenShot.h
│ │ │ ├── UIImage+ScreenShot.m
│ │ │ ├── UILabel+Extension.h
│ │ │ ├── UILabel+Extension.m
│ │ │ ├── UIScreen+Extension.h
│ │ │ ├── UIScreen+Extension.m
│ │ │ ├── UITextControl+FaultTolerance.m
│ │ │ ├── UIView+Extension.h
│ │ │ ├── UIView+Extension.m
│ │ │ ├── UIView+IBExtension.h
│ │ │ ├── UIView+IBExtension.m
│ │ │ ├── UIView+Runtime.h
│ │ │ └── UIView+Runtime.m
│ │ ├── Controller/
│ │ │ ├── DataViewController.h
│ │ │ ├── DataViewController.m
│ │ │ ├── HomeViewController.h
│ │ │ ├── HomeViewController.m
│ │ │ ├── InsuranceViewController.h
│ │ │ ├── InsuranceViewController.m
│ │ │ ├── NewViewController.h
│ │ │ ├── NewViewController.m
│ │ │ ├── ProfileViewController.h
│ │ │ └── ProfileViewController.m
│ │ ├── Info.plist
│ │ ├── Main/
│ │ │ ├── BXNavigationController.h
│ │ │ ├── BXNavigationController.m
│ │ │ ├── BXTabBarController.h
│ │ │ └── BXTabBarController.m
│ │ ├── PrefixHeader.pch
│ │ └── main.m
│ └── IrregularTabBar.xcodeproj/
│ ├── project.pbxproj
│ └── project.xcworkspace/
│ └── contents.xcworkspacedata
├── IrregularTabBar.xcworkspace/
│ └── contents.xcworkspacedata
├── IrregularTabBar2/
│ ├── IrregularTabBar2/
│ │ ├── AppDelegate.h
│ │ ├── AppDelegate.m
│ │ ├── Assets.xcassets/
│ │ │ ├── AppIcon.appiconset/
│ │ │ │ └── Contents.json
│ │ │ ├── Contents.json
│ │ │ ├── LaunchImage.launchimage/
│ │ │ │ └── Contents.json
│ │ │ ├── NavigationBar/
│ │ │ │ ├── Contents.json
│ │ │ │ └── navigationButtonReturn.imageset/
│ │ │ │ └── Contents.json
│ │ │ ├── TabBar/
│ │ │ │ ├── Contents.json
│ │ │ │ ├── m_badge.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── navigationbarBackgroundWhite.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── tabBar_icon_contrast.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── tabBar_icon_contrast_default.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── tabBar_icon_customer.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── tabBar_icon_customer_default.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── tabBar_icon_mine.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── tabBar_icon_mine_default.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── tabBar_icon_plan.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── tabBar_icon_plan_default.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── tabBar_icon_schedule.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ └── tabBar_icon_schedule_default.imageset/
│ │ │ │ └── Contents.json
│ │ │ ├── 摄影机图标_点击前.imageset/
│ │ │ │ └── Contents.json
│ │ │ └── 摄影机图标_点击后.imageset/
│ │ │ └── Contents.json
│ │ ├── BXTabBar/
│ │ │ ├── BXTabBar.h
│ │ │ ├── BXTabBar.m
│ │ │ ├── BXTabBarBigButton.h
│ │ │ └── BXTabBarBigButton.m
│ │ ├── Category/
│ │ │ ├── BXExtensions.h
│ │ │ ├── Foundation+Log.m
│ │ │ ├── NSDate+Extension.h
│ │ │ ├── NSDate+Extension.m
│ │ │ ├── NSDictionary+Extension.h
│ │ │ ├── NSDictionary+Extension.m
│ │ │ ├── NSString+BXExtension.h
│ │ │ ├── NSString+BXExtension.m
│ │ │ ├── UIApplication+Extensions.h
│ │ │ ├── UIApplication+Extensions.m
│ │ │ ├── UIBarButtonItem+Extension.h
│ │ │ ├── UIBarButtonItem+Extension.m
│ │ │ ├── UIButton+Extension.h
│ │ │ ├── UIButton+Extension.m
│ │ │ ├── UIDevice+DeviceType.h
│ │ │ ├── UIDevice+DeviceType.m
│ │ │ ├── UIFont+Extension.h
│ │ │ ├── UIFont+Extension.m
│ │ │ ├── UIImage+Extension.h
│ │ │ ├── UIImage+Extension.m
│ │ │ ├── UIImage+ScreenShot.h
│ │ │ ├── UIImage+ScreenShot.m
│ │ │ ├── UILabel+Extension.h
│ │ │ ├── UILabel+Extension.m
│ │ │ ├── UIScreen+Extension.h
│ │ │ ├── UIScreen+Extension.m
│ │ │ ├── UITextControl+FaultTolerance.m
│ │ │ ├── UIView+Extension.h
│ │ │ ├── UIView+Extension.m
│ │ │ ├── UIView+IBExtension.h
│ │ │ ├── UIView+IBExtension.m
│ │ │ ├── UIView+Runtime.h
│ │ │ └── UIView+Runtime.m
│ │ ├── Controller/
│ │ │ ├── DataViewController.h
│ │ │ ├── DataViewController.m
│ │ │ ├── HomeViewController.h
│ │ │ ├── HomeViewController.m
│ │ │ ├── InsuranceViewController.h
│ │ │ ├── InsuranceViewController.m
│ │ │ ├── NewViewController.h
│ │ │ ├── NewViewController.m
│ │ │ ├── ProfileViewController.h
│ │ │ └── ProfileViewController.m
│ │ ├── Info.plist
│ │ ├── Main/
│ │ │ ├── BXNavigationController.h
│ │ │ ├── BXNavigationController.m
│ │ │ ├── BXTabBarController.h
│ │ │ └── BXTabBarController.m
│ │ ├── PrefixHeader.pch
│ │ └── main.m
│ └── IrregularTabBar2.xcodeproj/
│ ├── project.pbxproj
│ └── project.xcworkspace/
│ └── contents.xcworkspacedata
├── IrregularTabBar3/
│ ├── IrregularTabBar3/
│ │ ├── AppDelegate.h
│ │ ├── AppDelegate.m
│ │ ├── Assets.xcassets/
│ │ │ ├── AppIcon.appiconset/
│ │ │ │ └── Contents.json
│ │ │ ├── Contents.json
│ │ │ ├── LaunchImage.launchimage/
│ │ │ │ └── Contents.json
│ │ │ ├── NavigationBar/
│ │ │ │ ├── Contents.json
│ │ │ │ └── navigationButtonReturn.imageset/
│ │ │ │ └── Contents.json
│ │ │ └── TabBar/
│ │ │ ├── Contents.json
│ │ │ ├── main_badge.imageset/
│ │ │ │ └── Contents.json
│ │ │ ├── tabBar_icon_contrast.imageset/
│ │ │ │ └── Contents.json
│ │ │ ├── tabBar_icon_contrast_default.imageset/
│ │ │ │ └── Contents.json
│ │ │ ├── tabBar_icon_customer.imageset/
│ │ │ │ └── Contents.json
│ │ │ ├── tabBar_icon_customer_default.imageset/
│ │ │ │ └── Contents.json
│ │ │ ├── tabBar_icon_mine.imageset/
│ │ │ │ └── Contents.json
│ │ │ ├── tabBar_icon_mine_default.imageset/
│ │ │ │ └── Contents.json
│ │ │ ├── tabBar_icon_plan.imageset/
│ │ │ │ └── Contents.json
│ │ │ ├── tabBar_icon_plan_default.imageset/
│ │ │ │ └── Contents.json
│ │ │ ├── tabBar_icon_schedule.imageset/
│ │ │ │ └── Contents.json
│ │ │ ├── tabBar_icon_schedule_default.imageset/
│ │ │ │ └── Contents.json
│ │ │ ├── tabbar_background.imageset/
│ │ │ │ └── Contents.json
│ │ │ ├── tabbar_compose_button.imageset/
│ │ │ │ └── Contents.json
│ │ │ ├── tabbar_compose_button_highlighted.imageset/
│ │ │ │ └── Contents.json
│ │ │ ├── tabbar_compose_icon_add.imageset/
│ │ │ │ └── Contents.json
│ │ │ └── tabbar_compose_icon_add_highlighted.imageset/
│ │ │ └── Contents.json
│ │ ├── Category/
│ │ │ ├── BXExtensions.h
│ │ │ ├── Foundation+Log.m
│ │ │ ├── NSDate+Extension.h
│ │ │ ├── NSDate+Extension.m
│ │ │ ├── NSDictionary+Extension.h
│ │ │ ├── NSDictionary+Extension.m
│ │ │ ├── NSString+BXExtension.h
│ │ │ ├── NSString+BXExtension.m
│ │ │ ├── UIApplication+Extensions.h
│ │ │ ├── UIApplication+Extensions.m
│ │ │ ├── UIBarButtonItem+Extension.h
│ │ │ ├── UIBarButtonItem+Extension.m
│ │ │ ├── UIButton+Extension.h
│ │ │ ├── UIButton+Extension.m
│ │ │ ├── UIDevice+DeviceType.h
│ │ │ ├── UIDevice+DeviceType.m
│ │ │ ├── UIFont+Extension.h
│ │ │ ├── UIFont+Extension.m
│ │ │ ├── UIImage+Extension.h
│ │ │ ├── UIImage+Extension.m
│ │ │ ├── UIImage+ScreenShot.h
│ │ │ ├── UIImage+ScreenShot.m
│ │ │ ├── UILabel+Extension.h
│ │ │ ├── UILabel+Extension.m
│ │ │ ├── UIScreen+Extension.h
│ │ │ ├── UIScreen+Extension.m
│ │ │ ├── UITextControl+FaultTolerance.m
│ │ │ ├── UIView+Extension.h
│ │ │ ├── UIView+Extension.m
│ │ │ ├── UIView+IBExtension.h
│ │ │ ├── UIView+IBExtension.m
│ │ │ ├── UIView+Runtime.h
│ │ │ └── UIView+Runtime.m
│ │ ├── Controller/
│ │ │ ├── DataViewController.h
│ │ │ ├── DataViewController.m
│ │ │ ├── HomeViewController.h
│ │ │ ├── HomeViewController.m
│ │ │ ├── InsuranceViewController.h
│ │ │ ├── InsuranceViewController.m
│ │ │ ├── NewViewController.h
│ │ │ ├── NewViewController.m
│ │ │ ├── ProfileViewController.h
│ │ │ └── ProfileViewController.m
│ │ ├── Info.plist
│ │ ├── Main/
│ │ │ ├── BXNavigationController.h
│ │ │ ├── BXNavigationController.m
│ │ │ ├── BXTabBarController.h
│ │ │ └── BXTabBarController.m
│ │ ├── PrefixHeader.pch
│ │ └── main.m
│ └── IrregularTabBar3.xcodeproj/
│ ├── project.pbxproj
│ └── project.xcworkspace/
│ └── contents.xcworkspacedata
├── LICENSE
└── README.md
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
# Xcode
#
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
## Build generated
build/
DerivedData
## Various settings
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
## Other
*.xccheckout
*.moved-aside
*.xcuserstate
*.xcscmblueprint
## Obj-C/Swift specific
*.hmap
*.ipa
# CocoaPods
#
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
#
# Pods/
# Carthage
#
# Add this line if you want to avoid checking in source code from Carthage dependencies.
# Carthage/Checkouts
Carthage/Build
# fastlane
#
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
# screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://github.com/fastlane/fastlane/blob/master/docs/Gitignore.md
fastlane/report.xml
fastlane/screenshots
================================================
FILE: IrregularTabBar/IrregularTabBar/AppDelegate.h
================================================
//
// AppDelegate.h
// IrregularTabBar
//
// Created by JYJ on 16/5/3.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/AppDelegate.m
================================================
//
// AppDelegate.m
// IrregularTabBar
//
// Created by JYJ on 16/5/3.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import "AppDelegate.h"
#import "BXTabBarController.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 1.创建窗口
self.window = [[UIWindow alloc] init];
self.window.frame = [UIScreen mainScreen].bounds;
self.window.backgroundColor = [UIColor whiteColor];
// 设置窗口的根控制器
self.window.rootViewController = [[BXTabBarController alloc] init];
[self.window makeKeyAndVisible];
return YES;
}
- (void)applicationWillResignActive:(UIApplication *)application {
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
}
- (void)applicationDidEnterBackground:(UIApplication *)application {
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
// Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}
- (void)applicationWillTerminate:(UIApplication *)application {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Assets.xcassets/AppIcon.appiconset/Contents.json
================================================
{
"images" : [
{
"idiom" : "iphone",
"size" : "20x20",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "20x20",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "29x29",
"scale" : "1x"
},
{
"idiom" : "iphone",
"size" : "29x29",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "29x29",
"scale" : "3x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "AppIcon40x40@2x.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "AppIcon40x40@3x.png",
"scale" : "3x"
},
{
"size" : "57x57",
"idiom" : "iphone",
"filename" : "AppIcon57x57.png",
"scale" : "1x"
},
{
"size" : "57x57",
"idiom" : "iphone",
"filename" : "AppIcon57x57@2x.png",
"scale" : "2x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "AppIcon60x60@2x.png",
"scale" : "2x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "AppIcon60x60@3x.png",
"scale" : "3x"
},
{
"idiom" : "ipad",
"size" : "20x20",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "20x20",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "AppIcon29x29.png",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "29x29",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "AppIcon40x40~ipad.png",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "40x40",
"scale" : "2x"
},
{
"size" : "50x50",
"idiom" : "ipad",
"filename" : "AppIcon50x50~ipad.png",
"scale" : "1x"
},
{
"size" : "50x50",
"idiom" : "ipad",
"filename" : "AppIcon50x50@2x~ipad.png",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "72x72",
"scale" : "1x"
},
{
"size" : "72x72",
"idiom" : "ipad",
"filename" : "AppIcon72x72@2x~ipad.png",
"scale" : "2x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "AppIcon76x76~ipad.png",
"scale" : "1x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "AppIcon76x76@2x~ipad.png",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "83.5x83.5",
"scale" : "2x"
},
{
"idiom" : "ios-marketing",
"size" : "1024x1024",
"scale" : "1x"
},
{
"size" : "24x24",
"idiom" : "watch",
"scale" : "2x",
"role" : "notificationCenter",
"subtype" : "38mm"
},
{
"size" : "27.5x27.5",
"idiom" : "watch",
"scale" : "2x",
"role" : "notificationCenter",
"subtype" : "42mm"
},
{
"size" : "29x29",
"idiom" : "watch",
"filename" : "AppIcon29x29@2x.png",
"role" : "companionSettings",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "watch",
"filename" : "AppIcon29x29@3x.png",
"role" : "companionSettings",
"scale" : "3x"
},
{
"size" : "40x40",
"idiom" : "watch",
"scale" : "2x",
"role" : "appLauncher",
"subtype" : "38mm"
},
{
"size" : "86x86",
"idiom" : "watch",
"scale" : "2x",
"role" : "quickLook",
"subtype" : "38mm"
},
{
"size" : "98x98",
"idiom" : "watch",
"scale" : "2x",
"role" : "quickLook",
"subtype" : "42mm"
},
{
"idiom" : "watch-marketing",
"size" : "1024x1024",
"scale" : "1x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "AppIcon40x40@2x~ipad.png",
"unassigned" : true,
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "AppIcon29x29~ipad.png",
"unassigned" : true,
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "watch",
"filename" : "AppIcon29x29@2x~ipad.png",
"unassigned" : true,
"role" : "companionSettings",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar/IrregularTabBar/Assets.xcassets/Contents.json
================================================
{
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar/IrregularTabBar/Assets.xcassets/LaunchImage.launchimage/Contents.json
================================================
{
"images" : [
{
"extent" : "full-screen",
"idiom" : "iphone",
"subtype" : "2436h",
"filename" : "LaunchImage-700-812h@3x.png",
"minimum-system-version" : "11.0",
"orientation" : "portrait",
"scale" : "3x"
},
{
"orientation" : "landscape",
"idiom" : "iphone",
"extent" : "full-screen",
"minimum-system-version" : "11.0",
"subtype" : "2436h",
"scale" : "3x"
},
{
"extent" : "full-screen",
"idiom" : "iphone",
"subtype" : "736h",
"filename" : "LaunchImage-800-Portrait-736h@3x.png",
"minimum-system-version" : "8.0",
"orientation" : "portrait",
"scale" : "3x"
},
{
"orientation" : "landscape",
"idiom" : "iphone",
"extent" : "full-screen",
"minimum-system-version" : "8.0",
"subtype" : "736h",
"scale" : "3x"
},
{
"extent" : "full-screen",
"idiom" : "iphone",
"subtype" : "667h",
"filename" : "LaunchImage-800-667h@2x.png",
"minimum-system-version" : "8.0",
"orientation" : "portrait",
"scale" : "2x"
},
{
"orientation" : "portrait",
"idiom" : "iphone",
"filename" : "LaunchImage-700-568h@2x.png",
"extent" : "full-screen",
"minimum-system-version" : "7.0",
"scale" : "2x"
},
{
"orientation" : "portrait",
"idiom" : "iphone",
"extent" : "full-screen",
"minimum-system-version" : "7.0",
"subtype" : "retina4",
"scale" : "2x"
},
{
"orientation" : "portrait",
"idiom" : "iphone",
"filename" : "LaunchImage.png",
"extent" : "full-screen",
"scale" : "1x"
},
{
"orientation" : "portrait",
"idiom" : "iphone",
"filename" : "LaunchImage-700@2x.png",
"extent" : "full-screen",
"scale" : "2x"
},
{
"orientation" : "portrait",
"idiom" : "iphone",
"filename" : "LaunchImage-568h@2x.png",
"extent" : "full-screen",
"subtype" : "retina4",
"scale" : "2x"
},
{
"orientation" : "portrait",
"idiom" : "iphone",
"filename" : "LaunchImage@2x.png",
"extent" : "full-screen",
"unassigned" : true,
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar/IrregularTabBar/Assets.xcassets/NavigationBar/Contents.json
================================================
{
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar/IrregularTabBar/Assets.xcassets/NavigationBar/NavBackImage-new.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"filename" : "NavBackImage-new.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar/IrregularTabBar/Assets.xcassets/NavigationBar/navigationbar_back_image.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"filename" : "navigationbar_back_image.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "navigationbar_back_image@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "navigationbar_back_image@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar/IrregularTabBar/Assets.xcassets/NavigationBar/navigationbar_close.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "navigationbar_close@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "navigationbar_close@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar/IrregularTabBar/Assets.xcassets/NavigationBar/personalschedule_icon_add.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "personalschedule_icon_add@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "personalschedule_icon_add@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/Contents.json
================================================
{
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/main_badge.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "main_badge@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "main_badge@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/navigationbarBackgroundWhite.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"filename" : "navigationbarBackgroundWhite.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/tabBar_icon_contrast.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_contrast@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_contrast@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/tabBar_icon_contrast_default.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_contrast_default@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_contrast_default@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/tabBar_icon_customer.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_customer@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_customer@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/tabBar_icon_customer_default.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_customer_default@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_customer_default@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/tabBar_icon_mine.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_mine@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_mine@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/tabBar_icon_mine_default.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_mine_default@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_mine_default@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/tabBar_icon_plan.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_plan@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_plan@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/tabBar_icon_plan_default.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_plan_default@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_plan_default@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/tabBar_icon_schedule.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_schedule@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_schedule@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/tabBar_icon_schedule_default.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_schedule_default@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_schedule_default@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/tabBar_publish_icon.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "tabBar_publish_icon@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "tabBar_publish_icon@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/tab_Irregular.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "tab_Irregular@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/tab_IrregularX.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "tab_IrregularX@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/tab_background.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "tab_background@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/tab_backgroundX.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "tab_backgroundX@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/tab_camera.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "tab_camera@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "tab_camera@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar/IrregularTabBar/Assets.xcassets/摄影机图标_点击前.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "摄影机图标_点击前@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar/IrregularTabBar/Assets.xcassets/摄影机图标_点击后.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "摄影机图标_点击后@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar/IrregularTabBar/BXTabBar/BXBadgeView.h
================================================
//
// BXBadgeView.h
// IrregularTabBar
//
// Created by JYJ on 16/5/31.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface BXBadgeView : UIButton
/** 提醒数字 */
@property (nonatomic, copy) NSString *badgeValue;
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/BXTabBar/BXBadgeView.m
================================================
//
// BXBadgeView.m
// IrregularTabBar
//
// Created by JYJ on 16/5/31.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import "BXBadgeView.h"
@implementation BXBadgeView
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
self.userInteractionEnabled = NO;
self.titleLabel.font = [UIFont systemFontOfSize:12];
[self setBackgroundImage:[UIImage resizedImage:@"main_badge"] forState:UIControlStateNormal];
self.titleLabel.textAlignment = NSTextAlignmentCenter;
// 按钮的高度就是背景图片的高度
self.height = self.currentBackgroundImage.size.height;
}
return self;
}
#warning 需要修改红点尺寸位置在这里修改
- (void)setBadgeValue:(NSString *)badgeValue
{
_badgeValue = [badgeValue copy];
self.hidden = NO;
if ([badgeValue integerValue] > 99) {
badgeValue = @"...";
} else if ([badgeValue integerValue] <= 0) {
badgeValue = nil;
self.hidden = YES;
}
// 设置文字
[self setTitle:badgeValue forState:UIControlStateNormal];
// 根据文字计算自己的尺寸
CGFloat bgW = self.currentBackgroundImage.size.width;
self.width = bgW;
if (badgeValue.length > 1) {
self.width = 26;
}
}
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/BXTabBar/BXTabBar.h
================================================
//
// BXTabBar.h
// IrregularTabBar
//
// Created by JYJ on 16/5/3.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import <UIKit/UIKit.h>
@class BXTabBar;
@protocol BXTabBarDelegate <NSObject>
@optional
- (void)tabBar:(BXTabBar *)tabBar didClickBtn:(NSInteger)index;
@end
@interface BXTabBar : UIView
/** 选中的索引 */
@property (nonatomic, assign) NSInteger seletedIndex;
// 模型数组(UITabBarItem)
@property (nonatomic, strong) NSArray *items;
@property (nonatomic, weak) id<BXTabBarDelegate> delegate;
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/BXTabBar/BXTabBar.m
================================================
//
// BXTabBar.m
// IrregularTabBar
//
// Created by JYJ on 16/5/3.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import "BXTabBar.h"
#import "BXTabBarButton.h"
#import "BXTabBarBigButton.h"
#import "BXTabBarController.h"
@interface BXTabBar ()
/**
* 选中的按钮
*/
@property (nonatomic, weak) UIButton *selButton;
/** bigButton */
@property (nonatomic, weak) BXTabBarBigButton *bigButton;
/** 需要选中第几个 */
@property (nonatomic, assign) NSUInteger currentSelectedIndex;
@end
@implementation BXTabBar
/** tabBarTag */
static NSInteger const BXTabBarTag = 12000;
- (void)setItems:(NSArray *)items
{
_items = items;
// UITabBarItem保存按钮上的图片
for (int i = 0; i < items.count; i++) {
UITabBarItem *item = items[i];
if (i == 2) {
BXTabBarBigButton *btn = [BXTabBarBigButton buttonWithType:UIButtonTypeCustom];
btn.tag = self.subviews.count + BXTabBarTag;
// 设置图片
[btn setImage:item.image forState:UIControlStateNormal];
[btn setImage:item.selectedImage forState:UIControlStateSelected];
btn.adjustsImageWhenHighlighted = NO;
// 设置文字
[btn setTitle:item.title forState:UIControlStateNormal];
[btn setTitleColor:BXColor(113, 109, 104) forState:UIControlStateNormal];
[btn setTitleColor:BXColor(51, 135, 255) forState:UIControlStateSelected];
[btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchDown];
[self addSubview:btn];
self.bigButton = btn;
} else {
BXTabBarButton *btn = [BXTabBarButton buttonWithType:UIButtonTypeCustom];
btn.tag = self.subviews.count + BXTabBarTag;
// 设置图片
[btn setImage:item.image forState:UIControlStateNormal];
[btn setImage:item.selectedImage forState:UIControlStateSelected];
btn.adjustsImageWhenHighlighted = NO;
// 设置文字
[btn setTitle:item.title forState:UIControlStateNormal];
btn.item = item;
[btn setTitleColor:BXColor(113, 109, 104) forState:UIControlStateNormal];
[btn setTitleColor:BXColor(51, 135, 255) forState:UIControlStateSelected];
[btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchDown];
[self addSubview:btn];
// 子控件的个数
NSInteger subViewsCount = 1;
if (self.seletedIndex) {
subViewsCount = self.seletedIndex + 1;
}
if (self.subviews.count == subViewsCount) {
self.currentSelectedIndex = self.subviews.count - 1;
// 默认选中第一个
[self btnClick:btn];
}
// 添加观察者
[item addObserver:self forKeyPath:@"badgeValue" options:NSKeyValueObservingOptionNew context:(__bridge void * _Nullable)(btn)];
}
}
}
- (void)dealloc {
for (int i=0; i<self.items.count; i++) {
if (i != 2) {
[self.items[i] removeObserver:self forKeyPath:@"badgeValue"];
}
}
}
/**
* 实现数字的显示
*/
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context {
BXTabBarButton *btn = (__bridge BXTabBarButton *)(context);
UITabBarItem *item = object;
btn.item = item;
}
- (void)setDelegate:(id<BXTabBarDelegate>)delegate{
_delegate = delegate;
[self btnClick:(BXTabBarButton *)[self viewWithTag:self.currentSelectedIndex + BXTabBarTag]];
}
- (void)btnClick:(UIButton *)button
{
_selButton.selected = NO;
button.selected = YES;
_selButton = button;
// 通知tabBarVc切换控制器
if ([_delegate respondsToSelector:@selector(tabBar:didClickBtn:)]) {
[_delegate tabBar:self didClickBtn:button.tag - BXTabBarTag];
}
}
/**
* 外界设置索引页跟着跳转
*/
- (void)setSeletedIndex:(NSInteger)seletedIndex {
_seletedIndex = seletedIndex;
UIButton *button = [self viewWithTag:(BXTabBarTag + seletedIndex)];
[self btnClick:button];
}
- (void)layoutSubviews {
[super layoutSubviews];
NSUInteger count = self.subviews.count;
CGFloat x = 0;
CGFloat y = 0;
CGFloat w = [UIScreen mainScreen].bounds.size.width / count;
CGFloat h = 49;
#warning 在这里修改位置
for (int i = 0; i < count; i++) {
UIButton *btn = self.subviews[i];
x = i * w;
if (i == 2) {
y = -12;
h += 12;
}
btn.frame = CGRectMake(x, y, w, h);
}
}
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
// 这里宽度应该跟突出部分的宽度一样,减少点击反应区域
CGFloat pointW = 43;
CGFloat pointH = 61;
CGFloat pointX = (BXScreenW - pointW) / 2;
CGFloat pointY = -12;
CGRect rect = CGRectMake(pointX, pointY, pointW, pointH);
if (CGRectContainsPoint(rect, point)) {
return self.bigButton;
}
return [super hitTest:point withEvent:event];
}
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/BXTabBar/BXTabBarBigButton.h
================================================
//
// BXTabBarBigButton.h
// IrregularTabBar
//
// Created by JYJ on 16/5/3.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface BXTabBarBigButton : UIButton
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/BXTabBar/BXTabBarBigButton.m
================================================
//
// BXTabBarBigButton.m
// IrregularTabBar
//
// Created by JYJ on 16/5/3.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import "BXTabBarBigButton.h"
@interface BXTabBarBigButton ()
/**
* 背景
*/
@property(nonatomic, weak) UIView *bgView;
@end
@implementation BXTabBarBigButton
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
// 1.设置字体
self.titleLabel.font = [UIFont systemFontOfSize:10];
self.titleLabel.textAlignment = NSTextAlignmentCenter;
// 2.图片的内容模式
self.imageView.contentMode = UIViewContentModeCenter;
UIView *bgView = [[UIView alloc] init];
if (iPhoneX) {
bgView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"tab_IrregularX"]];
} else {
bgView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"tab_Irregular"]];
}
[self insertSubview:bgView atIndex:0];
self.bgView = bgView;
}
return self;
}
- (void)layoutSubviews {
[super layoutSubviews];
self.titleLabel.x = 0;
self.titleLabel.width = self.width;
self.titleLabel.height = 16;
if (@available(iOS 11.0, *)) {
self.titleLabel.height -= 1;
}
self.titleLabel.y = self.height - self.titleLabel.height;
self.imageView.width = self.currentImage.size.width;
self.imageView.height = self.currentImage.size.height;
self.imageView.x = (self.width - self.imageView.width) / 2;
self.imageView.y = self.titleLabel.y - self.imageView.height - 1;
self.bgView.width = 43;
self.bgView.height = self.height;
self.bgView.x = (self.width - self.bgView.width) / 2;
self.bgView.y = 0;
}
- (void)setHighlighted:(BOOL)highlighted {
}
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/BXTabBar/BXTabBarButton.h
================================================
//
// BXTabBarButton.h
// IrregularTabBar
//
// Created by JYJ on 16/5/3.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface BXTabBarButton : UIButton
/** 模型数据 */
@property (nonatomic, strong) UITabBarItem *item;
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/BXTabBar/BXTabBarButton.m
================================================
//
// BXTabBarButton.m
// IrregularTabBar
//
// Created by JYJ on 16/5/3.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import "BXTabBarButton.h"
#import "BXBadgeView.h"
@interface BXTabBarButton ()
/**
* 提醒数字
*/
@property (strong, nonatomic) BXBadgeView *badgeView;
@end
@implementation BXTabBarButton
/**
* 小红点
*/
- (BXBadgeView *)badgeView {
if (!_badgeView) {
BXBadgeView *badgeView = [[BXBadgeView alloc] init];
[self addSubview:badgeView];
self.badgeView = badgeView;
}
return _badgeView;
}
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
// 1.设置字体
self.titleLabel.font = [UIFont systemFontOfSize:10];
self.titleLabel.textAlignment = NSTextAlignmentCenter;
self.adjustsImageWhenHighlighted = NO;
// 2.图片的内容模式
self.imageView.contentMode = UIViewContentModeCenter;
}
return self;
}
- (void)setItem:(UITabBarItem *)item {
_item = item;
self.badgeView.badgeValue = item.badgeValue;
}
- (void)layoutSubviews {
[super layoutSubviews];
// 文字位置
self.titleLabel.x = 0;
self.titleLabel.width = self.width;
self.titleLabel.height = 16;
if (@available(iOS 11.0, *)) {
self.titleLabel.height -= 1;
}
self.titleLabel.y = self.height - self.titleLabel.height;
// 图片位置
// self.imageView.width = 35;
// self.imageView.height = 35;
// self.imageView.x = (self.width - self.imageView.width) / 2;
// self.imageView.y = 0;
self.imageView.width = self.currentImage.size.width;
self.imageView.height = self.currentImage.size.height;
self.imageView.x = (self.width - self.imageView.width) / 2;
self.imageView.y = self.titleLabel.y - self.imageView.height - 4;
// 小红点位置
self.badgeView.x = CGRectGetMaxX(self.imageView.frame) - 5;
self.badgeView.y = 2;
// self.badgeView.width = ;
// self.badgeView.height = ;
}
- (void)setHighlighted:(BOOL)highlighted {
}
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Category/BXExtensions.h
================================================
//
// BXExtensions.h
// BXInsurenceBroker
//
// Created by JYJ on 16/3/15.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import "UIApplication+Extensions.h"
#import "UIScreen+Extension.h"
#import "UIDevice+DeviceType.h"
#import "UIView+IBExtension.h"
#import "UIView+Runtime.h"
#import "UIView+Extension.h"
#import "NSString+BXExtension.h"
#import "NSDate+Extension.h"
#import "UIBarButtonItem+Extension.h"
#import "UIImage+Extension.h"
#import "UILabel+Extension.h"
#import "UIButton+Extension.h"
#import "UIImage+ScreenShot.h"
#import "UIFont+Extension.h"
#import "NSDictionary+Extension.h"
================================================
FILE: IrregularTabBar/IrregularTabBar/Category/Foundation+Log.m
================================================
#import <Foundation/Foundation.h>
//#import <objc/runtime.h>
//@implementation NSObject (Log)
//+ (void)load {
// // 交换两个方法的实现
// method_exchangeImplementations(class_getInstanceMethod([NSObject class], @selector(description)), class_getInstanceMethod([NSObject class], @selector(pkxDescription)));
//}
///**
// * 该方法是用来自定义模型(直接继承NSObject)的输出格式
// *
// * @return 格式化后的字符串
// */
//- (NSString *)pkxDescription{
// Class class = [self class];
//
// NSMutableString *resultStr = [NSMutableString stringWithFormat:@"%@ = {\n",[self pkxDescription]];
// BXLog(@"%@", [class description]);
// while (class != [NSObject class]) {
// // 0.如果是UIResponder或CALayer的子类,就使用系统的默认输出格式
// if ([[class description] hasPrefix:@"NS"] || [[class description] hasPrefix:@"__"]|| [[class description] hasPrefix:@"AV"] || [[class description] hasPrefix:@"_UIFlowLayout"] || [[class description] hasPrefix:@"UITouchesEvent"] || [class isSubclassOfClass:[UIResponder class]] || [class isSubclassOfClass:[CALayer class]] || [class isSubclassOfClass:[UIImage class]])return [self pkxDescription];
// unsigned int count = 0;
// // 1.获取类成员变量列表,count为类成员变量数量
// Ivar *vars = class_copyIvarList(class, &count);
// for (int index = 0; index < count; index ++) {
// // 2.根据索引获得指定位置的成员变量
// Ivar var = vars[index];
// // 3.获得成员变量名
// const char *name = ivar_getName(var);
// // 4.成员变量名转化成oc字符串
// NSString *varName = [NSString stringWithUTF8String:name];
// BXLog(@"%@", varName);
// // 5.获得成员变量对应的值
// id value = [self valueForKey:varName];
// [resultStr appendFormat:@"\t%@ = %@;\n", varName, value];
// }
// // 6.释放指针
// free(vars);
// // 7.获得父类
// class = class_getSuperclass(class);
// }
// [resultStr appendString:@"}\n"];
// return resultStr;
//}
//
//@end
@implementation NSDictionary (Log)
- (NSString *)descriptionWithLocale:(id)locale {
NSMutableString *str = [NSMutableString string];
[str appendString:@"{\n"];
// 遍历字典的所有键值对
[self enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
[str appendFormat:@"\t%@ = %@,\n", key, obj];
}];
[str appendString:@"}"];
// 查出最后一个,的范围
NSRange range = [str rangeOfString:@"," options:NSBackwardsSearch];
if (range.length != 0) {
// 删掉最后一个,
[str deleteCharactersInRange:range];
}
return str;
}
@end
@implementation NSArray (Log)
- (NSString *)descriptionWithLocale:(id)locale {
NSMutableString *str = [NSMutableString string];
[str appendString:@"[\n"];
// 遍历数组的所有元素
[self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
[str appendFormat:@"%@,\n", obj];
}];
[str appendString:@"]"];
// 查出最后一个,的范围
NSRange range = [str rangeOfString:@"," options:NSBackwardsSearch];
if (range.length != 0) {
// 删掉最后一个,
[str deleteCharactersInRange:range];
}
return str;
}
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Category/NSDate+Extension.h
================================================
//
// NSDate+Extension.h
// Weibo11
//
// Created by JYJ on 15/12/12.
// Copyright © 2015年 itheima. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface NSDate (Extension)
/// 日期描述字符串
///
/// 格式如下
/// - 刚刚(一分钟内)
/// - X分钟前(一小时内)
/// - X小时前(当天)
/// - 昨天 HH:mm(昨天)
/// - MM-dd HH:mm(一年内)
/// - yyyy-MM-dd HH:mm(更早期)
- (NSString *)ff_dateDescription;
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Category/NSDate+Extension.m
================================================
//
// NSDate+Extension.m
// Weibo11
//
// Created by JYJ on 15/12/12.
// Copyright © 2015年 itheima. All rights reserved.
//
#import "NSDate+Extension.h"
@implementation NSDate (Extension)
- (NSString *)ff_dateDescription {
// 1. 获取当前日历
NSCalendar *calendar = [NSCalendar currentCalendar];
// 2. 判断是否是今天
if ([calendar isDateInToday:self]) {
NSInteger interval = ABS((NSInteger)[self timeIntervalSinceNow]);
if (interval < 60) {
return @"刚刚";
}
interval /= 60;
if (interval < 60) {
return [NSString stringWithFormat:@"%zd 分钟前", interval];
}
return [NSString stringWithFormat:@"%zd 小时前", interval / 60];
}
// 3. 昨天
NSMutableString *formatString = [NSMutableString stringWithString:@" HH:mm"];
if ([calendar isDateInYesterday:self]) {
[formatString insertString:@"昨天" atIndex:0];
} else {
[formatString insertString:@"MM-dd" atIndex:0];
// 4. 是否当年
NSDateComponents *components = [calendar components:NSCalendarUnitYear fromDate:self toDate:[NSDate date] options:0];
if (components.year != 0) {
[formatString insertString:@"yyyy-" atIndex:0];
}
}
// 5. 转换格式字符串
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
fmt.locale = [NSLocale localeWithLocaleIdentifier:@"en"];
fmt.dateFormat = formatString;
return [fmt stringFromDate:self];
}
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Category/NSDictionary+Extension.h
================================================
//
// NSDictionary+Extension.h
// BXInsurenceBroker
//
// Created by linsihua on 16/4/9.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface NSDictionary (Extension)
- (id)getValue:(NSString *)key as:(Class)type;
- (id)getValue:(NSString *)key as:(Class)type defaultValue:(id)defaultValue;
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Category/NSDictionary+Extension.m
================================================
//
// NSDictionary+Extension.m
// BXInsurenceBroker
//
// Created by linsihua on 16/4/9.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import "NSDictionary+Extension.h"
@implementation NSDictionary (Extension)
- (id)getValue:(NSString *)key as:(Class)type {
id value = [self objectForKey:key];
// 类型一样,直接返回
if ([value isKindOfClass:type]) {
return value;
}
// 如果目标是number
if (type == [NSNumber class] && [value isKindOfClass:[NSString class]]) {
NSString *string = value;
if ([string isEqualToString:@"true"]) {
return @YES;
}
if ([string isEqualToString:@"no"]) {
return @NO;
}
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
return [formatter numberFromString:string];
}
// 如果目标是string
if (type == [NSString class] && [value isKindOfClass:[NSNumber class]]) {
return [value description];
}
if (type == [NSMutableString class]) {
if ([value isKindOfClass:[NSNumber class]]) {
return [[value description] mutableCopy];
} else if ([value isKindOfClass:[NSString class]]) {
return [value mutableCopy];
}
}
// 如果目标是array
if (type == [NSArray class] && [value isKindOfClass:[NSDictionary class]]) {
NSDictionary *dict = (NSDictionary *)value;
return dict.allValues;
}
if (type == [NSMutableArray class]) {
if ([value isKindOfClass:[NSDictionary class]]) {
NSDictionary *dict = (NSDictionary *)value;
return [dict.allValues mutableCopy];
} else if ([value isKindOfClass:[NSDictionary class]]) {
return [value mutableCopy];
}
}
// 如果目标是dictionary
if ((type == [NSDictionary class] || type == [NSMutableDictionary class]) && [value isKindOfClass:[NSArray class]]) {
NSArray *array = (NSArray *)value;
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
for (id item in array) {
if ([item isKindOfClass:[NSNumber class]]) {
[dict setObject:item forKey:[item description]];
} else {
[dict setObject:item forKey:item];
}
}
return dict;
}
return nil;
}
- (id)getValue:(NSString *)key as:(Class)type defaultValue:(id)defaultValue {
id result = [self getValue:key as:type];
if (!result) {
result = defaultValue;
}
return result;
}
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Category/NSString+BXExtension.h
================================================
//
// NSString+BXExtension.h
// BXInsurenceBroker
//
// Created by JYJ on 16/2/23.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface NSString (BXExtension)
/**
*手机号码验证 MODIFIED BY HELENSONG
*/
- (BOOL) isValidateMobile;
///**
// *身份证验证
// */
//- (BOOL)validateIdentityCard;
/**
* 判断字段是否包含空格
*/
- (BOOL)validateContainsSpace;
/**
* 根据生日返回年龄
*/
- (NSString *)ageFromBirthday;
/**
* 根据身份证返回岁数
*/
- (NSString *)ageFromIDCard;
/**
* 根据身份证返回生日
*/
- (NSString*)birthdayFromIDCard;
/**
* 根据身份证返回性别
*/
- (NSString*)sexFromIDCard;
/**
* 返回字符串所占用的尺寸
*
* @param font 字体
* @param maxSize 最大尺寸
*/
- (CGSize)sizeWithFont:(UIFont *)font maxSize:(CGSize)maxSize;
+ (NSString *)stringWithMoneyAmount:(double)amount;
+ (NSString *)stringIntervalFrom:(NSDate *)start to:(NSDate *)end;
//邮箱
+ (BOOL)validateEmail:(NSString *)email;
- (BOOL)isEmptyString;
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Category/NSString+BXExtension.m
================================================
//
// NSString+BXExtension.m
// BXInsurenceBroker
//
// Created by JYJ on 16/2/23.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import "NSString+BXExtension.h"
@implementation NSString (BXExtension)
/*手机号码验证 MODIFIED BY HELENSONG*/
- (BOOL) isValidateMobile {
//手机号以13, 15, 17, 18开头,八个 \d 数字字符
NSString *phoneRegex = @"^((13[0-9])|(15[^4,\\D])|(17[0-9])|(18[0,0-9]))\\d{8}$";
NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",phoneRegex];
// NSLog(@"phoneTest is %@",phoneTest);
return [phoneTest evaluateWithObject:self];
}
- (BOOL)validateContainsSpace {
return [self rangeOfString:@" "].location == NSNotFound;
}
- (NSString *)ageFromBirthday {
if (self.length != 10 ||
[self characterAtIndex:4] != '.' ||
[self characterAtIndex:7] != '.') {
return @"";
}
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy.MM.dd"];
NSString *today = [formatter stringFromDate:[NSDate date]];
NSString *selfYear = [self substringToIndex:4];
NSString *nowYear = [today substringToIndex:4];
NSInteger age = nowYear.integerValue - selfYear.integerValue;
NSString *selfDate = [self substringFromIndex:5];
NSString *nowDate = [today substringFromIndex:5];
if ([nowDate compare:selfDate] < 0) {
age = age - 1;
}
if (age < 0) {
return @"";
}
return [NSString stringWithFormat:@"%zd", age];
}
- (NSString *)ageFromIDCard {
NSString *birthday = [self birthdayFromIDCard];
return [birthday ageFromBirthday];
}
- (NSString*)birthdayFromIDCard {
NSString *result = @"未知";
if (self.length == 15) {
NSMutableString *birthString = [[self substringWithRange:NSMakeRange(6, 6)] mutableCopy];
[birthString insertString:@"19" atIndex:0];
[birthString insertString:@"." atIndex:4];
[birthString insertString:@"." atIndex:7];
result = birthString;
} else if (self.length == 18) {
NSMutableString *birthString = [[self substringWithRange:NSMakeRange(6, 8)] mutableCopy];
[birthString insertString:@"." atIndex:4];
[birthString insertString:@"." atIndex:7];
result = birthString;
}
return result;
}
- (NSString*)sexFromIDCard {
NSString *sexString = @"";
if (self.length == 15) {
sexString = [[self substringWithRange:NSMakeRange(14, 1)] mutableCopy];
} else if (self.length == 18) {
sexString = [[self substringWithRange:NSMakeRange(16, 1)] mutableCopy];
}
int x = sexString.intValue;
if (x < 0 || sexString.length == 0) {
return @"";
}
if (x % 2 == 0) {
return @"女";
} else {
return @"男";
}
return sexString;
}
- (CGSize)sizeWithFont:(UIFont *)font maxSize:(CGSize)maxSize {
NSDictionary *attrs = @{NSFontAttributeName : font};
return [self boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:attrs context:nil].size;
}
+ (NSString *)stringWithMoneyAmount:(double)amount {
BOOL minus = amount < 0;
if (minus) {
amount = -amount;
}
NSMutableString *toString = [NSMutableString string];
long round = floor(amount);
int fraction = floor((amount - round + 0.005) * 100.0);
NSString *fractionString = [NSString stringWithFormat:@".%02d", fraction];
do {
int thousand = round % 1000;
if (round < 1000) {
[toString insertString:[NSString stringWithFormat:@"%d", thousand] atIndex:0];
} else {
[toString insertString:[NSString stringWithFormat:@",%03d", thousand] atIndex:0];
}
round = round / 1000;
} while (round);
[toString appendString:fractionString];
if (minus) {
[toString insertString:@"-" atIndex:0];
}
return toString;
}
+ (NSString *)stringIntervalFrom:(NSDate *)start to:(NSDate *)end {
NSInteger interval = end.timeIntervalSince1970 - start.timeIntervalSince1970;
if (interval <= 0) {
return @"刚刚";
}
if (interval < 60) {
return [NSString stringWithFormat:@"%zd 秒前", interval];
}
interval = interval / 60;
if (interval < 60) {
return [NSString stringWithFormat:@"%zd 分钟前", interval];
}
interval = interval / 60;
if (interval < 24) {
return [NSString stringWithFormat:@"%zd 小时前", interval];
}
interval = interval / 24;
if (interval < 7) {
return [NSString stringWithFormat:@"%zd 天前", interval];
}
if (interval < 30) {
return [NSString stringWithFormat:@"%zd 周前", interval / 7];
}
if (interval < 365) {
return [NSString stringWithFormat:@"%zd 个月前", interval / 30];
}
return [NSString stringWithFormat:@"%zd 年前", interval / 365];
}
//邮箱
+ (BOOL)validateEmail:(NSString *)email {
NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
return [emailTest evaluateWithObject:email];
}
- (BOOL)isEmptyString {
return self.length == 0 || [[self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length] == 0;
}
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Category/UIApplication+Extensions.h
================================================
//
// UIApplication+Extensions.h
// Weibo11
//
// Created by JYJ on 15/12/8.
// Copyright © 2015年 itheima. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
@interface UIApplication (Extensions)
/**
* 返回应用程序代理
*/
+ (AppDelegate *)appDelegate;
/**
* 根视图控制器
*/
+ (UIViewController *)rootViewController;
/**
* 返回当前设备对应的启动图片
*/
+ (UIImage *)launchImage;
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Category/UIApplication+Extensions.m
================================================
//
// UIApplication+Extensions.m
// Weibo11
//
// Created by JYJ on 15/12/8.
// Copyright © 2015年 itheima. All rights reserved.
//
#import "UIApplication+Extensions.h"
@implementation UIApplication (Extensions)
+ (AppDelegate *)appDelegate {
return (AppDelegate *)[UIApplication sharedApplication].delegate;
}
+ (UIViewController *)rootViewController {
return [UIApplication appDelegate].window.rootViewController;
}
+ (UIImage *)launchImage {
UIImage *image = nil;
NSArray *launchImages = [NSBundle mainBundle].infoDictionary[@"UILaunchImages"];
for (NSDictionary *dict in launchImages) {
// 1. 将字符串转换成尺寸
CGSize size = CGSizeFromString(dict[@"UILaunchImageSize"]);
// 2. 与当前屏幕进行比较
if (CGSizeEqualToSize(size, [UIScreen ff_screenSize])) {
NSString *filename = dict[@"UILaunchImageName"];
image = [UIImage imageNamed:filename];
break;
}
}
return image;
}
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Category/UIBarButtonItem+Extension.h
================================================
//
// UIBarButtonItem+Extension.h
// JYJ微博
//
// Created by JYJ on 15/3/11.
// Copyright (c) 2015年 JYJ. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface UIBarButtonItem (Extension)
/**
* 返回没有调整图片
*/
+ (UIBarButtonItem *)itemWithImageName:(NSString *)imageName highImageName:(NSString *)highImageName target:target action:(SEL)action;
/**
* 没有文字调整的按钮
*/
+ (UIBarButtonItem *)itemWithName:(NSString *)Name font:(CGFloat)font target:target action:(SEL)action;
/**
* 返回调整文字
*/
+ (NSArray *)itemsWithName:(NSString *)Name font:(CGFloat)font target:target action:(SEL)action;
/**
* 返回调整图片
*/
+ (NSArray *)itemsWithImageName:(NSString *)imageName highImageName:(NSString *)highImageName target:target action:(SEL)action;
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Category/UIBarButtonItem+Extension.m
================================================
//
// UIBarButtonItem+Extension.m
// JYJ微博
//
// Created by JYJ on 15/3/11.
// Copyright (c) 2015年 JYJ. All rights reserved.
//
#import "UIBarButtonItem+Extension.h"
@implementation UIBarButtonItem (Extension)
/**
* 没有图片调整的按钮
*/
+ (UIBarButtonItem *)itemWithImageName:(NSString *)imageName highImageName:(NSString *)highImageName target:target action:(SEL)action {
UIButton *button = [[UIButton alloc] init];
// button.backgroundColor = [UIColor redColor];
// 设置按钮的背景图片
[button setBackgroundImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal];
if (highImageName != nil) {
[button setBackgroundImage: [UIImage imageNamed:highImageName] forState:UIControlStateHighlighted];
}
// 设置按钮的尺寸为背景图片的尺寸
button.size = button.currentBackgroundImage.size;
button.adjustsImageWhenHighlighted = NO;
//监听按钮的点击
[button addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
return [[UIBarButtonItem alloc] initWithCustomView:button];
}
/**
* 没有文字调整的按钮
*/
+ (UIBarButtonItem *)itemWithName:(NSString *)Name font:(CGFloat)font target:target action:(SEL)action {
UIButton *btn = [[UIButton alloc] init];
btn.titleLabel.font = [UIFont navItemFontWithDevice:font];
[btn setTitle:Name forState:UIControlStateNormal];
[btn sizeToFit];
//监听按钮的点击
[btn addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
btn.adjustsImageWhenHighlighted = NO;
return [[UIBarButtonItem alloc] initWithCustomView:btn];
}
+ (NSArray *)itemsWithName:(NSString *)Name font:(CGFloat)font target:target action:(SEL)action {
UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
negativeSpacer.width = -5;
UIButton *btn = [[UIButton alloc] init];
btn.titleLabel.font = [UIFont navItemFontWithDevice:font];
[btn setTitle:Name forState:UIControlStateNormal];
[btn sizeToFit];
//监听按钮的点击
[btn addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
btn.adjustsImageWhenHighlighted = NO;
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:btn];
return @[negativeSpacer, item];
}
+ (NSArray *)itemsWithImageName:(NSString *)imageName highImageName:(NSString *)highImageName target:target action:(SEL)action {
UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
negativeSpacer.width = -5;
UIBarButtonItem *item = [UIBarButtonItem itemWithImageName:imageName highImageName:highImageName target:target action:action];
return @[negativeSpacer, item];
}
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Category/UIButton+Extension.h
================================================
//
// UIButton+Extension.h
// Weibo11
//
// Created by JYJ on 15/12/5.
// Copyright © 2015年 itheima. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface UIButton (Extension)
/**
* 创建按钮有文字,有颜色,有字体,有图片,没有有背景
*
* @param title 标题
* @param color 字体颜色
* @param fontSize 字号
* @param imageName 图像
*
* @return UIButton
*/
+ (instancetype)buttonWithTitle:(NSString *)title titleColor:(UIColor *)titleColor font:(UIFont *)font imageName:(NSString *)imageName target:(id)target action:(SEL)action;
/**
* 创建按钮有文字,有颜色,有字体,有图片,有背景
*
* @param title 标题
* @param color 字体颜色
* @param fontSize 字号
* @param imageName 图像
* @param backImageName 背景图像
*
* @return UIButton
*/
+ (instancetype)buttonWithTitle:(NSString *)title titleColor:(UIColor *)titleColor font:(UIFont *)font imageName:(NSString *)imageName target:(id)target action:(SEL)action backImageName:(NSString *)backImageName;
/**
* 创建按钮有文字,有颜色,有字体,没有图片,没有背景
*
* @param title 标题
* @param titleColor 标题颜色
* @param backImageName 背景图像名称
*
* @return UIButton
*/
+ (instancetype)buttonWithTitle:(NSString *)title titleColor:(UIColor *)titleColor font:(UIFont *)font target:(id)target action:(SEL)action;
/**
* 创建按钮有文字,有颜色,有字体,没有图片,有背景
*
* @param title 标题
* @param titleColor 标题颜色
* @param backImageName 背景图像名称
*
* @return UIButton
*/
+ (instancetype)buttonWithTitle:(NSString *)title titleColor:(UIColor *)titleColor font:(UIFont *)font target:(id)target action:(SEL)action backImageName:(NSString *)backImageName;
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Category/UIButton+Extension.m
================================================
//
// UIButton+Extension.m
// Weibo11
//
// Created by JYJ on 15/12/5.
// Copyright © 2015年 itheima. All rights reserved.
//
#import "UIButton+Extension.h"
@implementation UIButton (Extension)
#pragma mark --- 创建默认按钮--有字体、颜色--有图片---有背景
+ (instancetype)buttonWithTitle:(NSString *)title titleColor:(UIColor *)titleColor font:(UIFont *)font imageName:(NSString *)imageName target:(id)target action:(SEL)action backImageName:(NSString *)backImageName {
UIButton *button = [[UIButton alloc] init];
// 设置标题
[button setTitle:title forState:UIControlStateNormal];
[button setTitleColor:titleColor forState:UIControlStateNormal];
button.titleLabel.font = font;
button.adjustsImageWhenHighlighted = NO;
// 图片
if (imageName != nil) {
[button setImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal];
NSString *highlighted = [NSString stringWithFormat:@"%@_highlighted", imageName];
[button setImage:[UIImage imageNamed:highlighted] forState:UIControlStateHighlighted];
}
// 背景图片
if (backImageName != nil) {
[button setBackgroundImage:[UIImage imageNamed:backImageName] forState:UIControlStateNormal];
NSString *backHighlighted = [NSString stringWithFormat:@"%@_highlighted", backImageName];
[button setBackgroundImage:[UIImage imageNamed:backHighlighted] forState:UIControlStateHighlighted];
}
// 监听方法
if (action != nil) {
[button addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
}
return button;
}
#pragma mark --- 有文字,有颜色,有字体,有图片,没有背景图片
+ (instancetype)buttonWithTitle:(NSString *)title titleColor:(UIColor *)titleColor font:(UIFont *)font imageName:(NSString *)imageName target:(id)target action:(SEL)action {
return [self buttonWithTitle:title titleColor:titleColor font:font imageName:imageName target:target action:action backImageName:nil];
}
#pragma mark --- 有文字,有颜色,有字体,没有图片,没有背景
+ (instancetype)buttonWithTitle:(NSString *)title titleColor:(UIColor *)titleColor font:(UIFont *)font target:(id)target action:(SEL)action {
return [self buttonWithTitle:title titleColor:titleColor font:font imageName:nil target:target action:action backImageName:nil];
}
#pragma mark --- 有文字,有颜色,有字体,没图片,有背景
+ (instancetype)buttonWithTitle:(NSString *)title titleColor:(UIColor *)titleColor font:(UIFont *)font target:(id)target action:(SEL)action backImageName:(NSString *)backImageName {
return [self buttonWithTitle:title titleColor:titleColor font:font imageName:nil target:target action:action backImageName:backImageName];
}
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Category/UIDevice+DeviceType.h
================================================
//
// UIDevice+DeviceType.h
// honeyshare
//
// Created by LLY on 14-11-14.
// Copyright (c) 2014年 意会信息科技. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface UIDevice (DeviceType)
/**
* 返回设备型号
*/
+ (NSString *)platformString;
/**
* 根据不同的设置返回不同的字体
*/
+(UIFont*)returnDifferentDeviceFont:(NSInteger)integer;
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Category/UIDevice+DeviceType.m
================================================
//
// UIDevice+DeviceType.m
// honeyshare
//
// Created by LLY on 14-11-14.
// Copyright (c) 2014年 意会信息科技. All rights reserved.
//
#import "UIDevice+DeviceType.h"
#include "sys/types.h"
#include "sys/sysctl.h"
#define Iphone6Plus [[UIDevice platformString] isEqualToString:@"iPhone 6 plus"]
#define Iphone6 [[UIDevice platformString] isEqualToString:@"iPhone 6"]
#define Iphone4 [[UIDevice platformString] isEqualToString:@"iPhone 4s"]
@implementation UIDevice (DeviceType)
+(NSString *)getDeviceVersion{
size_t size;
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *machine = (char*)malloc(size);
sysctlbyname("hw.machine", machine, &size, NULL, 0);
NSString *platform = [NSString stringWithCString:machine encoding:NSUTF8StringEncoding];
free(machine);
return platform;
}
+(NSString *)platformString{
NSString *platform = [self getDeviceVersion];
//iPhone
if (BXScreenW == 320 && BXScreenH == 480) {
return @"iPhone 4s";
}
if (BXScreenW == 320 && BXScreenH == 568) {
return @"iPhone 5s";
}
if (BXScreenW == 375 && BXScreenH == 667) {
return @"iPhone 6";
}
if (BXScreenW == 414 && BXScreenH == 736) {
return @"iPhone 6 plus";
}
//iPot Touch
if ([platform isEqualToString:@"iPod1,1"]) return@"iPod Touch 1G";
if ([platform isEqualToString:@"iPod2,1"]) return@"iPod Touch 2G";
if ([platform isEqualToString:@"iPod3,1"]) return@"iPod Touch 3G";
if ([platform isEqualToString:@"iPod4,1"]) return@"iPod Touch 4G";
if ([platform isEqualToString:@"iPod5,1"]) return@"iPod Touch 5G";
//iPad
if ([platform isEqualToString:@"iPad1,1"]) return@"iPad";
if ([platform isEqualToString:@"iPad2,1"]) return@"iPad 2 (WiFi)";
if ([platform isEqualToString:@"iPad2,2"]) return@"iPad 2 (GSM)";
if ([platform isEqualToString:@"iPad2,3"]) return@"iPad 2 (CDMA)";
if ([platform isEqualToString:@"iPad2,4"]) return@"iPad 2 New";
if ([platform isEqualToString:@"iPad2,5"]) return@"iPad Mini (WiFi)";
if ([platform isEqualToString:@"iPad3,1"]) return@"iPad 3 (WiFi)";
if ([platform isEqualToString:@"iPad3,2"]) return@"iPad 3 (CDMA)";
if ([platform isEqualToString:@"iPad3,3"]) return@"iPad 3 (GSM)";
if ([platform isEqualToString:@"iPad3,4"]) return@"iPad 4 (WiFi)";
if ([platform isEqualToString:@"i386"] ||
[platform isEqualToString:@"x86_64"]) return@"Simulator";
return platform;
}
+(UIFont *)returnDifferentDeviceFont:(NSInteger)integer{
if (Iphone6Plus) {
integer = integer+2;
}else if (Iphone6){
integer = integer+1;
}else if (Iphone4){
integer = integer;
}
UIFont *font = [UIFont systemFontOfSize:integer];
return font;
}
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Category/UIFont+Extension.h
================================================
//
// UIFont+Extension.h
// BXInsurenceBroker
//
// Created by JYJ on 16/2/23.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface UIFont (Extension)
/**
* 根据不同的设置返回不同的字体
*/
+ (UIFont *)fontWithDevice:(CGFloat)fontSize;
/**
* 导航栏根据不同的设置返回不同的字体
*/
+ (UIFont *)navItemFontWithDevice:(CGFloat)fontSize;
/**
* 根据两行文字设置返回不同的字体
*/
+ (UIFont *)fontWithTwoLine:(CGFloat)fontSize;
/**
* 保险页面cell字体
*/
+ (UIFont *)insuranceCellFont:(CGFloat)fontSize;
/**
* 专门为客户性别,年龄电话写的
*/
+ (UIFont *)fontWithCustomer:(CGFloat)fontSize;
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Category/UIFont+Extension.m
================================================
//
// UIFont+Extension.m
// BXInsurenceBroker
//
// Created by JYJ on 16/2/23.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import "UIFont+Extension.h"
@implementation UIFont (Extension)
+ (UIFont *)fontWithDevice:(CGFloat)fontSize {
if (BXScreenW > 375) {
fontSize = fontSize + 3;
}else if (BXScreenW == 375){
fontSize = fontSize + 1.5;
}else if (BXScreenW == 320){
fontSize = fontSize;
}
UIFont *font = [UIFont systemFontOfSize:fontSize];
return font;
}
/**
* 专门为客户性别,年龄电话写的
*/
+ (UIFont *)fontWithCustomer:(CGFloat)fontSize {
if (BXScreenW > 375) {
fontSize = fontSize + 2;
}else if (BXScreenW == 375){
fontSize = fontSize + 1.5;
}else if (BXScreenW == 320){
fontSize = fontSize;
}
UIFont *font = [UIFont systemFontOfSize:fontSize];
return font;
}
+ (UIFont *)navItemFontWithDevice:(CGFloat)fontSize {
if (BXScreenW > 375) {
fontSize = fontSize + 2;
}else if (BXScreenW == 375){
fontSize = fontSize + 1;
}else if (BXScreenW == 320){
fontSize = fontSize;
}
UIFont *font = [UIFont systemFontOfSize:fontSize];
return font;
}
+ (UIFont *)fontWithTwoLine:(CGFloat)fontSize {
if (BXScreenW > 375) {
fontSize = fontSize + 2;
}else if (BXScreenW == 375){
fontSize = fontSize + 1;
}else if (BXScreenW == 320){
fontSize = fontSize;
}
UIFont *font = [UIFont systemFontOfSize:fontSize];
return font;
}
+ (UIFont *)insuranceCellFont:(CGFloat)fontSize {
if (BXScreenW > 375) {
fontSize = fontSize + 3.5;
}else if (BXScreenW == 375){
fontSize = fontSize + 2;
}else if (BXScreenW == 320){
fontSize = fontSize;
}
UIFont *font = [UIFont systemFontOfSize:fontSize];
return font;
}
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Category/UIImage+Extension.h
================================================
//
// UIImage+Extension.h
// JYJ微博
//
// Created by JYJ on 15/3/11.
// Copyright (c) 2015年 JYJ. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface UIImage (Extension)
/**
* 返回拉伸图片
*/
+ (UIImage *)resizedImage:(NSString *)name;
/**
* 用颜色返回一张图片
*/
+ (UIImage *)createImageWithColor:(UIColor*) color;
/**
* 带边框的图片
*
* @param name 图片名字
* @param borderWidth 边框宽度
* @param borderColor 边框颜色
*/
+ (instancetype)circleImageWithName:(NSString *)name borderWidth:(CGFloat)borderWidth borderColor:(UIColor *)borderColor;
/**
* 带边框的图片
*
* @param name 图片
* @param borderWidth 边框宽度
* @param borderColor 边框颜色
*/
+ (instancetype)circleImageWithImage:(UIImage *)image borderWidth:(CGFloat)borderWidth borderColor:(UIColor *)borderColor;
/**
* 使用图像名创建图像视图
*
* @param imageName 图像名称
*
* @return UIImageView
*/
+ (instancetype)imageViewWithImageName:(NSString *)imageName;
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Category/UIImage+Extension.m
================================================
//
// UIImage+Extension.m
// JYJ微博
//
// Created by JYJ on 15/3/11.
// Copyright (c) 2015年 JYJ. All rights reserved.
//
#import "UIImage+Extension.h"
#import <objc/message.h>
@implementation UIImage (Extension)
+ (UIImage *)resizedImage:(NSString *)name {
UIImage *image = [UIImage imageNamed:name];
return [image stretchableImageWithLeftCapWidth:image.size.width * 0.5 topCapHeight:image.size.height * 0.5];
}
+ (UIImage *)createImageWithColor:(UIColor*) color {
CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [color CGColor]);
CGContextFillRect(context, rect);
UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return theImage;
}
/**
* 带边框的图片
*
* @param name 图片
* @param borderWidth 边框宽度
* @param borderColor 边框颜色
*/
+ (instancetype)circleImageWithImage:(UIImage *)image borderWidth:(CGFloat)borderWidth borderColor:(UIColor *)borderColor {
// 1.加载原图
UIImage *oldImage = image;
// 2.开启上下文
CGFloat imageW = oldImage.size.width + 2 * borderWidth;
CGFloat imageH = oldImage.size.height + 2 * borderWidth;
CGSize imageSize = CGSizeMake(imageW, imageH);
UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0.0);
// 3.取得当前的上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();
// 4.画边框(大圆)
[borderColor set];
CGFloat bigRadius = imageW * 0.5; // 大圆半径
CGFloat centerX = bigRadius; // 圆心
CGFloat centerY = bigRadius;
CGContextAddArc(ctx, centerX, centerY, bigRadius, 0, M_PI * 2, 0);
CGContextFillPath(ctx); // 画圆
// 5.小圆
CGFloat smallRadius = bigRadius - borderWidth;
CGContextAddArc(ctx, centerX, centerY, smallRadius, 0, M_PI * 2, 0);
// 裁剪(后面画的东西才会受裁剪的影响)
CGContextClip(ctx);
// 6.画图
[oldImage drawInRect:CGRectMake(borderWidth, borderWidth, oldImage.size.width, oldImage.size.height)];
// 7.取图
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
// 8.结束上下文
UIGraphicsEndImageContext();
return newImage;
}
+ (instancetype)circleImageWithName:(NSString *)name borderWidth:(CGFloat)borderWidth borderColor:(UIColor *)borderColor {
// 1.加载原图
UIImage *oldImage = [UIImage imageNamed:name];
// 2.开启上下文
CGFloat imageW = oldImage.size.width + 2 * borderWidth;
CGFloat imageH = oldImage.size.height + 2 * borderWidth;
CGSize imageSize = CGSizeMake(imageW, imageH);
UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0.0);
// 3.取得当前的上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();
// 4.画边框(大圆)
[borderColor set];
CGFloat bigRadius = imageW * 0.5; // 大圆半径
CGFloat centerX = bigRadius; // 圆心
CGFloat centerY = bigRadius;
CGContextAddArc(ctx, centerX, centerY, bigRadius, 0, M_PI * 2, 0);
CGContextFillPath(ctx); // 画圆
// 5.小圆
CGFloat smallRadius = bigRadius - borderWidth;
CGContextAddArc(ctx, centerX, centerY, smallRadius, 0, M_PI * 2, 0);
// 裁剪(后面画的东西才会受裁剪的影响)
CGContextClip(ctx);
// 6.画图
[oldImage drawInRect:CGRectMake(borderWidth, borderWidth, oldImage.size.width, oldImage.size.height)];
// 7.取图
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
// 8.结束上下文
UIGraphicsEndImageContext();
return newImage;
}
+ (instancetype)imageViewWithImageName:(NSString *)imageName {
return [[self alloc] initWithImage:[UIImage imageNamed:imageName]];
}
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Category/UIImage+ScreenShot.h
================================================
//
// UIImage+ScreenShot.h
// Weibo11
//
// Created by JYJ on 15/12/12.
// Copyright © 2015年 itheima. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface UIImage (ScreenShot)
/**
* 获取屏幕截图
*
* @return 屏幕截图图像
*/
+ (UIImage *)screenShot;
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Category/UIImage+ScreenShot.m
================================================
//
// UIImage+ScreenShot.m
// Weibo11
//
// Created by JYJ on 15/12/12.
// Copyright © 2015年 itheima. All rights reserved.
//
#import "UIImage+ScreenShot.h"
@implementation UIImage (ScreenShot)
/**
* 获取屏幕截图
*
* @return 屏幕截图图像
*/
+ (UIImage *)screenShot {
// 1. 获取到窗口
UIWindow *window = [UIApplication sharedApplication].keyWindow;
// 2. 开始上下文
UIGraphicsBeginImageContextWithOptions(window.bounds.size, YES, 0);
// 3. 将 window 中的内容绘制输出到当前上下文
[window drawViewHierarchyInRect:window.bounds afterScreenUpdates:NO];
// 4. 获取图片
UIImage *screenShot = UIGraphicsGetImageFromCurrentImageContext();
// 5. 关闭上下文
UIGraphicsEndImageContext();
return screenShot;
}
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Category/UILabel+Extension.h
================================================
//
// UILabel+Extension.h
// Weibo11
//
// Created by JYJ on 15/12/5.
// Copyright © 2015年 itheima. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface UILabel (Extension)
/**
* 创建 UILabel
*
* @param title 标题
* @param color 标题颜色
* @param fontSize 字体大小
*
* @return UILabel(文本水平居中)
*/
+ (instancetype)labelWithTitle:(NSString *)title color:(UIColor *)color fontSize:(CGFloat)fontSize;
/**
* 创建 UILabel
*
* @param title 标题
* @param color 标题颜色
* @param font 字体
*
* @return UILabel(文本水平居中)
*/
+ (instancetype)labelWithTitle:(NSString *)title color:(UIColor *)color font:(UIFont *)font;
/**
* 创建 UILabel
*
* @param title 标题
* @param color 标题颜色
* @param fontSize 字体大小
* @param alignment 对齐方式
*
* @return UILabel
*/
+ (instancetype)labelWithTitle:(NSString *)title color:(UIColor *)color fontSize:(CGFloat)fontSize alignment:(NSTextAlignment)alignment;
/**
* 创建 UILabel
*
* @param title 标题
* @param color 标题颜色
* @param font 字体
* @param alignment 对齐方式
*
* @return UILabel
*/
+ (instancetype)labelWithTitle:(NSString *)title color:(UIColor *)color font:(UIFont *)font alignment:(NSTextAlignment)alignment;
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Category/UILabel+Extension.m
================================================
//
// UILabel+Extension.m
// Weibo11
//
// Created by JYJ on 15/12/5.
// Copyright © 2015年 itheima. All rights reserved.
//
#import "UILabel+Extension.h"
@implementation UILabel (Extension)
+ (instancetype)labelWithTitle:(NSString *)title color:(UIColor *)color fontSize:(CGFloat)fontSize {
return [self labelWithTitle:title color:color fontSize:fontSize alignment:NSTextAlignmentCenter];
}
+ (instancetype)labelWithTitle:(NSString *)title color:(UIColor *)color fontSize:(CGFloat)fontSize alignment:(NSTextAlignment)alignment {
UILabel *label = [[UILabel alloc] init];
label.text = title;
label.textColor = color;
label.font = [UIFont systemFontOfSize:fontSize];
label.numberOfLines = 0;
label.textAlignment = alignment;
[label sizeToFit];
return label;
}
+ (instancetype)labelWithTitle:(NSString *)title color:(UIColor *)color font:(UIFont *)font {
return [self labelWithTitle:title color:color font:font alignment:NSTextAlignmentCenter];
}
+ (instancetype)labelWithTitle:(NSString *)title color:(UIColor *)color font:(UIFont *)font alignment:(NSTextAlignment)alignment {
UILabel *label = [[UILabel alloc] init];
label.text = title;
label.textColor = color;
label.font = font;
label.numberOfLines = 0;
label.textAlignment = alignment;
[label sizeToFit];
return label;
}
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Category/UIScreen+Extension.h
================================================
//
// UIScreen+Extension.h
// Weibo11
//
// Created by JYJ on 15/12/8.
// Copyright © 2015年 itheima. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface UIScreen (Extension)
+ (CGSize)ff_screenSize;
+ (BOOL)ff_isRetina;
+ (CGFloat)ff_scale;
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Category/UIScreen+Extension.m
================================================
//
// UIScreen+Extension.m
// Weibo11
//
// Created by JYJ on 15/12/8.
// Copyright © 2015年 itheima. All rights reserved.
//
#import "UIScreen+Extension.h"
@implementation UIScreen (Extension)
+ (CGSize)ff_screenSize {
return [UIScreen mainScreen].bounds.size;
}
+ (BOOL)ff_isRetina {
return [UIScreen ff_scale] >= 2;
}
+ (CGFloat)ff_scale {
return [UIScreen mainScreen].scale;
}
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Category/UITextControl+FaultTolerance.m
================================================
//
// UITextControl+FaultTolerance.m
// BaoXianDaiDai
//
// Created by linsihua on 16/4/5.
// Copyright © 2016年 baobeikeji.cn. All rights reserved.
//
#import <objc/message.h>
#import <objc/runtime.h>
@implementation UILabel (FaultTolerance)
+ (void)initialize {
// 获取到UILabel中setText对应的method
Method setText = class_getInstanceMethod([UILabel class], @selector(setText:));
Method setTextHooked = class_getInstanceMethod([UILabel class], @selector(setTextHooked:));
// 将目标函数的原实现绑定到setTextOriginal:方法上
IMP setTextImp = method_getImplementation(setText);
class_addMethod([UILabel class], @selector(setTextOriginal:), setTextImp, method_getTypeEncoding(setText));
// 然后用我们自己的函数的实现,替换目标函数对应的实现
IMP setTextHookedImp = method_getImplementation(setTextHooked);
class_replaceMethod([UILabel class], @selector(setText:), setTextHookedImp, method_getTypeEncoding(setText));
}
- (void)setTextHooked:(NSString *)text {
// 容错
if ([text isKindOfClass:[NSNumber class]]) {
NSNumber *number = (NSNumber *)text;
text = [NSString stringWithFormat:@"%zd", number.integerValue];
}
if (![text isKindOfClass:[NSString class]]) {
text = @"";
}
[self performSelector:@selector(setTextOriginal:) withObject:text];
}
@end
@implementation UITextView (FaultTolerance)
+ (void)initialize {
// 获取到UITextView中setText对应的method
Method setText = class_getInstanceMethod([UITextView class], @selector(setText:));
Method setTextHooked = class_getInstanceMethod([UITextView class], @selector(setTextHooked:));
// 将目标函数的原实现绑定到setTextOriginal:方法上
IMP setTextImp = method_getImplementation(setText);
class_addMethod([UITextView class], @selector(setTextOriginal:), setTextImp, method_getTypeEncoding(setText));
// 然后用我们自己的函数的实现,替换目标函数对应的实现
IMP setTextHookedImp = method_getImplementation(setTextHooked);
class_replaceMethod([UITextView class], @selector(setText:), setTextHookedImp, method_getTypeEncoding(setText));
}
- (void)setTextHooked:(NSString *)text {
// 容错
if ([text isKindOfClass:[NSNumber class]]) {
NSNumber *number = (NSNumber *)text;
text = [NSString stringWithFormat:@"%zd", number.integerValue];
}
if (![text isKindOfClass:[NSString class]]) {
text = @"";
}
[self performSelector:@selector(setTextOriginal:) withObject:text];
}
@end
@implementation UITextField (FaultTolerance)
+ (void)initialize {
// 获取到UITextField中setText对应的method
Method setText = class_getInstanceMethod([UITextField class], @selector(setText:));
Method setTextHooked = class_getInstanceMethod([UITextField class], @selector(setTextHooked:));
// 将目标函数的原实现绑定到setTextOriginal:方法上
IMP setTextImp = method_getImplementation(setText);
class_addMethod([UITextField class], @selector(setTextOriginal:), setTextImp, method_getTypeEncoding(setText));
// 然后用我们自己的函数的实现,替换目标函数对应的实现
IMP setTextHookedImp = method_getImplementation(setTextHooked);
class_replaceMethod([UITextField class], @selector(setText:), setTextHookedImp, method_getTypeEncoding(setText));
}
- (void)setTextHooked:(NSString *)text {
// 容错
if ([text isKindOfClass:[NSNumber class]]) {
NSNumber *number = (NSNumber *)text;
text = [NSString stringWithFormat:@"%zd", number.integerValue];
}
if (![text isKindOfClass:[NSString class]]) {
text = @"";
}
[self performSelector:@selector(setTextOriginal:) withObject:text];
}
@end
@implementation UIButton (FaultTolerance)
+ (void)initialize {
// 获取到UITextField中setText对应的method
Method setTitleForState = class_getInstanceMethod([UIButton class], @selector(setTitle:forState:));
Method setTitleForStateHooked = class_getInstanceMethod([UIButton class], @selector(setTitle:forStateHooked:));
// 将目标函数的原实现绑定到setTitle:forStateOriginal:方法上
IMP setTitleForStateImp = method_getImplementation(setTitleForState);
class_addMethod([UIButton class], @selector(setTitle:forStateOriginal:), setTitleForStateImp, method_getTypeEncoding(setTitleForState));
// 然后用我们自己的函数的实现,替换目标函数对应的实现
IMP setTitleForStateHookedImp = method_getImplementation(setTitleForStateHooked);
class_replaceMethod([UIButton class], @selector(setTitle:forState:), setTitleForStateHookedImp, method_getTypeEncoding(setTitleForState));
}
- (void)setTitle:(NSString *)title forStateHooked:(UIControlState)state {
// 容错
if ([title isKindOfClass:[NSNumber class]]) {
NSNumber *number = (NSNumber *)title;
title = [NSString stringWithFormat:@"%zd", number.integerValue];
}
if (![title isKindOfClass:[NSString class]]) {
title = @"";
}
typedef void (*BXMsgSend)(id, SEL, NSString *, UIControlState);
BXMsgSend msgSend = (BXMsgSend)objc_msgSend;
msgSend(self, @selector(setTitle:forStateOriginal:), title, state);
}
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Category/UIView+Extension.h
================================================
//
// UIView+Extension.h
// 01-黑酷
//
// Created by apple on 14-6-27.
// Copyright (c) 2014年 heima. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface UIView (Extension)
@property (nonatomic, assign) CGFloat x;
@property (nonatomic, assign) CGFloat y;
@property (nonatomic, assign) CGFloat width;
@property (nonatomic, assign) CGFloat height;
@property (nonatomic, assign) CGSize size;
@property (nonatomic, assign) CGPoint origin;
@property (nonatomic, assign) CGFloat centerX;
@property (nonatomic, assign) CGFloat centerY;
/**
* 9.上 < Shortcut for frame.origin.y
*/
@property (nonatomic) CGFloat top;
/**
* 10.下 < Shortcut for frame.origin.y + frame.size.height
*/
@property (nonatomic) CGFloat bottom;
/**
* 11.左 < Shortcut for frame.origin.x.
*/
@property (nonatomic) CGFloat left;
/**
* 12.右 < Shortcut for frame.origin.x + frame.size.width
*/
@property (nonatomic) CGFloat right;
- (void)addTarget:(id)target action:(SEL)action;
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Category/UIView+Extension.m
================================================
//
// UIView+Extension.m
// 01-黑酷
//
// Created by apple on 14-6-27.
// Copyright (c) 2014年 heima. All rights reserved.
//
#import "UIView+Extension.h"
@implementation UIView (Extension)
- (void)setX:(CGFloat)x {
CGRect frame = self.frame;
frame.origin.x = x;
self.frame = frame;
}
- (CGFloat)x {
return self.frame.origin.x;
}
- (void)setY:(CGFloat)y {
CGRect frame = self.frame;
frame.origin.y = y;
self.frame = frame;
}
- (CGFloat)y {
return self.frame.origin.y;
}
- (void)setWidth:(CGFloat)width {
CGRect frame = self.frame;
frame.size.width = width;
self.frame = frame;
}
- (CGFloat)width {
return self.frame.size.width;
}
- (void)setHeight:(CGFloat)height {
CGRect frame = self.frame;
frame.size.height = height;
self.frame = frame;
}
- (CGFloat)height {
return self.frame.size.height;
}
- (void)setSize:(CGSize)size {
// self.width = size.width;
// self.height = size.height;
CGRect frame = self.frame;
frame.size = size;
self.frame = frame;
}
- (CGSize)size {
return self.frame.size;
}
- (void)setOrigin:(CGPoint)origin {
CGRect frame = self.frame;
frame.origin = origin;
self.frame = frame;
}
- (CGPoint)origin {
return self.frame.origin;
}
- (void)setCenterX:(CGFloat)centerX {
CGPoint center = self.center;
center.x = centerX;
self.center = center;
}
- (CGFloat)centerX {
return self.center.x;
}
- (void)setCenterY:(CGFloat)centerY {
CGPoint center = self.center;
center.y = centerY;
self.center = center;
}
- (CGFloat)centerY {
return self.center.y;
}
- (CGFloat)left {
return self.frame.origin.x;
}
- (void)setLeft:(CGFloat)x {
CGRect frame = self.frame;
frame.origin.x = x;
self.frame = frame;
}
- (CGFloat)top {
return self.frame.origin.y;
}
- (void)setTop:(CGFloat)y {
CGRect frame = self.frame;
frame.origin.y = y;
self.frame = frame;
}
- (CGFloat)right {
return self.frame.origin.x + self.frame.size.width;
}
- (void)setRight:(CGFloat)right {
CGRect frame = self.frame;
frame.origin.x = right - frame.size.width;
self.frame = frame;
}
- (CGFloat)bottom {
return self.frame.origin.y + self.frame.size.height;
}
- (void)setBottom:(CGFloat)bottom {
CGRect frame = self.frame;
frame.origin.y = bottom - frame.size.height;
self.frame = frame;
}
- (void)addTarget:(id)target action:(SEL)action;
{
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:target
action:action];
self.userInteractionEnabled = YES;
[self addGestureRecognizer:tap];
}
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Category/UIView+IBExtension.h
================================================
//
// UIView+IBExtension.h
// Weibo11
//
// Created by JYJ on 15/12/6.
// Copyright © 2015年 itheima. All rights reserved.
//
#import <UIKit/UIKit.h>
IB_DESIGNABLE
@interface UIView (IBExtension)
/// 边线颜色
@property (nonatomic, strong) IBInspectable UIColor *borderColor;
/// 边线宽度
@property (nonatomic, assign) IBInspectable CGFloat borderWidth;
/// 脚半径
@property (nonatomic, assign) IBInspectable CGFloat cornerRadius;
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Category/UIView+IBExtension.m
================================================
//
// UIView+IBExtension.m
// Weibo11
//
// Created by JYJ on 15/12/6.
// Copyright © 2015年 itheima. All rights reserved.
//
#import "UIView+IBExtension.h"
@implementation UIView (IBExtension)
- (void)setBorderColor:(UIColor *)borderColor {
self.layer.borderColor = borderColor.CGColor;
}
- (UIColor *)borderColor {
return [UIColor colorWithCGColor:self.layer.borderColor];
}
- (void)setBorderWidth:(CGFloat)borderWidth {
self.layer.borderWidth = borderWidth;
}
- (CGFloat)borderWidth {
return self.layer.borderWidth;
}
- (void)setCornerRadius:(CGFloat)cornerRadius {
self.layer.cornerRadius = cornerRadius;
self.layer.masksToBounds = YES;
// 栅格化 - 提高性能
// 设置栅格化后,图层会被渲染成图片,并且缓存,再次使用时,不会重新渲染
self.layer.rasterizationScale = UIScreen.ff_scale;
self.layer.shouldRasterize = YES;
}
- (CGFloat)cornerRadius {
return self.layer.cornerRadius;
}
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Category/UIView+Runtime.h
================================================
//
// UIView+Runtime.h
// Weibo11
//
// Created by JYJ on 15/12/12.
// Copyright © 2015年 itheima. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface UIView (Runtime)
/// 查找子视图
///
/// @param view 要查找的视图
/// @param clazzName 子控件类名
///
/// @return 找到的第一个子视图
+ (UIView *)ff_firstInView:(UIView *)view clazzName:(NSString *)clazzName;
/// TODO: 可以抽取到 NSObject 分类中国年
/// 遍历当前视图的成员变量 - 仅供测试使用
- (void)ff_ivarsList;
// 提示,此处打断点,在控制台输入 po [self.pageControl ff_ivarsList] 可以查看所有成员变量
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Category/UIView+Runtime.m
================================================
//
// UIView+Runtime.m
// Weibo11
//
// Created by JYJ on 15/12/12.
// Copyright © 2015年 itheima. All rights reserved.
//
#import "UIView+Runtime.h"
#import <objc/runtime.h>
@implementation UIView (Runtime)
/// 查找视图 KEY
const char *FF_FIND_VIEW_KEY;
#pragma mark - 查找子视图
+ (UIView *)findView {
return objc_getAssociatedObject(self, FF_FIND_VIEW_KEY);
}
+ (void)setFindView:(UIView *)findView {
objc_setAssociatedObject(self, FF_FIND_VIEW_KEY, findView, OBJC_ASSOCIATION_ASSIGN);
}
+ (UIView *)ff_firstInView:(UIView *)view clazzName:(NSString *)clazzName {
// 递归出口
if ([self.findView isKindOfClass:NSClassFromString(clazzName)]) {
return self.findView;
}
// 遍历所有子视图
for (UIView *subView in view.subviews) {
// 如果是要查找的类,记录并且返回
if ([subView isKindOfClass:NSClassFromString(clazzName)]) {
self.findView = subView;
break;
} else {
// 使用子视图递归调用
[self ff_firstInView:subView clazzName:clazzName];
}
}
return self.findView;
}
#pragma mark - 遍历当前视图的内部细节 - 仅供测试使用
/// 遍历当前视图的成员变量 - 仅供测试使用
- (void)ff_ivarsList {
uint32_t count = 0;
// 获取成员变量列表
Ivar *ivars = class_copyIvarList(self.class, &count);
for (UInt32 i = 0; i < count; ++i) {
Ivar ivar = ivars[i];
const char *cName = ivar_getName(ivar);
NSString *name = [[NSString alloc] initWithUTF8String:cName];
NSLog(@"%@", name);
}
// 释放成员变量列表
free(ivars);
}
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Controller/DataViewController.h
================================================
//
// DataViewController.h
// IrregularTabBar
//
// Created by JYJ on 16/5/3.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface DataViewController : UIViewController
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Controller/DataViewController.m
================================================
//
// DataViewController.m
// IrregularTabBar
//
// Created by JYJ on 16/5/3.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import "DataViewController.h"
@interface DataViewController ()
@end
@implementation DataViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
/*
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Controller/HomeViewController.h
================================================
//
// HomeViewController.h
// IrregularTabBar
//
// Created by JYJ on 16/5/3.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface HomeViewController : UITableViewController
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Controller/HomeViewController.m
================================================
//
// HomeViewController.m
// IrregularTabBar
//
// Created by JYJ on 16/5/3.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import "HomeViewController.h"
#import "NewViewController.h"
@interface HomeViewController ()
@end
@implementation HomeViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
UIButton *push = [[UIButton alloc] init];
push.frame = CGRectMake(100, 100, 100, 100);
push.backgroundColor = [UIColor redColor];
[push addTarget:self action:@selector(pushvC)];
[self.view addSubview:push];
self.tabBarItem.badgeValue = @"1";
if (@available(iOS 11.0, *)) {
self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 49, 0);
}
}
- (void)pushvC {
NewViewController *new = [[NewViewController alloc] init];
[self.navigationController pushViewController:new animated:YES];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark - Table view data source
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 20;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *ID = @"homeCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];
}
cell.textLabel.text = [NSString stringWithFormat:@"home -- %zd", indexPath.row];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
self.tabBarController.selectedIndex = 4;
}
/*
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Controller/InsuranceViewController.h
================================================
//
// InsuranceViewController.h
// IrregularTabBar
//
// Created by JYJ on 16/5/3.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface InsuranceViewController : UIViewController
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Controller/InsuranceViewController.m
================================================
//
// InsuranceViewController.m
// IrregularTabBar
//
// Created by JYJ on 16/5/3.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import "InsuranceViewController.h"
@interface InsuranceViewController ()
@end
@implementation InsuranceViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
/*
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Controller/NewViewController.h
================================================
//
// NewViewController.h
// IrregularTabBar
//
// Created by JYJ on 16/5/3.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface NewViewController : UITableViewController
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Controller/NewViewController.m
================================================
//
// NewViewController.m
// IrregularTabBar
//
// Created by JYJ on 16/5/3.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import "NewViewController.h"
@interface NewViewController ()
@end
@implementation NewViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
UIButton *push = [[UIButton alloc] init];
push.frame = CGRectMake(100, 100, 100, 100);
push.backgroundColor = [UIColor redColor];
[push addTarget:self action:@selector(pushvC)];
[self.view addSubview:push];
self.tabBarItem.badgeValue = @"89";
if (@available(iOS 11.0, *)) {
self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 49, 0);
}
}
- (void)pushvC {
NewViewController *new = [[NewViewController alloc] init];
[self.navigationController pushViewController:new animated:YES];
}
#pragma mark - Table view data source
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 20;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *ID = @"newCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];
}
cell.textLabel.text = [NSString stringWithFormat:@"new -- %zd", indexPath.row];
return cell;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
/*
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Controller/ProfileViewController.h
================================================
//
// ProfileViewController.h
// IrregularTabBar
//
// Created by JYJ on 16/5/3.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface ProfileViewController : UIViewController
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Controller/ProfileViewController.m
================================================
//
// ProfileViewController.m
// IrregularTabBar
//
// Created by JYJ on 16/5/3.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import "ProfileViewController.h"
@interface ProfileViewController ()
@end
@implementation ProfileViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
UIButton *push = [[UIButton alloc] init];
push.frame = CGRectMake(100, 100, 100, 100);
push.backgroundColor = [UIColor redColor];
[push addTarget:self action:@selector(pushvC)];
[self.view addSubview:push];
}
- (void)pushvC {
UIViewController *vc = [[UIViewController alloc] init];
vc.view.backgroundColor = [UIColor grayColor];
[self.navigationController pushViewController:vc animated:YES];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
/*
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
</array>
</dict>
</plist>
================================================
FILE: IrregularTabBar/IrregularTabBar/Main/BXNavigationController.h
================================================
//
// BXNavigationController.h
// BaoXianDaiDai
//
// Created by JYJ on 15/5/28.
// Copyright (c) 2015年 baobeikeji.cn. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface BXNavigationController : UINavigationController
@property (nonatomic, strong) id popDelegate;
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Main/BXNavigationController.m
================================================
//
// BXNavigationController.m
// BaoXianDaiDai
//
// Created by JYJ on 15/5/28.
// Copyright (c) 2015年 baobeikeji.cn. All rights reserved.
//
#import "BXNavigationController.h"
@interface BXNavigationController () <UINavigationControllerDelegate>
//@property (nonatomic, strong) id popDelegate;
@end
@implementation BXNavigationController
+ (void)initialize {
// 设置UIUINavigationBar的主题
[self setupNavigationBarTheme];
}
- (void)viewDidLoad {
[super viewDidLoad];
self.popDelegate = self.interactivePopGestureRecognizer.delegate;
self.delegate = self;
}
/**
* 设置UIBarButtonItem的主题
*/
+ (void)setupNavigationBarTheme {
// 通过appearance对象能修改整个项目中所有UIBarbuttonItem的样式
UINavigationBar *appearance = [UINavigationBar appearance];
// 1.设置导航条的背景
[appearance setBackgroundImage:[UIImage createImageWithColor:The_MainColor] forBarMetrics:UIBarMetricsDefault];
// 设置文字
NSMutableDictionary *att = [NSMutableDictionary dictionary];
att[NSFontAttributeName] = [UIFont systemFontOfSize:20];
att[NSForegroundColorAttributeName] = [UIColor whiteColor];
[appearance setTitleTextAttributes:att];
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
}
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated {
if (self.viewControllers.count > 0) {// 如果现在push的不是栈底控制器(最先push进来的那个控制器)
viewController.hidesBottomBarWhenPushed = YES;
UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
negativeSpacer.width = -5;
//设置导航栏的按钮
UIBarButtonItem *backButton = [UIBarButtonItem itemWithImageName:@"navigationbar_back_image" highImageName:@"navigationbar_back_image" target:self action:@selector(back)];
viewController.navigationItem.leftBarButtonItems = @[negativeSpacer, backButton];
// 就有滑动返回功能
self.interactivePopGestureRecognizer.delegate = nil;
}
[super pushViewController:viewController animated:animated];
}
//// 完全展示完调用
//- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
// // 如果展示的控制器是根控制器,就还原pop手势代理
// if (viewController == [self.viewControllers firstObject]) {
// self.interactivePopGestureRecognizer.delegate = self.popDelegate;
// }
//}
- (void)back {
[self popViewControllerAnimated:YES];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Main/BXTabBarController.h
================================================
//
// BXTabBarController.h
// BaoXianDaiDai
//
// Created by JYJ on 15/5/28.
// Copyright (c) 2015年 baobeikeji.cn. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface BXTabBarController : UITabBarController
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/Main/BXTabBarController.m
================================================
//
// BXTabBarController.m
// BaoXianDaiDai
//
// Created by JYJ on 15/5/28.
// Copyright (c) 2015年 baobeikeji.cn. All rights reserved.
//
#import "BXTabBarController.h"
#import "BXNavigationController.h"
#import "HomeViewController.h"
#import "NewViewController.h"
#import "InsuranceViewController.h"
#import "DataViewController.h"
#import "ProfileViewController.h"
#import "BXTabBar.h"
#define kTabbarHeight ([UIScreen mainScreen].bounds.size.height == 812 ? (BXDangerousAreaH + 49) : 49)
@interface BXTabBarController ()<UITabBarControllerDelegate, UINavigationControllerDelegate, BXTabBarDelegate>
@property (nonatomic, assign) NSInteger lastSelectIndex;
@property (nonatomic, strong) UIView *redPoint;
/** view */
@property (nonatomic, strong) BXTabBar *mytabbar;
@property (nonatomic, strong) id popDelegate;
/** 保存所有控制器对应按钮的内容(UITabBarItem)*/
@property (nonatomic, strong) NSMutableArray *items;
@end
@implementation BXTabBarController
+ (void)initialize {
// 设置tabbarItem的普通文字
NSMutableDictionary *textAttrs = [NSMutableDictionary dictionary];
textAttrs[NSForegroundColorAttributeName] = [[UIColor alloc]initWithRed:113/255.0 green:109/255.0 blue:104/255.0 alpha:1];
textAttrs[NSFontAttributeName] = [UIFont systemFontOfSize:10];
//设置tabBarItem的选中文字颜色
NSMutableDictionary *selectedTextAttrs = [NSMutableDictionary dictionary];
selectedTextAttrs[NSForegroundColorAttributeName] = BXColor(51, 135, 255);
UITabBarItem *item = [UITabBarItem appearance];
[item setTitleTextAttributes:textAttrs forState:UIControlStateNormal];
[item setTitleTextAttributes:selectedTextAttrs forState:UIControlStateSelected];
}
- (NSMutableArray *)items {
if (_items == nil) {
_items = [NSMutableArray array];
}
return _items;
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
self.tabBar.hidden = YES;
// 把系统的tabBar上的按钮干掉
[self.tabBar removeFromSuperview];
// 把系统的tabBar上的按钮干掉
for (UIView *childView in self.tabBar.subviews) {
if (![childView isKindOfClass:[BXTabBar class]]) {
[childView removeFromSuperview];
}
}
}
- (void)viewDidLoad {
[super viewDidLoad];
self.delegate = self;
// 添加所有子控制器
[self addAllChildVc];
// 自定义tabBar
[self setUpTabBar];
// 设置选中一定要在设置完tabBar以后, 默认选中第0个
// self.selectedIndex = 0;
}
#pragma mark - 自定义tabBar
- (void)setUpTabBar {
BXTabBar *tabBar = [[BXTabBar alloc] init];
// 存储UITabBarItem
tabBar.items = self.items;
tabBar.delegate = self;
if (iPhoneX) {
tabBar.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"tab_backgroundX"]];
} else {
tabBar.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"tab_background"]];
}
// tabBar.frame = self.tabBar.frame;
tabBar.frame = CGRectMake(0, BXScreenH - kTabbarHeight, BXScreenW, kTabbarHeight);
[self.view addSubview:tabBar];
self.mytabbar = tabBar;
}
/**
* 添加所有的子控制器
*/
- (void)addAllChildVc {
// 添加初始化子控制器 BXHomeViewController
HomeViewController *home = [[HomeViewController alloc] init];
[self addOneChildVC:home title:@"首页" imageName:@"tabBar_icon_schedule_default" selectedImageName:@"tabBar_icon_schedule"];
NewViewController *customer = [[NewViewController alloc] init];
customer.tabBarItem.badgeValue = @"100";
[self addOneChildVC:customer title:@"新闻" imageName:@"tabBar_icon_customer_default" selectedImageName:@"tabBar_icon_customer"];
InsuranceViewController *insurance = [[InsuranceViewController alloc] init];
[self addOneChildVC:insurance title:@"上传证件" imageName:@"tab_camera" selectedImageName:@"tab_camera"];
insurance.view.backgroundColor = BXRandomColor;
DataViewController *compare = [[DataViewController alloc] init];
[self addOneChildVC:compare title:@"发现" imageName:@"tabBar_icon_contrast_default" selectedImageName:@"tabBar_icon_contrast"];
compare.view.backgroundColor = BXRandomColor;
ProfileViewController *profile = [[ProfileViewController alloc]init];
[self addOneChildVC:profile title:@"我的" imageName:@"tabBar_icon_mine_default" selectedImageName:@"tabBar_icon_mine"];
profile.view.backgroundColor = BXRandomColor;
}
/**
* 添加一个自控制器
*
* @param childVc 子控制器对象
* @param title 标题
* @param imageName 图标
* @param selectedImageName 选中时的图标
*/
- (void)addOneChildVC:(UIViewController *)childVc title:(NSString *)title imageName:(NSString *)imageName selectedImageName:(NSString *)selectedImageName {
// 设置标题
childVc.tabBarItem.title = title;
// 设置图标
childVc.tabBarItem.image = [UIImage imageNamed:imageName];
// 设置选中的图标
UIImage *selectedImage = [UIImage imageNamed:selectedImageName];
// 不要渲染
selectedImage = [selectedImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
childVc.tabBarItem.selectedImage = selectedImage;
// 记录所有控制器对应按钮的内容
[self.items addObject:childVc.tabBarItem];
// 添加为tabbar控制器的子控制器
BXNavigationController *nav = [[BXNavigationController alloc] initWithRootViewController:childVc];
nav.delegate = self;
[self addChildViewController:nav];
}
#pragma mark - BXTabBarDelegate方法
// 监听tabBar上按钮的点击
- (void)tabBar:(BXTabBar *)tabBar didClickBtn:(NSInteger)index
{
[super setSelectedIndex:index];
}
/**
* 让myTabBar选中对应的按钮
*/
- (void)setSelectedIndex:(NSUInteger)selectedIndex {
// 通过mytabbar的通知处理页面切换
self.mytabbar.seletedIndex = selectedIndex;
}
#pragma mark navVC代理
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
UIViewController *root = navigationController.viewControllers.firstObject;
self.tabBar.hidden = YES;
if (viewController != root) {
// if (navigationController.viewControllers.count > 2) return;
//从HomeViewController移除
[self.mytabbar removeFromSuperview];
// 调整tabbar的Y值
CGRect dockFrame = self.mytabbar.frame;
dockFrame.origin.y = root.view.frame.size.height - kTabbarHeight;
if ([root.view isKindOfClass:[UIScrollView class]]) { // 根控制器的view是能滚动
UIScrollView *scrollview = (UIScrollView *)root.view;
dockFrame.origin.y += scrollview.contentOffset.y;
}
self.mytabbar.frame = dockFrame;
// 添加dock到根控制器界面
[root.view addSubview:self.mytabbar];
}
}
// 完全展示完调用
-(void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
UIViewController *root = navigationController.viewControllers.firstObject;
BXNavigationController *nav = (BXNavigationController *)navigationController;
if (viewController == root) {
// 更改导航控制器view的frame
// navigationController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - kTabbarHeight);
navigationController.interactivePopGestureRecognizer.delegate = nav.popDelegate;
// 让Dock从root上移除
[_mytabbar removeFromSuperview];
//_mytabbar添加dock到HomeViewController
// _mytabbar.frame = self.tabBar.frame;
_mytabbar.frame = CGRectMake(0, BXScreenH - kTabbarHeight, BXScreenW, kTabbarHeight);
[self.view addSubview:_mytabbar];
}
}
@end
================================================
FILE: IrregularTabBar/IrregularTabBar/PrefixHeader.pch
================================================
//
// PrefixHeader.pch
// BXInsureceBroker
//
// Created by JYJ on 16/2/19.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#ifndef PrefixHeader_pch
#define PrefixHeader_pch
#ifdef __OBJC__
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#pragma mark - 头文件
#import "BXExtensions.h"
//#import "BXConst.h"
#endif
/**
* 弱引用
*/
#define BXWeakSelf __weak typeof(self) weakSelf = self;
#define BXNoteCenter [NSNotificationCenter defaultCenter]
#define BXScreenH [UIScreen mainScreen].bounds.size.height
#define BXScreenW [UIScreen mainScreen].bounds.size.width
#define BXScreenBounds [UIScreen mainScreen].bounds
#define BXKeyWindow [UIApplication sharedApplication].keyWindow
// 随机色
#define BXRandomColor BXColor(arc4random_uniform(256), arc4random_uniform(256), arc4random_uniform(256))
// 设置颜色
#define BXColor(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1.0]
#define BXAlphaColor(r, g, b, a) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:a]
//保单显示文字颜色
#define The_Prompt_Color_Nine [[UIColor alloc]initWithRed:153/255.0 green:153/255.0 blue:153/255.0 alpha:1]
#define The_Prompt_Color_Six [[UIColor alloc]initWithRed:102/255.0 green:102/255.0 blue:102/255.0 alpha:1]
#define The_Prompt_Color_Three [[UIColor alloc]initWithRed:51/255.0 green:51/255.0 blue:51/255.0 alpha:1]
// 是否为iPhoneX
#define iPhoneX ([UIScreen mainScreen].bounds.size.height == 812)
#define BXDangerousAreaH 34
#define The_MainColor BXColor(51, 153, 255)
#define BXGlobalBg BXColor(242, 242, 242)
// 自定义log
#ifdef DEBUG
#define BXLog(...) NSLog(@"%s %d \n %@\n\n",__func__,__LINE__,[NSString stringWithFormat:__VA_ARGS__])
#else
#define BXLog(...)
#endif
#endif /* PrefixHeader_pch */
================================================
FILE: IrregularTabBar/IrregularTabBar/main.m
================================================
//
// main.m
// IrregularTabBar
//
// Created by JYJ on 16/5/3.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main(int argc, char * argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
================================================
FILE: IrregularTabBar/IrregularTabBar.xcodeproj/project.pbxproj
================================================
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
E2150EE71CD87DA8008EA3DD /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = E2150EE61CD87DA8008EA3DD /* main.m */; };
E2150EEA1CD87DA8008EA3DD /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = E2150EE91CD87DA8008EA3DD /* AppDelegate.m */; };
E2150EF21CD87DA8008EA3DD /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E2150EF11CD87DA8008EA3DD /* Assets.xcassets */; };
E2150F331CD88051008EA3DD /* Foundation+Log.m in Sources */ = {isa = PBXBuildFile; fileRef = E2150F131CD88051008EA3DD /* Foundation+Log.m */; };
E2150F341CD88051008EA3DD /* NSDate+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = E2150F151CD88051008EA3DD /* NSDate+Extension.m */; };
E2150F351CD88051008EA3DD /* NSDictionary+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = E2150F171CD88051008EA3DD /* NSDictionary+Extension.m */; };
E2150F361CD88051008EA3DD /* NSString+BXExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = E2150F191CD88051008EA3DD /* NSString+BXExtension.m */; };
E2150F371CD88051008EA3DD /* UIApplication+Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = E2150F1B1CD88051008EA3DD /* UIApplication+Extensions.m */; };
E2150F381CD88051008EA3DD /* UIBarButtonItem+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = E2150F1D1CD88051008EA3DD /* UIBarButtonItem+Extension.m */; };
E2150F391CD88051008EA3DD /* UIButton+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = E2150F1F1CD88051008EA3DD /* UIButton+Extension.m */; };
E2150F3A1CD88051008EA3DD /* UIDevice+DeviceType.m in Sources */ = {isa = PBXBuildFile; fileRef = E2150F211CD88051008EA3DD /* UIDevice+DeviceType.m */; };
E2150F3B1CD88051008EA3DD /* UIFont+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = E2150F231CD88051008EA3DD /* UIFont+Extension.m */; };
E2150F3C1CD88051008EA3DD /* UIImage+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = E2150F251CD88051008EA3DD /* UIImage+Extension.m */; };
E2150F3D1CD88051008EA3DD /* UIImage+ScreenShot.m in Sources */ = {isa = PBXBuildFile; fileRef = E2150F271CD88051008EA3DD /* UIImage+ScreenShot.m */; };
E2150F3E1CD88051008EA3DD /* UILabel+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = E2150F291CD88051008EA3DD /* UILabel+Extension.m */; };
E2150F3F1CD88051008EA3DD /* UIScreen+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = E2150F2B1CD88051008EA3DD /* UIScreen+Extension.m */; };
E2150F401CD88051008EA3DD /* UITextControl+FaultTolerance.m in Sources */ = {isa = PBXBuildFile; fileRef = E2150F2C1CD88051008EA3DD /* UITextControl+FaultTolerance.m */; };
E2150F411CD88051008EA3DD /* UIView+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = E2150F2E1CD88051008EA3DD /* UIView+Extension.m */; };
E2150F421CD88051008EA3DD /* UIView+IBExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = E2150F301CD88051008EA3DD /* UIView+IBExtension.m */; };
E2150F431CD88051008EA3DD /* UIView+Runtime.m in Sources */ = {isa = PBXBuildFile; fileRef = E2150F321CD88051008EA3DD /* UIView+Runtime.m */; };
E23264F31CD9A8A300387601 /* BXTabBar.m in Sources */ = {isa = PBXBuildFile; fileRef = E23264DE1CD9A8A300387601 /* BXTabBar.m */; };
E23264F41CD9A8A300387601 /* BXTabBarBigButton.m in Sources */ = {isa = PBXBuildFile; fileRef = E23264E01CD9A8A300387601 /* BXTabBarBigButton.m */; };
E23264F51CD9A8A300387601 /* BXTabBarButton.m in Sources */ = {isa = PBXBuildFile; fileRef = E23264E21CD9A8A300387601 /* BXTabBarButton.m */; };
E23264F61CD9A8A300387601 /* DataViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E23264E51CD9A8A300387601 /* DataViewController.m */; };
E23264F71CD9A8A300387601 /* HomeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E23264E71CD9A8A300387601 /* HomeViewController.m */; };
E23264F81CD9A8A300387601 /* InsuranceViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E23264E91CD9A8A300387601 /* InsuranceViewController.m */; };
E23264F91CD9A8A300387601 /* NewViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E23264EB1CD9A8A300387601 /* NewViewController.m */; };
E23264FA1CD9A8A300387601 /* ProfileViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E23264ED1CD9A8A300387601 /* ProfileViewController.m */; };
E23264FB1CD9A8A300387601 /* BXNavigationController.m in Sources */ = {isa = PBXBuildFile; fileRef = E23264F01CD9A8A300387601 /* BXNavigationController.m */; };
E23264FC1CD9A8A300387601 /* BXTabBarController.m in Sources */ = {isa = PBXBuildFile; fileRef = E23264F21CD9A8A300387601 /* BXTabBarController.m */; };
E2C3A1A71CFD9BEF00106209 /* BXBadgeView.m in Sources */ = {isa = PBXBuildFile; fileRef = E2C3A1A61CFD9BEF00106209 /* BXBadgeView.m */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
E2150EE21CD87DA8008EA3DD /* IrregularTabBar.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = IrregularTabBar.app; sourceTree = BUILT_PRODUCTS_DIR; };
E2150EE61CD87DA8008EA3DD /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
E2150EE81CD87DA8008EA3DD /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
E2150EE91CD87DA8008EA3DD /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
E2150EF11CD87DA8008EA3DD /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
E2150EF61CD87DA8008EA3DD /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
E2150F121CD88051008EA3DD /* BXExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BXExtensions.h; sourceTree = "<group>"; };
E2150F131CD88051008EA3DD /* Foundation+Log.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "Foundation+Log.m"; sourceTree = "<group>"; };
E2150F141CD88051008EA3DD /* NSDate+Extension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDate+Extension.h"; sourceTree = "<group>"; };
E2150F151CD88051008EA3DD /* NSDate+Extension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDate+Extension.m"; sourceTree = "<group>"; };
E2150F161CD88051008EA3DD /* NSDictionary+Extension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDictionary+Extension.h"; sourceTree = "<group>"; };
E2150F171CD88051008EA3DD /* NSDictionary+Extension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDictionary+Extension.m"; sourceTree = "<group>"; };
E2150F181CD88051008EA3DD /* NSString+BXExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+BXExtension.h"; sourceTree = "<group>"; };
E2150F191CD88051008EA3DD /* NSString+BXExtension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+BXExtension.m"; sourceTree = "<group>"; };
E2150F1A1CD88051008EA3DD /* UIApplication+Extensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIApplication+Extensions.h"; sourceTree = "<group>"; };
E2150F1B1CD88051008EA3DD /* UIApplication+Extensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIApplication+Extensions.m"; sourceTree = "<group>"; };
E2150F1C1CD88051008EA3DD /* UIBarButtonItem+Extension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIBarButtonItem+Extension.h"; sourceTree = "<group>"; };
E2150F1D1CD88051008EA3DD /* UIBarButtonItem+Extension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIBarButtonItem+Extension.m"; sourceTree = "<group>"; };
E2150F1E1CD88051008EA3DD /* UIButton+Extension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIButton+Extension.h"; sourceTree = "<group>"; };
E2150F1F1CD88051008EA3DD /* UIButton+Extension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIButton+Extension.m"; sourceTree = "<group>"; };
E2150F201CD88051008EA3DD /* UIDevice+DeviceType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIDevice+DeviceType.h"; sourceTree = "<group>"; };
E2150F211CD88051008EA3DD /* UIDevice+DeviceType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIDevice+DeviceType.m"; sourceTree = "<group>"; };
E2150F221CD88051008EA3DD /* UIFont+Extension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIFont+Extension.h"; sourceTree = "<group>"; };
E2150F231CD88051008EA3DD /* UIFont+Extension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIFont+Extension.m"; sourceTree = "<group>"; };
E2150F241CD88051008EA3DD /* UIImage+Extension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+Extension.h"; sourceTree = "<group>"; };
E2150F251CD88051008EA3DD /* UIImage+Extension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage+Extension.m"; sourceTree = "<group>"; };
E2150F261CD88051008EA3DD /* UIImage+ScreenShot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+ScreenShot.h"; sourceTree = "<group>"; };
E2150F271CD88051008EA3DD /* UIImage+ScreenShot.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage+ScreenShot.m"; sourceTree = "<group>"; };
E2150F281CD88051008EA3DD /* UILabel+Extension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UILabel+Extension.h"; sourceTree = "<group>"; };
E2150F291CD88051008EA3DD /* UILabel+Extension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UILabel+Extension.m"; sourceTree = "<group>"; };
E2150F2A1CD88051008EA3DD /* UIScreen+Extension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIScreen+Extension.h"; sourceTree = "<group>"; };
E2150F2B1CD88051008EA3DD /* UIScreen+Extension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIScreen+Extension.m"; sourceTree = "<group>"; };
E2150F2C1CD88051008EA3DD /* UITextControl+FaultTolerance.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UITextControl+FaultTolerance.m"; sourceTree = "<group>"; };
E2150F2D1CD88051008EA3DD /* UIView+Extension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+Extension.h"; sourceTree = "<group>"; };
E2150F2E1CD88051008EA3DD /* UIView+Extension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+Extension.m"; sourceTree = "<group>"; };
E2150F2F1CD88051008EA3DD /* UIView+IBExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+IBExtension.h"; sourceTree = "<group>"; };
E2150F301CD88051008EA3DD /* UIView+IBExtension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+IBExtension.m"; sourceTree = "<group>"; };
E2150F311CD88051008EA3DD /* UIView+Runtime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+Runtime.h"; sourceTree = "<group>"; };
E2150F321CD88051008EA3DD /* UIView+Runtime.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+Runtime.m"; sourceTree = "<group>"; };
E2150F441CD88170008EA3DD /* PrefixHeader.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PrefixHeader.pch; sourceTree = "<group>"; };
E23264DD1CD9A8A300387601 /* BXTabBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BXTabBar.h; sourceTree = "<group>"; };
E23264DE1CD9A8A300387601 /* BXTabBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BXTabBar.m; sourceTree = "<group>"; };
E23264DF1CD9A8A300387601 /* BXTabBarBigButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BXTabBarBigButton.h; sourceTree = "<group>"; };
E23264E01CD9A8A300387601 /* BXTabBarBigButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BXTabBarBigButton.m; sourceTree = "<group>"; };
E23264E11CD9A8A300387601 /* BXTabBarButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BXTabBarButton.h; sourceTree = "<group>"; };
E23264E21CD9A8A300387601 /* BXTabBarButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BXTabBarButton.m; sourceTree = "<group>"; };
E23264E41CD9A8A300387601 /* DataViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DataViewController.h; sourceTree = "<group>"; };
E23264E51CD9A8A300387601 /* DataViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DataViewController.m; sourceTree = "<group>"; };
E23264E61CD9A8A300387601 /* HomeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeViewController.h; sourceTree = "<group>"; };
E23264E71CD9A8A300387601 /* HomeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeViewController.m; sourceTree = "<group>"; };
E23264E81CD9A8A300387601 /* InsuranceViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InsuranceViewController.h; sourceTree = "<group>"; };
E23264E91CD9A8A300387601 /* InsuranceViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InsuranceViewController.m; sourceTree = "<group>"; };
E23264EA1CD9A8A300387601 /* NewViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NewViewController.h; sourceTree = "<group>"; };
E23264EB1CD9A8A300387601 /* NewViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NewViewController.m; sourceTree = "<group>"; };
E23264EC1CD9A8A300387601 /* ProfileViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProfileViewController.h; sourceTree = "<group>"; };
E23264ED1CD9A8A300387601 /* ProfileViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ProfileViewController.m; sourceTree = "<group>"; };
E23264EF1CD9A8A300387601 /* BXNavigationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BXNavigationController.h; sourceTree = "<group>"; };
E23264F01CD9A8A300387601 /* BXNavigationController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BXNavigationController.m; sourceTree = "<group>"; };
E23264F11CD9A8A300387601 /* BXTabBarController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BXTabBarController.h; sourceTree = "<group>"; };
E23264F21CD9A8A300387601 /* BXTabBarController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BXTabBarController.m; sourceTree = "<group>"; };
E2C3A1A51CFD9BEF00106209 /* BXBadgeView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BXBadgeView.h; sourceTree = "<group>"; };
E2C3A1A61CFD9BEF00106209 /* BXBadgeView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BXBadgeView.m; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
E2150EDF1CD87DA8008EA3DD /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
E2150ED91CD87DA8008EA3DD = {
isa = PBXGroup;
children = (
E2150EE41CD87DA8008EA3DD /* IrregularTabBar */,
E2150EE31CD87DA8008EA3DD /* Products */,
);
sourceTree = "<group>";
};
E2150EE31CD87DA8008EA3DD /* Products */ = {
isa = PBXGroup;
children = (
E2150EE21CD87DA8008EA3DD /* IrregularTabBar.app */,
);
name = Products;
sourceTree = "<group>";
};
E2150EE41CD87DA8008EA3DD /* IrregularTabBar */ = {
isa = PBXGroup;
children = (
E23264DC1CD9A8A300387601 /* BXTabBar */,
E23264E31CD9A8A300387601 /* Controller */,
E23264EE1CD9A8A300387601 /* Main */,
E2150F111CD88051008EA3DD /* Category */,
E2150EE81CD87DA8008EA3DD /* AppDelegate.h */,
E2150EE91CD87DA8008EA3DD /* AppDelegate.m */,
E2150EF11CD87DA8008EA3DD /* Assets.xcassets */,
E2150EF61CD87DA8008EA3DD /* Info.plist */,
E2150EE51CD87DA8008EA3DD /* Supporting Files */,
);
path = IrregularTabBar;
sourceTree = "<group>";
};
E2150EE51CD87DA8008EA3DD /* Supporting Files */ = {
isa = PBXGroup;
children = (
E2150F441CD88170008EA3DD /* PrefixHeader.pch */,
E2150EE61CD87DA8008EA3DD /* main.m */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
E2150F111CD88051008EA3DD /* Category */ = {
isa = PBXGroup;
children = (
E2150F121CD88051008EA3DD /* BXExtensions.h */,
E2150F131CD88051008EA3DD /* Foundation+Log.m */,
E2150F141CD88051008EA3DD /* NSDate+Extension.h */,
E2150F151CD88051008EA3DD /* NSDate+Extension.m */,
E2150F161CD88051008EA3DD /* NSDictionary+Extension.h */,
E2150F171CD88051008EA3DD /* NSDictionary+Extension.m */,
E2150F181CD88051008EA3DD /* NSString+BXExtension.h */,
E2150F191CD88051008EA3DD /* NSString+BXExtension.m */,
E2150F1A1CD88051008EA3DD /* UIApplication+Extensions.h */,
E2150F1B1CD88051008EA3DD /* UIApplication+Extensions.m */,
E2150F1C1CD88051008EA3DD /* UIBarButtonItem+Extension.h */,
E2150F1D1CD88051008EA3DD /* UIBarButtonItem+Extension.m */,
E2150F1E1CD88051008EA3DD /* UIButton+Extension.h */,
E2150F1F1CD88051008EA3DD /* UIButton+Extension.m */,
E2150F201CD88051008EA3DD /* UIDevice+DeviceType.h */,
E2150F211CD88051008EA3DD /* UIDevice+DeviceType.m */,
E2150F221CD88051008EA3DD /* UIFont+Extension.h */,
E2150F231CD88051008EA3DD /* UIFont+Extension.m */,
E2150F241CD88051008EA3DD /* UIImage+Extension.h */,
E2150F251CD88051008EA3DD /* UIImage+Extension.m */,
E2150F261CD88051008EA3DD /* UIImage+ScreenShot.h */,
E2150F271CD88051008EA3DD /* UIImage+ScreenShot.m */,
E2150F281CD88051008EA3DD /* UILabel+Extension.h */,
E2150F291CD88051008EA3DD /* UILabel+Extension.m */,
E2150F2A1CD88051008EA3DD /* UIScreen+Extension.h */,
E2150F2B1CD88051008EA3DD /* UIScreen+Extension.m */,
E2150F2C1CD88051008EA3DD /* UITextControl+FaultTolerance.m */,
E2150F2D1CD88051008EA3DD /* UIView+Extension.h */,
E2150F2E1CD88051008EA3DD /* UIView+Extension.m */,
E2150F2F1CD88051008EA3DD /* UIView+IBExtension.h */,
E2150F301CD88051008EA3DD /* UIView+IBExtension.m */,
E2150F311CD88051008EA3DD /* UIView+Runtime.h */,
E2150F321CD88051008EA3DD /* UIView+Runtime.m */,
);
path = Category;
sourceTree = "<group>";
};
E23264DC1CD9A8A300387601 /* BXTabBar */ = {
isa = PBXGroup;
children = (
E23264DD1CD9A8A300387601 /* BXTabBar.h */,
E23264DE1CD9A8A300387601 /* BXTabBar.m */,
E23264DF1CD9A8A300387601 /* BXTabBarBigButton.h */,
E23264E01CD9A8A300387601 /* BXTabBarBigButton.m */,
E23264E11CD9A8A300387601 /* BXTabBarButton.h */,
E23264E21CD9A8A300387601 /* BXTabBarButton.m */,
E2C3A1A51CFD9BEF00106209 /* BXBadgeView.h */,
E2C3A1A61CFD9BEF00106209 /* BXBadgeView.m */,
);
path = BXTabBar;
sourceTree = "<group>";
};
E23264E31CD9A8A300387601 /* Controller */ = {
isa = PBXGroup;
children = (
E23264E41CD9A8A300387601 /* DataViewController.h */,
E23264E51CD9A8A300387601 /* DataViewController.m */,
E23264E61CD9A8A300387601 /* HomeViewController.h */,
E23264E71CD9A8A300387601 /* HomeViewController.m */,
E23264E81CD9A8A300387601 /* InsuranceViewController.h */,
E23264E91CD9A8A300387601 /* InsuranceViewController.m */,
E23264EA1CD9A8A300387601 /* NewViewController.h */,
E23264EB1CD9A8A300387601 /* NewViewController.m */,
E23264EC1CD9A8A300387601 /* ProfileViewController.h */,
E23264ED1CD9A8A300387601 /* ProfileViewController.m */,
);
path = Controller;
sourceTree = "<group>";
};
E23264EE1CD9A8A300387601 /* Main */ = {
isa = PBXGroup;
children = (
E23264EF1CD9A8A300387601 /* BXNavigationController.h */,
E23264F01CD9A8A300387601 /* BXNavigationController.m */,
E23264F11CD9A8A300387601 /* BXTabBarController.h */,
E23264F21CD9A8A300387601 /* BXTabBarController.m */,
);
path = Main;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
E2150EE11CD87DA8008EA3DD /* IrregularTabBar */ = {
isa = PBXNativeTarget;
buildConfigurationList = E2150EF91CD87DA8008EA3DD /* Build configuration list for PBXNativeTarget "IrregularTabBar" */;
buildPhases = (
E2150EDE1CD87DA8008EA3DD /* Sources */,
E2150EDF1CD87DA8008EA3DD /* Frameworks */,
E2150EE01CD87DA8008EA3DD /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = IrregularTabBar;
productName = IrregularTabBar;
productReference = E2150EE21CD87DA8008EA3DD /* IrregularTabBar.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
E2150EDA1CD87DA8008EA3DD /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0900;
ORGANIZATIONNAME = baobeikeji;
TargetAttributes = {
E2150EE11CD87DA8008EA3DD = {
CreatedOnToolsVersion = 7.2;
};
};
};
buildConfigurationList = E2150EDD1CD87DA8008EA3DD /* Build configuration list for PBXProject "IrregularTabBar" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = E2150ED91CD87DA8008EA3DD;
productRefGroup = E2150EE31CD87DA8008EA3DD /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
E2150EE11CD87DA8008EA3DD /* IrregularTabBar */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
E2150EE01CD87DA8008EA3DD /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
E2150EF21CD87DA8008EA3DD /* Assets.xcassets in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
E2150EDE1CD87DA8008EA3DD /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
E2150F421CD88051008EA3DD /* UIView+IBExtension.m in Sources */,
E23264F91CD9A8A300387601 /* NewViewController.m in Sources */,
E2150EEA1CD87DA8008EA3DD /* AppDelegate.m in Sources */,
E2150F391CD88051008EA3DD /* UIButton+Extension.m in Sources */,
E2150F331CD88051008EA3DD /* Foundation+Log.m in Sources */,
E2150F351CD88051008EA3DD /* NSDictionary+Extension.m in Sources */,
E2150F341CD88051008EA3DD /* NSDate+Extension.m in Sources */,
E2C3A1A71CFD9BEF00106209 /* BXBadgeView.m in Sources */,
E2150F3D1CD88051008EA3DD /* UIImage+ScreenShot.m in Sources */,
E2150F411CD88051008EA3DD /* UIView+Extension.m in Sources */,
E2150F371CD88051008EA3DD /* UIApplication+Extensions.m in Sources */,
E23264F61CD9A8A300387601 /* DataViewController.m in Sources */,
E2150F401CD88051008EA3DD /* UITextControl+FaultTolerance.m in Sources */,
E2150F431CD88051008EA3DD /* UIView+Runtime.m in Sources */,
E23264F31CD9A8A300387601 /* BXTabBar.m in Sources */,
E23264F41CD9A8A300387601 /* BXTabBarBigButton.m in Sources */,
E2150F3C1CD88051008EA3DD /* UIImage+Extension.m in Sources */,
E2150F3E1CD88051008EA3DD /* UILabel+Extension.m in Sources */,
E2150F361CD88051008EA3DD /* NSString+BXExtension.m in Sources */,
E23264F81CD9A8A300387601 /* InsuranceViewController.m in Sources */,
E23264FA1CD9A8A300387601 /* ProfileViewController.m in Sources */,
E2150EE71CD87DA8008EA3DD /* main.m in Sources */,
E2150F381CD88051008EA3DD /* UIBarButtonItem+Extension.m in Sources */,
E2150F3B1CD88051008EA3DD /* UIFont+Extension.m in Sources */,
E23264FC1CD9A8A300387601 /* BXTabBarController.m in Sources */,
E23264F51CD9A8A300387601 /* BXTabBarButton.m in Sources */,
E2150F3A1CD88051008EA3DD /* UIDevice+DeviceType.m in Sources */,
E23264FB1CD9A8A300387601 /* BXNavigationController.m in Sources */,
E2150F3F1CD88051008EA3DD /* UIScreen+Extension.m in Sources */,
E23264F71CD9A8A300387601 /* HomeViewController.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
E2150EF71CD87DA8008EA3DD /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 9.2;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
};
name = Debug;
};
E2150EF81CD87DA8008EA3DD /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 9.2;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
VALIDATE_PRODUCT = YES;
};
name = Release;
};
E2150EFA1CD87DA8008EA3DD /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = IrregularTabBar/PrefixHeader.pch;
INFOPLIST_FILE = IrregularTabBar/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = cn.baobeikeji.IrregularTabBar;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
};
E2150EFB1CD87DA8008EA3DD /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = IrregularTabBar/PrefixHeader.pch;
INFOPLIST_FILE = IrregularTabBar/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = cn.baobeikeji.IrregularTabBar;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
E2150EDD1CD87DA8008EA3DD /* Build configuration list for PBXProject "IrregularTabBar" */ = {
isa = XCConfigurationList;
buildConfigurations = (
E2150EF71CD87DA8008EA3DD /* Debug */,
E2150EF81CD87DA8008EA3DD /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
E2150EF91CD87DA8008EA3DD /* Build configuration list for PBXNativeTarget "IrregularTabBar" */ = {
isa = XCConfigurationList;
buildConfigurations = (
E2150EFA1CD87DA8008EA3DD /* Debug */,
E2150EFB1CD87DA8008EA3DD /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = E2150EDA1CD87DA8008EA3DD /* Project object */;
}
================================================
FILE: IrregularTabBar/IrregularTabBar.xcodeproj/project.xcworkspace/contents.xcworkspacedata
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:IrregularTabBar.xcodeproj">
</FileRef>
</Workspace>
================================================
FILE: IrregularTabBar.xcworkspace/contents.xcworkspacedata
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:IrregularTabBar/IrregularTabBar.xcodeproj">
</FileRef>
<FileRef
location = "group:IrregularTabBar2/IrregularTabBar2.xcodeproj">
</FileRef>
<FileRef
location = "group:IrregularTabBar3/IrregularTabBar3.xcodeproj">
</FileRef>
</Workspace>
================================================
FILE: IrregularTabBar2/IrregularTabBar2/AppDelegate.h
================================================
//
// AppDelegate.h
// IrregularTabBar2
//
// Created by JYJ on 16/6/1.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@end
================================================
FILE: IrregularTabBar2/IrregularTabBar2/AppDelegate.m
================================================
//
// AppDelegate.m
// IrregularTabBar2
//
// Created by JYJ on 16/6/1.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import "AppDelegate.h"
#import "BXTabBarController.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 1.创建窗口
self.window = [[UIWindow alloc] init];
self.window.frame = [UIScreen mainScreen].bounds;
self.window.backgroundColor = [UIColor whiteColor];
// 设置窗口的根控制器
self.window.rootViewController = [[BXTabBarController alloc] init];
[self.window makeKeyAndVisible];
return YES;
}
- (void)applicationWillResignActive:(UIApplication *)application {
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
}
- (void)applicationDidEnterBackground:(UIApplication *)application {
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
// Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}
- (void)applicationWillTerminate:(UIApplication *)application {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}
@end
================================================
FILE: IrregularTabBar2/IrregularTabBar2/Assets.xcassets/AppIcon.appiconset/Contents.json
================================================
{
"images" : [
{
"idiom" : "iphone",
"size" : "20x20",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "20x20",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "29x29",
"scale" : "1x"
},
{
"idiom" : "iphone",
"size" : "29x29",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "29x29",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "40x40",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "AppIcon40x40@3x.png",
"scale" : "3x"
},
{
"size" : "57x57",
"idiom" : "iphone",
"filename" : "AppIcon57x57.png",
"scale" : "1x"
},
{
"size" : "57x57",
"idiom" : "iphone",
"filename" : "AppIcon57x57@2x.png",
"scale" : "2x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "AppIcon60x60@2x.png",
"scale" : "2x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "AppIcon60x60@3x.png",
"scale" : "3x"
},
{
"idiom" : "ipad",
"size" : "20x20",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "20x20",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "AppIcon29x29.png",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "29x29",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "AppIcon40x40~ipad.png",
"scale" : "1x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "AppIcon40x40@2x.png",
"scale" : "2x"
},
{
"size" : "50x50",
"idiom" : "ipad",
"filename" : "AppIcon50x50~ipad.png",
"scale" : "1x"
},
{
"size" : "50x50",
"idiom" : "ipad",
"filename" : "AppIcon50x50@2x~ipad.png",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "72x72",
"scale" : "1x"
},
{
"size" : "72x72",
"idiom" : "ipad",
"filename" : "AppIcon72x72@2x~ipad.png",
"scale" : "2x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "AppIcon76x76~ipad.png",
"scale" : "1x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "AppIcon76x76@2x~ipad.png",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "83.5x83.5",
"scale" : "2x"
},
{
"idiom" : "ios-marketing",
"size" : "1024x1024",
"scale" : "1x"
},
{
"size" : "24x24",
"idiom" : "watch",
"scale" : "2x",
"role" : "notificationCenter",
"subtype" : "38mm"
},
{
"size" : "27.5x27.5",
"idiom" : "watch",
"scale" : "2x",
"role" : "notificationCenter",
"subtype" : "42mm"
},
{
"size" : "29x29",
"idiom" : "watch",
"filename" : "AppIcon29x29@2x.png",
"role" : "companionSettings",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "watch",
"filename" : "AppIcon29x29@3x.png",
"role" : "companionSettings",
"scale" : "3x"
},
{
"size" : "40x40",
"idiom" : "watch",
"scale" : "2x",
"role" : "appLauncher",
"subtype" : "38mm"
},
{
"size" : "86x86",
"idiom" : "watch",
"scale" : "2x",
"role" : "quickLook",
"subtype" : "38mm"
},
{
"size" : "98x98",
"idiom" : "watch",
"scale" : "2x",
"role" : "quickLook",
"subtype" : "42mm"
},
{
"idiom" : "watch-marketing",
"size" : "1024x1024",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "AppIcon29x29~ipad.png",
"unassigned" : true,
"scale" : "1x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "AppIcon40x40@2x~ipad.png",
"unassigned" : true,
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "watch",
"filename" : "AppIcon29x29@2x~ipad.png",
"unassigned" : true,
"role" : "companionSettings",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar2/IrregularTabBar2/Assets.xcassets/Contents.json
================================================
{
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar2/IrregularTabBar2/Assets.xcassets/LaunchImage.launchimage/Contents.json
================================================
{
"images" : [
{
"extent" : "full-screen",
"idiom" : "iphone",
"subtype" : "2436h",
"filename" : "LaunchImage-700-812h@3x.png",
"minimum-system-version" : "11.0",
"orientation" : "portrait",
"scale" : "3x"
},
{
"orientation" : "landscape",
"idiom" : "iphone",
"extent" : "full-screen",
"minimum-system-version" : "11.0",
"subtype" : "2436h",
"scale" : "3x"
},
{
"extent" : "full-screen",
"idiom" : "iphone",
"subtype" : "736h",
"filename" : "LaunchImage-800-Portrait-736h@3x.png",
"minimum-system-version" : "8.0",
"orientation" : "portrait",
"scale" : "3x"
},
{
"orientation" : "landscape",
"idiom" : "iphone",
"extent" : "full-screen",
"minimum-system-version" : "8.0",
"subtype" : "736h",
"scale" : "3x"
},
{
"extent" : "full-screen",
"idiom" : "iphone",
"subtype" : "667h",
"filename" : "LaunchImage-800-667h@2x.png",
"minimum-system-version" : "8.0",
"orientation" : "portrait",
"scale" : "2x"
},
{
"orientation" : "portrait",
"idiom" : "iphone",
"extent" : "full-screen",
"minimum-system-version" : "7.0",
"scale" : "2x"
},
{
"orientation" : "portrait",
"idiom" : "iphone",
"extent" : "full-screen",
"minimum-system-version" : "7.0",
"subtype" : "retina4",
"scale" : "2x"
},
{
"orientation" : "portrait",
"idiom" : "iphone",
"filename" : "LaunchImage.png",
"extent" : "full-screen",
"scale" : "1x"
},
{
"orientation" : "portrait",
"idiom" : "iphone",
"filename" : "LaunchImage-700@2x.png",
"extent" : "full-screen",
"scale" : "2x"
},
{
"orientation" : "portrait",
"idiom" : "iphone",
"filename" : "LaunchImage-568h@2x.png",
"extent" : "full-screen",
"subtype" : "retina4",
"scale" : "2x"
},
{
"orientation" : "portrait",
"idiom" : "iphone",
"filename" : "LaunchImage@2x.png",
"extent" : "full-screen",
"unassigned" : true,
"scale" : "2x"
},
{
"extent" : "full-screen",
"idiom" : "iphone",
"subtype" : "retina4",
"filename" : "LaunchImage-700-568h@2x.png",
"orientation" : "portrait",
"unassigned" : true,
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar2/IrregularTabBar2/Assets.xcassets/NavigationBar/Contents.json
================================================
{
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar2/IrregularTabBar2/Assets.xcassets/NavigationBar/navigationButtonReturn.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"filename" : "navigationButtonReturn.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "navigationButtonReturn@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "navigationButtonReturn@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar2/IrregularTabBar2/Assets.xcassets/TabBar/Contents.json
================================================
{
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar2/IrregularTabBar2/Assets.xcassets/TabBar/m_badge.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "m_badge@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar2/IrregularTabBar2/Assets.xcassets/TabBar/navigationbarBackgroundWhite.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"filename" : "navigationbarBackgroundWhite.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar2/IrregularTabBar2/Assets.xcassets/TabBar/tabBar_icon_contrast.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_contrast@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_contrast@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar2/IrregularTabBar2/Assets.xcassets/TabBar/tabBar_icon_contrast_default.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_contrast_default@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_contrast_default@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar2/IrregularTabBar2/Assets.xcassets/TabBar/tabBar_icon_customer.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_customer@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_customer@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar2/IrregularTabBar2/Assets.xcassets/TabBar/tabBar_icon_customer_default.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_customer_default@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_customer_default@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar2/IrregularTabBar2/Assets.xcassets/TabBar/tabBar_icon_mine.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_mine@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_mine@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar2/IrregularTabBar2/Assets.xcassets/TabBar/tabBar_icon_mine_default.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_mine_default@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_mine_default@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar2/IrregularTabBar2/Assets.xcassets/TabBar/tabBar_icon_plan.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_plan@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_plan@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar2/IrregularTabBar2/Assets.xcassets/TabBar/tabBar_icon_plan_default.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_plan_default@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_plan_default@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar2/IrregularTabBar2/Assets.xcassets/TabBar/tabBar_icon_schedule.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_schedule@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_schedule@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar2/IrregularTabBar2/Assets.xcassets/TabBar/tabBar_icon_schedule_default.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_schedule_default@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "tabBar_icon_schedule_default@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar2/IrregularTabBar2/Assets.xcassets/摄影机图标_点击前.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "摄影机图标_点击前@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar2/IrregularTabBar2/Assets.xcassets/摄影机图标_点击后.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "摄影机图标_点击后@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: IrregularTabBar2/IrregularTabBar2/BXTabBar/BXTabBar.h
================================================
//
// BXTabBar.h
// IrregularTabBar
//
// Created by JYJ on 16/5/3.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface BXTabBar : UITabBar
@end
================================================
FILE: IrregularTabBar2/IrregularTabBar2/BXTabBar/BXTabBar.m
================================================
//
// BXTabBar.m
// IrregularTabBar
//
// Created by JYJ on 16/5/3.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import "BXTabBar.h"
#import "BXTabBarBigButton.h"
#import "InsuranceViewController.h"
#import "BXNavigationController.h"
@interface BXTabBar ()
/** bigButton */
@property (nonatomic, strong) BXTabBarBigButton *bigButton;
@end
@implementation BXTabBar
- (BXTabBarBigButton *)bigButton {
if (!_bigButton) {
BXTabBarBigButton *bigButton = [[BXTabBarBigButton alloc] init];
[bigButton setImage:[UIImage imageNamed:@"摄影机图标_点击前"] forState:UIControlStateNormal];
[bigButton setImage:[UIImage imageNamed:@"摄影机图标_点击后"] forState:UIControlStateHighlighted];
[bigButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[bigButton addTarget:self action:@selector(bigButtonClick) forControlEvents:UIControlEventTouchUpInside];
self.bigButton = bigButton;
}
return _bigButton;
}
- (instancetype)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
[self addSubview:self.bigButton];
}
return self;
}
#warning TODO 点击按钮需要做的事情
- (void)bigButtonClick {
BXLog(@"大按钮点击了");
InsuranceViewController *vc = [[InsuranceViewController alloc] init];
BXNavigationController *nav = [[BXNavigationController alloc] initWithRootViewController:vc];
[[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:nav animated:YES completion:nil];
}
- (void)layoutSubviews {
[super layoutSubviews];
//设置bigButton的frame
CGRect rect = self.bounds;
CGFloat w = rect.size.width / self.items.count - 1;
self.bigButton.frame = CGRectInset(rect, 2 * w, 0);
self.bigButton.height = 49;
[self bringSubviewToFront:self.bigButton];
}
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
if (self.clipsToBounds || self.hidden || (self.alpha == 0.f)) {
return nil;
}
// 因为按钮内部imageView突出
CGPoint newPoint = [self convertPoint:point toView:self.bigButton.imageView];
if ( [self.bigButton.imageView pointInside:newPoint withEvent:event]) { // 点属于按钮范围
return self.bigButton;
}else{
return [super hitTest:point withEvent:event];
}
return [super hitTest:point withEvent:event];
}
@end
================================================
FILE: IrregularTabBar2/IrregularTabBar2/BXTabBar/BXTabBarBigButton.h
================================================
//
// BXTabBarBigButton.h
// IrregularTabBar
//
// Created by JYJ on 16/5/3.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface BXTabBarBigButton : UIButton
@end
================================================
FILE: IrregularTabBar2/IrregularTabBar2/BXTabBar/BXTabBarBigButton.m
================================================
//
// BXTabBarBigButton.m
// IrregularTabBar
//
// Created by JYJ on 16/5/3.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import "BXTabBarBigButton.h"
@interface BXTabBarBigButton ()
@end
@implementation BXTabBarBigButton
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
// 1.设置字体
self.titleLabel.font = [UIFont systemFontOfSize:10];
self.titleLabel.textAlignment = NSTextAlignmentCenter;
[self setTitle:@"上传证件" forState:UIControlStateNormal];
// 2.图片的内容模式
self.imageView.contentMode = UIViewContentModeCenter;
}
return self;
}
- (void)layoutSubviews {
[super layoutSubviews];
self.titleLabel.x = 0;
self.titleLabel.width = self.width;
self.titleLabel.height = 16;
if (@available(iOS 11.0, *)) {
self.titleLabel.height -= 1;
}
self.titleLabel.y = self.height - self.titleLabel.height;
self.imageView.width = self.currentImage.size.width;
self.imageView.height = self.currentImage.size.height;
self.imageView.x = (self.width - self.imageView.width) / 2;
self.imageView.y = self.titleLabel.y - self.imageView.height;
}
@end
================================================
FILE: IrregularTabBar2/IrregularTabBar2/Category/BXExtensions.h
================================================
//
// BXExtensions.h
// BXInsurenceBroker
//
// Created by JYJ on 16/3/15.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import "UIApplication+Extensions.h"
#import "UIScreen+Extension.h"
#import "UIDevice+DeviceType.h"
#import "UIView+IBExtension.h"
#import "UIView+Runtime.h"
#import "UIView+Extension.h"
#import "NSString+BXExtension.h"
#import "NSDate+Extension.h"
#import "UIBarButtonItem+Extension.h"
#import "UIImage+Extension.h"
#import "UILabel+Extension.h"
#import "UIButton+Extension.h"
#import "UIImage+ScreenShot.h"
#import "UIFont+Extension.h"
#import "NSDictionary+Extension.h"
================================================
FILE: IrregularTabBar2/IrregularTabBar2/Category/Foundation+Log.m
================================================
#import <Foundation/Foundation.h>
//#import <objc/runtime.h>
//@implementation NSObject (Log)
//+ (void)load {
// // 交换两个方法的实现
// method_exchangeImplementations(class_getInstanceMethod([NSObject class], @selector(description)), class_getInstanceMethod([NSObject class], @selector(pkxDescription)));
//}
///**
// * 该方法是用来自定义模型(直接继承NSObject)的输出格式
// *
// * @return 格式化后的字符串
// */
//- (NSString *)pkxDescription{
// Class class = [self class];
//
// NSMutableString *resultStr = [NSMutableString stringWithFormat:@"%@ = {\n",[self pkxDescription]];
// BXLog(@"%@", [class description]);
// while (class != [NSObject class]) {
// // 0.如果是UIResponder或CALayer的子类,就使用系统的默认输出格式
// if ([[class description] hasPrefix:@"NS"] || [[class description] hasPrefix:@"__"]|| [[class description] hasPrefix:@"AV"] || [[class description] hasPrefix:@"_UIFlowLayout"] || [[class description] hasPrefix:@"UITouchesEvent"] || [class isSubclassOfClass:[UIResponder class]] || [class isSubclassOfClass:[CALayer class]] || [class isSubclassOfClass:[UIImage class]])return [self pkxDescription];
// unsigned int count = 0;
// // 1.获取类成员变量列表,count为类成员变量数量
// Ivar *vars = class_copyIvarList(class, &count);
// for (int index = 0; index < count; index ++) {
// // 2.根据索引获得指定位置的成员变量
// Ivar var = vars[index];
// // 3.获得成员变量名
// const char *name = ivar_getName(var);
// // 4.成员变量名转化成oc字符串
// NSString *varName = [NSString stringWithUTF8String:name];
// BXLog(@"%@", varName);
// // 5.获得成员变量对应的值
// id value = [self valueForKey:varName];
// [resultStr appendFormat:@"\t%@ = %@;\n", varName, value];
// }
// // 6.释放指针
// free(vars);
// // 7.获得父类
// class = class_getSuperclass(class);
// }
// [resultStr appendString:@"}\n"];
// return resultStr;
//}
//
//@end
@implementation NSDictionary (Log)
- (NSString *)descriptionWithLocale:(id)locale {
NSMutableString *str = [NSMutableString string];
[str appendString:@"{\n"];
// 遍历字典的所有键值对
[self enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
[str appendFormat:@"\t%@ = %@,\n", key, obj];
}];
[str appendString:@"}"];
// 查出最后一个,的范围
NSRange range = [str rangeOfString:@"," options:NSBackwardsSearch];
if (range.length != 0) {
// 删掉最后一个,
[str deleteCharactersInRange:range];
}
return str;
}
@end
@implementation NSArray (Log)
- (NSString *)descriptionWithLocale:(id)locale {
NSMutableString *str = [NSMutableString string];
[str appendString:@"[\n"];
// 遍历数组的所有元素
[self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
[str appendFormat:@"%@,\n", obj];
}];
[str appendString:@"]"];
// 查出最后一个,的范围
NSRange range = [str rangeOfString:@"," options:NSBackwardsSearch];
if (range.length != 0) {
// 删掉最后一个,
[str deleteCharactersInRange:range];
}
return str;
}
@end
================================================
FILE: IrregularTabBar2/IrregularTabBar2/Category/NSDate+Extension.h
================================================
//
// NSDate+Extension.h
// Weibo11
//
// Created by JYJ on 15/12/12.
// Copyright © 2015年 itheima. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface NSDate (Extension)
/// 日期描述字符串
///
/// 格式如下
/// - 刚刚(一分钟内)
/// - X分钟前(一小时内)
/// - X小时前(当天)
/// - 昨天 HH:mm(昨天)
/// - MM-dd HH:mm(一年内)
/// - yyyy-MM-dd HH:mm(更早期)
- (NSString *)ff_dateDescription;
@end
================================================
FILE: IrregularTabBar2/IrregularTabBar2/Category/NSDate+Extension.m
================================================
//
// NSDate+Extension.m
// Weibo11
//
// Created by JYJ on 15/12/12.
// Copyright © 2015年 itheima. All rights reserved.
//
#import "NSDate+Extension.h"
@implementation NSDate (Extension)
- (NSString *)ff_dateDescription {
// 1. 获取当前日历
NSCalendar *calendar = [NSCalendar currentCalendar];
// 2. 判断是否是今天
if ([calendar isDateInToday:self]) {
NSInteger interval = ABS((NSInteger)[self timeIntervalSinceNow]);
if (interval < 60) {
return @"刚刚";
}
interval /= 60;
if (interval < 60) {
return [NSString stringWithFormat:@"%zd 分钟前", interval];
}
return [NSString stringWithFormat:@"%zd 小时前", interval / 60];
}
// 3. 昨天
NSMutableString *formatString = [NSMutableString stringWithString:@" HH:mm"];
if ([calendar isDateInYesterday:self]) {
[formatString insertString:@"昨天" atIndex:0];
} else {
[formatString insertString:@"MM-dd" atIndex:0];
// 4. 是否当年
NSDateComponents *components = [calendar components:NSCalendarUnitYear fromDate:self toDate:[NSDate date] options:0];
if (components.year != 0) {
[formatString insertString:@"yyyy-" atIndex:0];
}
}
// 5. 转换格式字符串
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
fmt.locale = [NSLocale localeWithLocaleIdentifier:@"en"];
fmt.dateFormat = formatString;
return [fmt stringFromDate:self];
}
@end
================================================
FILE: IrregularTabBar2/IrregularTabBar2/Category/NSDictionary+Extension.h
================================================
//
// NSDictionary+Extension.h
// BXInsurenceBroker
//
// Created by linsihua on 16/4/9.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface NSDictionary (Extension)
- (id)getValue:(NSString *)key as:(Class)type;
- (id)getValue:(NSString *)key as:(Class)type defaultValue:(id)defaultValue;
@end
================================================
FILE: IrregularTabBar2/IrregularTabBar2/Category/NSDictionary+Extension.m
================================================
//
// NSDictionary+Extension.m
// BXInsurenceBroker
//
// Created by linsihua on 16/4/9.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import "NSDictionary+Extension.h"
@implementation NSDictionary (Extension)
- (id)getValue:(NSString *)key as:(Class)type {
id value = [self objectForKey:key];
// 类型一样,直接返回
if ([value isKindOfClass:type]) {
return value;
}
// 如果目标是number
if (type == [NSNumber class] && [value isKindOfClass:[NSString class]]) {
NSString *string = value;
if ([string isEqualToString:@"true"]) {
return @YES;
}
if ([string isEqualToString:@"no"]) {
return @NO;
}
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
return [formatter numberFromString:string];
}
// 如果目标是string
if (type == [NSString class] && [value isKindOfClass:[NSNumber class]]) {
return [value description];
}
if (type == [NSMutableString class]) {
if ([value isKindOfClass:[NSNumber class]]) {
return [[value description] mutableCopy];
} else if ([value isKindOfClass:[NSString class]]) {
return [value mutableCopy];
}
}
// 如果目标是array
if (type == [NSArray class] && [value isKindOfClass:[NSDictionary class]]) {
NSDictionary *dict = (NSDictionary *)value;
return dict.allValues;
}
if (type == [NSMutableArray class]) {
if ([value isKindOfClass:[NSDictionary class]]) {
NSDictionary *dict = (NSDictionary *)value;
return [dict.allValues mutableCopy];
} else if ([value isKindOfClass:[NSDictionary class]]) {
return [value mutableCopy];
}
}
// 如果目标是dictionary
if ((type == [NSDictionary class] || type == [NSMutableDictionary class]) && [value isKindOfClass:[NSArray class]]) {
NSArray *array = (NSArray *)value;
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
for (id item in array) {
if ([item isKindOfClass:[NSNumber class]]) {
[dict setObject:item forKey:[item description]];
} else {
[dict setObject:item forKey:item];
}
}
return dict;
}
return nil;
}
- (id)getValue:(NSString *)key as:(Class)type defaultValue:(id)defaultValue {
id result = [self getValue:key as:type];
if (!result) {
result = defaultValue;
}
return result;
}
@end
================================================
FILE: IrregularTabBar2/IrregularTabBar2/Category/NSString+BXExtension.h
================================================
//
// NSString+BXExtension.h
// BXInsurenceBroker
//
// Created by JYJ on 16/2/23.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface NSString (BXExtension)
/**
*手机号码验证 MODIFIED BY HELENSONG
*/
- (BOOL) isValidateMobile;
///**
// *身份证验证
// */
//- (BOOL)validateIdentityCard;
/**
* 判断字段是否包含空格
*/
- (BOOL)validateContainsSpace;
/**
* 根据生日返回年龄
*/
- (NSString *)ageFromBirthday;
/**
* 根据身份证返回岁数
*/
- (NSString *)ageFromIDCard;
/**
* 根据身份证返回生日
*/
- (NSString*)birthdayFromIDCard;
/**
* 根据身份证返回性别
*/
- (NSString*)sexFromIDCard;
/**
* 返回字符串所占用的尺寸
*
* @param font 字体
* @param maxSize 最大尺寸
*/
- (CGSize)sizeWithFont:(UIFont *)font maxSize:(CGSize)maxSize;
+ (NSString *)stringWithMoneyAmount:(double)amount;
+ (NSString *)stringIntervalFrom:(NSDate *)start to:(NSDate *)end;
//邮箱
+ (BOOL)validateEmail:(NSString *)email;
- (BOOL)isEmptyString;
@end
================================================
FILE: IrregularTabBar2/IrregularTabBar2/Category/NSString+BXExtension.m
================================================
//
// NSString+BXExtension.m
// BXInsurenceBroker
//
// Created by JYJ on 16/2/23.
// Copyright © 2016年 baobeikeji. All rights reserved.
//
#import "NSString+BXExtension.h"
@implementation NSString (BXExtension)
/*手机号码验证 MODIFIED BY HELENSONG*/
- (BOOL) isValidateMobile {
//手机号以13, 15, 17, 18开头,八个 \d 数字字符
NSString *phoneRegex = @"^((13[0-9])|(15[^4,\\D])|(17[0-9])|(18[0,0-9]))\\d{8}$";
NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",phoneRegex];
// NSLog(@"phoneTest is %@",phoneTest);
return [phoneTest evaluateWithObject:self];
}
- (BOOL)validateContainsSpace {
return [self rangeOfString:@" "].location == NSNotFound;
}
- (NSString *)ageFromBirthday {
if (self.length != 10 ||
[self characterAtIndex:4] != '.' ||
[self characterAtIndex:7] != '.') {
return @"";
}
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy.MM.dd"];
NSString *today = [formatter stringFromDate:[NSDate date]];
NSString *selfYear = [self substringToIndex:4];
NSString *nowYear = [today substringToIndex:4];
NSInteger age = nowYear.integerValue - selfYear.integerValue;
NSString *selfDate = [self substringFromIndex:5];
NSString *nowDate = [today substringFromIndex:5];
if ([nowDate compare:selfDate] < 0) {
age = age - 1;
}
if (age < 0) {
return @"";
}
return [NSString stringWithFormat:@"%zd", age];
}
- (NSString *)ageFromIDCard {
NSString *birthday = [self birthdayFromIDCard];
return [birthday ageFromBirthday];
}
- (NSString*)birthdayFromIDCard {
NSString *result = @"未知";
if (self.length == 15) {
NSMutableString *birthString = [[self substringWithRange:NSMakeRange(6, 6)] mutableCopy];
[birthString insertString:@"19" atIndex:0];
[birthString insertString:@"." atIndex:4];
[birthString insertString:@"." atIndex:7];
result = birthString;
} else if (self.length == 18) {
NSMutableString *birthString = [[self substringWithRange:NSMakeRange(6, 8)] mutableCopy];
[birthString insertString:@"." atIndex:4];
[birthString insertString:@"." atIndex:7];
result = birthString;
}
return result;
}
- (NSString*)sexFromIDCard {
NSString *sexString = @"";
if (self.length == 15) {
sexString = [[self substringWithRange:NSMakeRange(14, 1)] mutableCopy];
} else if (self.length == 18) {
sexString = [[self substringWithRange:NSMakeRange(16, 1)] mutableCopy];
}
int x = sexString.intValue;
if (x < 0 || sexString.length == 0) {
return @"";
}
if (x % 2 == 0) {
return @"女";
} else {
return @"男";
}
return sexString;
}
- (CGSize)sizeWithFont:(UIFont *)font maxSize:(CGSize)maxSize {
NSDictionary *attrs = @{NSFontAttributeName : font};
return [self boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:attrs context:nil].size;
}
+ (NSString *)stringWithMoneyAmount:(double)amount {
BOOL minus = amount < 0;
if (minus) {
amount = -amount;
}
NSMutableString *toString = [NSMutableString string];
long round = floor(amount);
int fraction = floor((amount - round + 0.005) * 100.0);
NSString *fractionString = [NSString stringWithFormat:@".%02d", fraction];
do {
int thousand = round % 1000;
if (round < 1000) {
[toString insertString:[NSString stringWithFormat:@"%d", thousand] atIndex:0];
} else {
[toString insertString:[NSString stringWithFormat:@",%03d", thousand] atIndex:0];
}
round = round / 1000;
} while (round);
[toString appendString:fractionString];
if (minus) {
[toString insertString:@"-" atIndex:0];
}
return toString;
}
+ (NSString *)stringIntervalFrom:(NSDate *)start to:(NSDate *)end {
NSInteger interval = end.timeIntervalSince1970 - start.timeIntervalSince1970;
if (interval <= 0) {
return @"刚刚";
}
if (interval < 60) {
return [NSString stringWithFormat:@"%zd 秒前", interval];
}
interval = interval / 60;
if (interval < 60) {
return [NSString stringWithFormat:@"%zd 分钟前", interval];
}
interval = interval / 60;
if (interval < 24) {
return [NSString stringWithFormat:@"%zd 小时前", interval];
}
interval = interval / 24;
if (interval < 7) {
return [NSString stringWithFormat:@"%zd 天前", interval];
}
if (interval < 30) {
return [NSString stringWithFormat:@"%zd 周前", interval / 7];
}
if (interval < 365) {
return [NSString stringWithFormat:@"%zd 个月前", interval / 30];
}
return [NSString stringWithFormat:@"%zd 年前", interval / 365];
}
//邮箱
+ (BOOL)validateEmail:(NSString *)email {
NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
return [emailTest evaluateWithObject:email];
}
- (BOOL)isEmptyString {
return self.length == 0 || [[self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length] == 0;
}
@end
================================================
FILE: IrregularTabBar2/IrregularTabBar2/Category/UIApplication+Extensions.h
================================================
//
// UIApplication+Extensions.h
// Weibo11
//
// Created by JYJ on 15/12/8.
// Copyright © 2015年 itheima. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
@interface UIApplication (Extensions)
/**
* 返回应用程序代理
*/
+ (AppDelegate *)appDelegate;
/**
* 根视图控制器
*/
+ (UIViewController *)rootViewController;
/**
* 返回当前设备对应的启动图片
*/
+ (UIImage *)launchImage;
@end
================================================
FILE: IrregularTabBar2/IrregularTabBar2/Category/UIApplication+Extensions.m
================================================
//
// UIApplication+Extensions.m
// Weibo11
//
// Created by JYJ on 15/12/8.
// Copyright © 2015年 itheima. All rights reserved.
//
#import "UIApplication+Extensions.h"
@implementation UIApplication (Extensions)
+ (AppDelegate *)appDelegate {
return (AppDelegate *)[UIApplication sharedApplication].delegate;
}
+ (UIViewController *)rootViewController {
return [UIApplication appDelegate].window.rootViewController;
}
+ (UIImage *)launchImage {
UIImage *image = nil;
NSArray *launchImages = [NSBundle mainBundle].infoDictionary[@"UILaunchImages"];
for (NSDictionary *dict in launchImages) {
// 1. 将字符串转换成尺寸
CGSize size = CGSizeFromString(dict[@"UILaunchImageSize"]);
// 2. 与当前屏幕进行比较
if (CGSizeEqualToSize(size, [UIScreen ff_screenSize])) {
NSString *filename = dict[@"UILaunchImageName"];
image = [UIImage imageNamed:filename];
break;
}
}
return image;
}
@end
================================================
FILE: IrregularTabBar2/IrregularTabBar2/Category/UIBarButtonItem+Extension.h
================================================
//
// UIBarButtonItem+Extension.h
// JYJ微博
//
// Created by JYJ on 15/3/11.
// Copyright (c) 2015年 JYJ. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface UIBarButtonItem (Extension)
/**
* 返回没有调整图片
*/
+ (UIBarButtonItem *)itemWithImageName:(NSString *)imageName highImageName:(NSString *)highImageName target:target action:(SEL)action;
/**
* 没有文字调整的按钮
*/
+ (UIBarButtonItem *)itemWithName:(NSString *)Name font:(CGFloat)font target:target action:(SEL)action;
/**
* 返回调整文字
*/
+ (NSArray *)itemsWithName:(NSString *)Name font:(CGFloat)font target:target action:(SEL)action;
/**
* 返回调整图片
*/
+ (NSArray *)itemsWithImageName:(NSString *)imageName highImageName:(NSString *)highImageName target:target action:(SEL)action;
@end
================================================
FILE: IrregularTabBar2/IrregularTabBar2/Category/UIBarButtonItem+Extension.m
================================================
//
// UIBarButtonItem+Extension.m
// JYJ微博
//
// Created by JYJ on 15/3/11.
// Copyright (c) 2015年 JYJ. All rights reserved.
//
#import "UIBarButtonItem+Extension.h"
@implementation UIBarButtonItem (Extension)
/**
* 没有图片调整的按钮
*/
+ (UIBarButtonItem *)itemWithImageName:(NSString *)imageName highImageName:(NSString *)highImageName target:target action:(SEL)action {
UIButton *button = [[UIButton alloc] init];
// button.backgroundColor = [UIColor redColor];
// 设置按钮的背景图片
[button setBackgroundImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal];
if (highImageName != nil) {
[button setBackgroundImage: [UIImage imageNamed:highImageName] forState:UIControlStateHighlighted];
}
// 设置按钮的尺寸为背景图片的尺寸
button.size = button.currentBackgroundImage.size;
button.adjustsImageWhenHighlighted = NO;
//监听按钮的点击
[button addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
return [[UIBarButtonItem alloc] initWithCustomView:button];
}
/**
* 没有文字调整的按钮
*/
+ (UIBarButtonItem *)itemWithName:(NSString *)Name font:(CGFloat)font target:target action:(SEL)action {
UIButton *btn = [[UIButton alloc] init];
btn.titleLabel.font = [UIFont navItemFontWithDevice:font];
[btn setTitle:Name forState:UIControlStateNormal];
[btn sizeToFit];
//监听按钮的点击
[btn addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
btn.adjustsImageWhenHighlighted = NO;
return [[UIBarButtonItem alloc] initWithCustomView:btn];
}
+ (NSArray *)itemsWithName:(NSString *)Name font:(CGFloat)font target:target action:(SEL)action {
UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
negativeSpacer.width = -5;
UIButton *btn = [[UIButton alloc] init];
btn.titleLabel.font = [UIFont navItemFontWithDevice:font];
[btn setTitle:Name forState:UIControlStateNormal];
[btn sizeToFit];
//监听按钮的点击
[btn addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
btn.adjustsImageWhenHighlighted = NO;
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:btn];
return @[negativeSpacer, item];
}
+ (NSArray *)itemsWithImageName:(NSString *)imageName highImageName:(NSString *)highImageName target:target action:(SEL)action {
UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
negativeSpacer.width = -5;
UIBarButtonItem *item = [UIBarButtonItem itemWithImageName:imageName highImageName:highImageName target:target action:action];
return @[negativeSpacer, item];
}
@end
================================================
FILE: IrregularTabBar2/IrregularTabBar2/Category/UIButton+Extension.h
================================================
//
// UIButton+Extension.h
// Weibo11
//
// Created by JYJ on 15/12/5.
// Copyright © 2015年 itheima. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface UIButton (Extension)
/**
* 创建按钮有文字,有颜色,有字体,有图片,没有有背景
*
* @param title 标题
* @param color 字体颜色
* @param fontSize 字号
* @param imageName 图像
*
* @return UIButton
*/
+ (instancetype)buttonWithTitle:(NSString *)title titleColor:(UIColor *)titleColor font:(UIFont *)font imageName:(NSString *)imageName target:(id)target action:(SEL)action;
/**
* 创建按钮有文字,有颜色,有字体,有图片,有背景
*
* @param title 标题
* @param color 字体颜色
* @param fontSize 字号
* @param imageName 图像
* @param backImageName 背景图像
*
* @return UIButton
*/
+ (instancetype)buttonWithTitle:(NSString *)title titleColor:(UIColor *)titleColor font:(UIFont *)font imageName:(NSString *)imageName target:(id)target action:(SEL)action backImageName:(NSString *)backImageName;
/**
* 创建按钮有文字,有颜色,有字体,没有图片,没有背景
*
* @param title 标题
* @param titleColor 标题颜色
* @param backImageName 背景图像名称
*
* @return UIButton
*/
+ (instancetype)buttonWithTitle:(NSString *)title titleColor:(UIColor *)titleColor font:(UIFont *)font target:(id)target action:(SEL)action;
/**
* 创建按钮有文字,有颜色,有字体,没有图片,有背景
*
* @param title 标题
* @param titleColor 标题颜色
* @param backImageName 背景图像名称
*
* @return UIButton
*/
+ (instancetype)buttonWithTitle:(NSString *)title titleColor:(UIColor *)titleColor font:(UIFont *)font target:(id)target action:(SEL)action backImageName:(NSString *)backImageName;
@end
================================================
FILE: IrregularTabBar2/IrregularTabBar2/Category/UIButton+Extension.m
================================================
//
// UIButton+Extension.m
// Weibo11
//
// Created by JYJ on 15/12/5.
// Copyright © 2015年 itheima. All rights reserved.
//
#import "UIButton+Extension.h"
@implementation UIButton (Extension)
#pragma mark --- 创建默认按钮--有字体、颜色--有图片---有背景
+ (instancetype)buttonWithTitle:(NSString *)title titleColor:(UIColor *)titleColor font:(UIFont *)font imageName:(NSString *)imageName target:(id)target action:(SEL)action backImageName:(NSString *)backImageName {
UIButton *button = [[UIButton alloc] init];
// 设置标题
[button setTitle:title forState:UIControlStateNormal];
[button setTitleColor:titleColor forState:UIControlStateNormal];
button.titleLabel.font = font;
button.adjustsImageWhe
gitextract_ysblp8zo/ ├── .gitignore ├── IrregularTabBar/ │ ├── IrregularTabBar/ │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── Assets.xcassets/ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ └── Contents.json │ │ │ ├── Contents.json │ │ │ ├── LaunchImage.launchimage/ │ │ │ │ └── Contents.json │ │ │ ├── NavigationBar/ │ │ │ │ ├── Contents.json │ │ │ │ ├── NavBackImage-new.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── navigationbar_back_image.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── navigationbar_close.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ └── personalschedule_icon_add.imageset/ │ │ │ │ └── Contents.json │ │ │ ├── TabBar/ │ │ │ │ ├── Contents.json │ │ │ │ ├── main_badge.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── navigationbarBackgroundWhite.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── tabBar_icon_contrast.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── tabBar_icon_contrast_default.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── tabBar_icon_customer.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── tabBar_icon_customer_default.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── tabBar_icon_mine.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── tabBar_icon_mine_default.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── tabBar_icon_plan.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── tabBar_icon_plan_default.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── tabBar_icon_schedule.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── tabBar_icon_schedule_default.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── tabBar_publish_icon.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── tab_Irregular.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── tab_IrregularX.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── tab_background.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── tab_backgroundX.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ └── tab_camera.imageset/ │ │ │ │ └── Contents.json │ │ │ ├── 摄影机图标_点击前.imageset/ │ │ │ │ └── Contents.json │ │ │ └── 摄影机图标_点击后.imageset/ │ │ │ └── Contents.json │ │ ├── BXTabBar/ │ │ │ ├── BXBadgeView.h │ │ │ ├── BXBadgeView.m │ │ │ ├── BXTabBar.h │ │ │ ├── BXTabBar.m │ │ │ ├── BXTabBarBigButton.h │ │ │ ├── BXTabBarBigButton.m │ │ │ ├── BXTabBarButton.h │ │ │ └── BXTabBarButton.m │ │ ├── Category/ │ │ │ ├── BXExtensions.h │ │ │ ├── Foundation+Log.m │ │ │ ├── NSDate+Extension.h │ │ │ ├── NSDate+Extension.m │ │ │ ├── NSDictionary+Extension.h │ │ │ ├── NSDictionary+Extension.m │ │ │ ├── NSString+BXExtension.h │ │ │ ├── NSString+BXExtension.m │ │ │ ├── UIApplication+Extensions.h │ │ │ ├── UIApplication+Extensions.m │ │ │ ├── UIBarButtonItem+Extension.h │ │ │ ├── UIBarButtonItem+Extension.m │ │ │ ├── UIButton+Extension.h │ │ │ ├── UIButton+Extension.m │ │ │ ├── UIDevice+DeviceType.h │ │ │ ├── UIDevice+DeviceType.m │ │ │ ├── UIFont+Extension.h │ │ │ ├── UIFont+Extension.m │ │ │ ├── UIImage+Extension.h │ │ │ ├── UIImage+Extension.m │ │ │ ├── UIImage+ScreenShot.h │ │ │ ├── UIImage+ScreenShot.m │ │ │ ├── UILabel+Extension.h │ │ │ ├── UILabel+Extension.m │ │ │ ├── UIScreen+Extension.h │ │ │ ├── UIScreen+Extension.m │ │ │ ├── UITextControl+FaultTolerance.m │ │ │ ├── UIView+Extension.h │ │ │ ├── UIView+Extension.m │ │ │ ├── UIView+IBExtension.h │ │ │ ├── UIView+IBExtension.m │ │ │ ├── UIView+Runtime.h │ │ │ └── UIView+Runtime.m │ │ ├── Controller/ │ │ │ ├── DataViewController.h │ │ │ ├── DataViewController.m │ │ │ ├── HomeViewController.h │ │ │ ├── HomeViewController.m │ │ │ ├── InsuranceViewController.h │ │ │ ├── InsuranceViewController.m │ │ │ ├── NewViewController.h │ │ │ ├── NewViewController.m │ │ │ ├── ProfileViewController.h │ │ │ └── ProfileViewController.m │ │ ├── Info.plist │ │ ├── Main/ │ │ │ ├── BXNavigationController.h │ │ │ ├── BXNavigationController.m │ │ │ ├── BXTabBarController.h │ │ │ └── BXTabBarController.m │ │ ├── PrefixHeader.pch │ │ └── main.m │ └── IrregularTabBar.xcodeproj/ │ ├── project.pbxproj │ └── project.xcworkspace/ │ └── contents.xcworkspacedata ├── IrregularTabBar.xcworkspace/ │ └── contents.xcworkspacedata ├── IrregularTabBar2/ │ ├── IrregularTabBar2/ │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── Assets.xcassets/ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ └── Contents.json │ │ │ ├── Contents.json │ │ │ ├── LaunchImage.launchimage/ │ │ │ │ └── Contents.json │ │ │ ├── NavigationBar/ │ │ │ │ ├── Contents.json │ │ │ │ └── navigationButtonReturn.imageset/ │ │ │ │ └── Contents.json │ │ │ ├── TabBar/ │ │ │ │ ├── Contents.json │ │ │ │ ├── m_badge.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── navigationbarBackgroundWhite.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── tabBar_icon_contrast.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── tabBar_icon_contrast_default.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── tabBar_icon_customer.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── tabBar_icon_customer_default.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── tabBar_icon_mine.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── tabBar_icon_mine_default.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── tabBar_icon_plan.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── tabBar_icon_plan_default.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── tabBar_icon_schedule.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ └── tabBar_icon_schedule_default.imageset/ │ │ │ │ └── Contents.json │ │ │ ├── 摄影机图标_点击前.imageset/ │ │ │ │ └── Contents.json │ │ │ └── 摄影机图标_点击后.imageset/ │ │ │ └── Contents.json │ │ ├── BXTabBar/ │ │ │ ├── BXTabBar.h │ │ │ ├── BXTabBar.m │ │ │ ├── BXTabBarBigButton.h │ │ │ └── BXTabBarBigButton.m │ │ ├── Category/ │ │ │ ├── BXExtensions.h │ │ │ ├── Foundation+Log.m │ │ │ ├── NSDate+Extension.h │ │ │ ├── NSDate+Extension.m │ │ │ ├── NSDictionary+Extension.h │ │ │ ├── NSDictionary+Extension.m │ │ │ ├── NSString+BXExtension.h │ │ │ ├── NSString+BXExtension.m │ │ │ ├── UIApplication+Extensions.h │ │ │ ├── UIApplication+Extensions.m │ │ │ ├── UIBarButtonItem+Extension.h │ │ │ ├── UIBarButtonItem+Extension.m │ │ │ ├── UIButton+Extension.h │ │ │ ├── UIButton+Extension.m │ │ │ ├── UIDevice+DeviceType.h │ │ │ ├── UIDevice+DeviceType.m │ │ │ ├── UIFont+Extension.h │ │ │ ├── UIFont+Extension.m │ │ │ ├── UIImage+Extension.h │ │ │ ├── UIImage+Extension.m │ │ │ ├── UIImage+ScreenShot.h │ │ │ ├── UIImage+ScreenShot.m │ │ │ ├── UILabel+Extension.h │ │ │ ├── UILabel+Extension.m │ │ │ ├── UIScreen+Extension.h │ │ │ ├── UIScreen+Extension.m │ │ │ ├── UITextControl+FaultTolerance.m │ │ │ ├── UIView+Extension.h │ │ │ ├── UIView+Extension.m │ │ │ ├── UIView+IBExtension.h │ │ │ ├── UIView+IBExtension.m │ │ │ ├── UIView+Runtime.h │ │ │ └── UIView+Runtime.m │ │ ├── Controller/ │ │ │ ├── DataViewController.h │ │ │ ├── DataViewController.m │ │ │ ├── HomeViewController.h │ │ │ ├── HomeViewController.m │ │ │ ├── InsuranceViewController.h │ │ │ ├── InsuranceViewController.m │ │ │ ├── NewViewController.h │ │ │ ├── NewViewController.m │ │ │ ├── ProfileViewController.h │ │ │ └── ProfileViewController.m │ │ ├── Info.plist │ │ ├── Main/ │ │ │ ├── BXNavigationController.h │ │ │ ├── BXNavigationController.m │ │ │ ├── BXTabBarController.h │ │ │ └── BXTabBarController.m │ │ ├── PrefixHeader.pch │ │ └── main.m │ └── IrregularTabBar2.xcodeproj/ │ ├── project.pbxproj │ └── project.xcworkspace/ │ └── contents.xcworkspacedata ├── IrregularTabBar3/ │ ├── IrregularTabBar3/ │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── Assets.xcassets/ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ └── Contents.json │ │ │ ├── Contents.json │ │ │ ├── LaunchImage.launchimage/ │ │ │ │ └── Contents.json │ │ │ ├── NavigationBar/ │ │ │ │ ├── Contents.json │ │ │ │ └── navigationButtonReturn.imageset/ │ │ │ │ └── Contents.json │ │ │ └── TabBar/ │ │ │ ├── Contents.json │ │ │ ├── main_badge.imageset/ │ │ │ │ └── Contents.json │ │ │ ├── tabBar_icon_contrast.imageset/ │ │ │ │ └── Contents.json │ │ │ ├── tabBar_icon_contrast_default.imageset/ │ │ │ │ └── Contents.json │ │ │ ├── tabBar_icon_customer.imageset/ │ │ │ │ └── Contents.json │ │ │ ├── tabBar_icon_customer_default.imageset/ │ │ │ │ └── Contents.json │ │ │ ├── tabBar_icon_mine.imageset/ │ │ │ │ └── Contents.json │ │ │ ├── tabBar_icon_mine_default.imageset/ │ │ │ │ └── Contents.json │ │ │ ├── tabBar_icon_plan.imageset/ │ │ │ │ └── Contents.json │ │ │ ├── tabBar_icon_plan_default.imageset/ │ │ │ │ └── Contents.json │ │ │ ├── tabBar_icon_schedule.imageset/ │ │ │ │ └── Contents.json │ │ │ ├── tabBar_icon_schedule_default.imageset/ │ │ │ │ └── Contents.json │ │ │ ├── tabbar_background.imageset/ │ │ │ │ └── Contents.json │ │ │ ├── tabbar_compose_button.imageset/ │ │ │ │ └── Contents.json │ │ │ ├── tabbar_compose_button_highlighted.imageset/ │ │ │ │ └── Contents.json │ │ │ ├── tabbar_compose_icon_add.imageset/ │ │ │ │ └── Contents.json │ │ │ └── tabbar_compose_icon_add_highlighted.imageset/ │ │ │ └── Contents.json │ │ ├── Category/ │ │ │ ├── BXExtensions.h │ │ │ ├── Foundation+Log.m │ │ │ ├── NSDate+Extension.h │ │ │ ├── NSDate+Extension.m │ │ │ ├── NSDictionary+Extension.h │ │ │ ├── NSDictionary+Extension.m │ │ │ ├── NSString+BXExtension.h │ │ │ ├── NSString+BXExtension.m │ │ │ ├── UIApplication+Extensions.h │ │ │ ├── UIApplication+Extensions.m │ │ │ ├── UIBarButtonItem+Extension.h │ │ │ ├── UIBarButtonItem+Extension.m │ │ │ ├── UIButton+Extension.h │ │ │ ├── UIButton+Extension.m │ │ │ ├── UIDevice+DeviceType.h │ │ │ ├── UIDevice+DeviceType.m │ │ │ ├── UIFont+Extension.h │ │ │ ├── UIFont+Extension.m │ │ │ ├── UIImage+Extension.h │ │ │ ├── UIImage+Extension.m │ │ │ ├── UIImage+ScreenShot.h │ │ │ ├── UIImage+ScreenShot.m │ │ │ ├── UILabel+Extension.h │ │ │ ├── UILabel+Extension.m │ │ │ ├── UIScreen+Extension.h │ │ │ ├── UIScreen+Extension.m │ │ │ ├── UITextControl+FaultTolerance.m │ │ │ ├── UIView+Extension.h │ │ │ ├── UIView+Extension.m │ │ │ ├── UIView+IBExtension.h │ │ │ ├── UIView+IBExtension.m │ │ │ ├── UIView+Runtime.h │ │ │ └── UIView+Runtime.m │ │ ├── Controller/ │ │ │ ├── DataViewController.h │ │ │ ├── DataViewController.m │ │ │ ├── HomeViewController.h │ │ │ ├── HomeViewController.m │ │ │ ├── InsuranceViewController.h │ │ │ ├── InsuranceViewController.m │ │ │ ├── NewViewController.h │ │ │ ├── NewViewController.m │ │ │ ├── ProfileViewController.h │ │ │ └── ProfileViewController.m │ │ ├── Info.plist │ │ ├── Main/ │ │ │ ├── BXNavigationController.h │ │ │ ├── BXNavigationController.m │ │ │ ├── BXTabBarController.h │ │ │ └── BXTabBarController.m │ │ ├── PrefixHeader.pch │ │ └── main.m │ └── IrregularTabBar3.xcodeproj/ │ ├── project.pbxproj │ └── project.xcworkspace/ │ └── contents.xcworkspacedata ├── LICENSE └── README.md
Condensed preview — 249 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (438K chars).
[
{
"path": ".gitignore",
"chars": 1170,
"preview": "# Xcode\n#\n# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore\n\n"
},
{
"path": "IrregularTabBar/IrregularTabBar/AppDelegate.h",
"chars": 276,
"preview": "//\n// AppDelegate.h\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/3.\n// Copyright © 2016年 baobeikeji. All rights r"
},
{
"path": "IrregularTabBar/IrregularTabBar/AppDelegate.m",
"chars": 2298,
"preview": "//\n// AppDelegate.m\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/3.\n// Copyright © 2016年 baobeikeji. All rights r"
},
{
"path": "IrregularTabBar/IrregularTabBar/Assets.xcassets/AppIcon.appiconset/Contents.json",
"chars": 4363,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"iphone\",\n \"size\" : \"20x20\",\n \"scale\" : \"2x\"\n },\n {\n \"idiom\""
},
{
"path": "IrregularTabBar/IrregularTabBar/Assets.xcassets/Contents.json",
"chars": 62,
"preview": "{\n \"info\" : {\n \"version\" : 1,\n \"author\" : \"xcode\"\n }\n}"
},
{
"path": "IrregularTabBar/IrregularTabBar/Assets.xcassets/LaunchImage.launchimage/Contents.json",
"chars": 2347,
"preview": "{\n \"images\" : [\n {\n \"extent\" : \"full-screen\",\n \"idiom\" : \"iphone\",\n \"subtype\" : \"2436h\",\n \"filen"
},
{
"path": "IrregularTabBar/IrregularTabBar/Assets.xcassets/NavigationBar/Contents.json",
"chars": 62,
"preview": "{\n \"info\" : {\n \"version\" : 1,\n \"author\" : \"xcode\"\n }\n}"
},
{
"path": "IrregularTabBar/IrregularTabBar/Assets.xcassets/NavigationBar/NavBackImage-new.imageset/Contents.json",
"chars": 313,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"filename\" : \"NavBackImage-new.png\",\n \"scale\" : \"1x\"\n "
},
{
"path": "IrregularTabBar/IrregularTabBar/Assets.xcassets/NavigationBar/navigationbar_back_image.imageset/Contents.json",
"chars": 429,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"filename\" : \"navigationbar_back_image.png\",\n \"scale\" : \""
},
{
"path": "IrregularTabBar/IrregularTabBar/Assets.xcassets/NavigationBar/navigationbar_close.imageset/Contents.json",
"chars": 368,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar/IrregularTabBar/Assets.xcassets/NavigationBar/personalschedule_icon_add.imageset/Contents.json",
"chars": 380,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/Contents.json",
"chars": 62,
"preview": "{\n \"info\" : {\n \"version\" : 1,\n \"author\" : \"xcode\"\n }\n}"
},
{
"path": "IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/main_badge.imageset/Contents.json",
"chars": 350,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/navigationbarBackgroundWhite.imageset/Contents.json",
"chars": 325,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"filename\" : \"navigationbarBackgroundWhite.png\",\n \"scale\""
},
{
"path": "IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/tabBar_icon_contrast.imageset/Contents.json",
"chars": 370,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/tabBar_icon_contrast_default.imageset/Contents.json",
"chars": 386,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/tabBar_icon_customer.imageset/Contents.json",
"chars": 370,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/tabBar_icon_customer_default.imageset/Contents.json",
"chars": 386,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/tabBar_icon_mine.imageset/Contents.json",
"chars": 362,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/tabBar_icon_mine_default.imageset/Contents.json",
"chars": 378,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/tabBar_icon_plan.imageset/Contents.json",
"chars": 362,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/tabBar_icon_plan_default.imageset/Contents.json",
"chars": 378,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/tabBar_icon_schedule.imageset/Contents.json",
"chars": 370,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/tabBar_icon_schedule_default.imageset/Contents.json",
"chars": 386,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/tabBar_publish_icon.imageset/Contents.json",
"chars": 368,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/tab_Irregular.imageset/Contents.json",
"chars": 313,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/tab_IrregularX.imageset/Contents.json",
"chars": 314,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/tab_background.imageset/Contents.json",
"chars": 314,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/tab_backgroundX.imageset/Contents.json",
"chars": 315,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar/IrregularTabBar/Assets.xcassets/TabBar/tab_camera.imageset/Contents.json",
"chars": 350,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar/IrregularTabBar/Assets.xcassets/摄影机图标_点击前.imageset/Contents.json",
"chars": 309,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar/IrregularTabBar/Assets.xcassets/摄影机图标_点击后.imageset/Contents.json",
"chars": 309,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar/IrregularTabBar/BXTabBar/BXBadgeView.h",
"chars": 260,
"preview": "//\n// BXBadgeView.h\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/31.\n// Copyright © 2016年 baobeikeji. All rights "
},
{
"path": "IrregularTabBar/IrregularTabBar/BXTabBar/BXBadgeView.m",
"chars": 1233,
"preview": "//\n// BXBadgeView.m\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/31.\n// Copyright © 2016年 baobeikeji. All rights "
},
{
"path": "IrregularTabBar/IrregularTabBar/BXTabBar/BXTabBar.h",
"chars": 524,
"preview": "//\n// BXTabBar.h\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/3.\n// Copyright © 2016年 baobeikeji. All rights rese"
},
{
"path": "IrregularTabBar/IrregularTabBar/BXTabBar/BXTabBar.m",
"chars": 5095,
"preview": "//\n// BXTabBar.m\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/3.\n// Copyright © 2016年 baobeikeji. All rights rese"
},
{
"path": "IrregularTabBar/IrregularTabBar/BXTabBar/BXTabBarBigButton.h",
"chars": 210,
"preview": "//\n// BXTabBarBigButton.h\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/3.\n// Copyright © 2016年 baobeikeji. All ri"
},
{
"path": "IrregularTabBar/IrregularTabBar/BXTabBar/BXTabBarBigButton.m",
"chars": 1823,
"preview": "//\n// BXTabBarBigButton.m\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/3.\n// Copyright © 2016年 baobeikeji. All ri"
},
{
"path": "IrregularTabBar/IrregularTabBar/BXTabBar/BXTabBarButton.h",
"chars": 265,
"preview": "//\n// BXTabBarButton.h\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/3.\n// Copyright © 2016年 baobeikeji. All right"
},
{
"path": "IrregularTabBar/IrregularTabBar/BXTabBar/BXTabBarButton.m",
"chars": 2036,
"preview": "//\n// BXTabBarButton.m\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/3.\n// Copyright © 2016年 baobeikeji. All right"
},
{
"path": "IrregularTabBar/IrregularTabBar/Category/BXExtensions.h",
"chars": 616,
"preview": "//\n// BXExtensions.h\n// BXInsurenceBroker\n//\n// Created by JYJ on 16/3/15.\n// Copyright © 2016年 baobeikeji. All righ"
},
{
"path": "IrregularTabBar/IrregularTabBar/Category/Foundation+Log.m",
"chars": 3119,
"preview": "\n#import <Foundation/Foundation.h>\n//#import <objc/runtime.h>\n\n//@implementation NSObject (Log)\n//+ (void)load {\n// /"
},
{
"path": "IrregularTabBar/IrregularTabBar/Category/NSDate+Extension.h",
"chars": 413,
"preview": "//\n// NSDate+Extension.h\n// Weibo11\n//\n// Created by JYJ on 15/12/12.\n// Copyright © 2015年 itheima. All rights reser"
},
{
"path": "IrregularTabBar/IrregularTabBar/Category/NSDate+Extension.m",
"chars": 1499,
"preview": "//\n// NSDate+Extension.m\n// Weibo11\n//\n// Created by JYJ on 15/12/12.\n// Copyright © 2015年 itheima. All rights reser"
},
{
"path": "IrregularTabBar/IrregularTabBar/Category/NSDictionary+Extension.h",
"chars": 354,
"preview": "//\n// NSDictionary+Extension.h\n// BXInsurenceBroker\n//\n// Created by linsihua on 16/4/9.\n// Copyright © 2016年 baobei"
},
{
"path": "IrregularTabBar/IrregularTabBar/Category/NSDictionary+Extension.m",
"chars": 2542,
"preview": "//\n// NSDictionary+Extension.m\n// BXInsurenceBroker\n//\n// Created by linsihua on 16/4/9.\n// Copyright © 2016年 baobei"
},
{
"path": "IrregularTabBar/IrregularTabBar/Category/NSString+BXExtension.h",
"chars": 933,
"preview": "//\n// NSString+BXExtension.h\n// BXInsurenceBroker\n//\n// Created by JYJ on 16/2/23.\n// Copyright © 2016年 baobeikeji. "
},
{
"path": "IrregularTabBar/IrregularTabBar/Category/NSString+BXExtension.m",
"chars": 5331,
"preview": "//\n// NSString+BXExtension.m\n// BXInsurenceBroker\n//\n// Created by JYJ on 16/2/23.\n// Copyright © 2016年 baobeikeji. "
},
{
"path": "IrregularTabBar/IrregularTabBar/Category/UIApplication+Extensions.h",
"chars": 394,
"preview": "//\n// UIApplication+Extensions.h\n// Weibo11\n//\n// Created by JYJ on 15/12/8.\n// Copyright © 2015年 itheima. All right"
},
{
"path": "IrregularTabBar/IrregularTabBar/Category/UIApplication+Extensions.m",
"chars": 1000,
"preview": "//\n// UIApplication+Extensions.m\n// Weibo11\n//\n// Created by JYJ on 15/12/8.\n// Copyright © 2015年 itheima. All right"
},
{
"path": "IrregularTabBar/IrregularTabBar/Category/UIBarButtonItem+Extension.h",
"chars": 750,
"preview": "//\n// UIBarButtonItem+Extension.h\n// JYJ微博\n//\n// Created by JYJ on 15/3/11.\n// Copyright (c) 2015年 JYJ. All rights r"
},
{
"path": "IrregularTabBar/IrregularTabBar/Category/UIBarButtonItem+Extension.m",
"chars": 2761,
"preview": "//\n// UIBarButtonItem+Extension.m\n// JYJ微博\n//\n// Created by JYJ on 15/3/11.\n// Copyright (c) 2015年 JYJ. All rights r"
},
{
"path": "IrregularTabBar/IrregularTabBar/Category/UIButton+Extension.h",
"chars": 1602,
"preview": "//\n// UIButton+Extension.h\n// Weibo11\n//\n// Created by JYJ on 15/12/5.\n// Copyright © 2015年 itheima. All rights rese"
},
{
"path": "IrregularTabBar/IrregularTabBar/Category/UIButton+Extension.m",
"chars": 2633,
"preview": "//\n// UIButton+Extension.m\n// Weibo11\n//\n// Created by JYJ on 15/12/5.\n// Copyright © 2015年 itheima. All rights rese"
},
{
"path": "IrregularTabBar/IrregularTabBar/Category/UIDevice+DeviceType.h",
"chars": 332,
"preview": "//\n// UIDevice+DeviceType.h\n// honeyshare\n//\n// Created by LLY on 14-11-14.\n// Copyright (c) 2014年 意会信息科技. All right"
},
{
"path": "IrregularTabBar/IrregularTabBar/Category/UIDevice+DeviceType.m",
"chars": 2834,
"preview": "//\n// UIDevice+DeviceType.m\n// honeyshare\n//\n// Created by LLY on 14-11-14.\n// Copyright (c) 2014年 意会信息科技. All right"
},
{
"path": "IrregularTabBar/IrregularTabBar/Category/UIFont+Extension.h",
"chars": 579,
"preview": "//\n// UIFont+Extension.h\n// BXInsurenceBroker\n//\n// Created by JYJ on 16/2/23.\n// Copyright © 2016年 baobeikeji. All "
},
{
"path": "IrregularTabBar/IrregularTabBar/Category/UIFont+Extension.m",
"chars": 1837,
"preview": "//\n// UIFont+Extension.m\n// BXInsurenceBroker\n//\n// Created by JYJ on 16/2/23.\n// Copyright © 2016年 baobeikeji. All "
},
{
"path": "IrregularTabBar/IrregularTabBar/Category/UIImage+Extension.h",
"chars": 924,
"preview": "//\n// UIImage+Extension.h\n// JYJ微博\n//\n// Created by JYJ on 15/3/11.\n// Copyright (c) 2015年 JYJ. All rights reserved."
},
{
"path": "IrregularTabBar/IrregularTabBar/Category/UIImage+Extension.m",
"chars": 3639,
"preview": "//\n// UIImage+Extension.m\n// JYJ微博\n//\n// Created by JYJ on 15/3/11.\n// Copyright (c) 2015年 JYJ. All rights reserved."
},
{
"path": "IrregularTabBar/IrregularTabBar/Category/UIImage+ScreenShot.h",
"chars": 261,
"preview": "//\n// UIImage+ScreenShot.h\n// Weibo11\n//\n// Created by JYJ on 15/12/12.\n// Copyright © 2015年 itheima. All rights res"
},
{
"path": "IrregularTabBar/IrregularTabBar/Category/UIImage+ScreenShot.m",
"chars": 739,
"preview": "//\n// UIImage+ScreenShot.m\n// Weibo11\n//\n// Created by JYJ on 15/12/12.\n// Copyright © 2015年 itheima. All rights res"
},
{
"path": "IrregularTabBar/IrregularTabBar/Category/UILabel+Extension.h",
"chars": 1206,
"preview": "//\n// UILabel+Extension.h\n// Weibo11\n//\n// Created by JYJ on 15/12/5.\n// Copyright © 2015年 itheima. All rights reser"
},
{
"path": "IrregularTabBar/IrregularTabBar/Category/UILabel+Extension.m",
"chars": 1381,
"preview": "//\n// UILabel+Extension.m\n// Weibo11\n//\n// Created by JYJ on 15/12/5.\n// Copyright © 2015年 itheima. All rights reser"
},
{
"path": "IrregularTabBar/IrregularTabBar/Category/UIScreen+Extension.h",
"chars": 261,
"preview": "//\n// UIScreen+Extension.h\n// Weibo11\n//\n// Created by JYJ on 15/12/8.\n// Copyright © 2015年 itheima. All rights rese"
},
{
"path": "IrregularTabBar/IrregularTabBar/Category/UIScreen+Extension.m",
"chars": 407,
"preview": "//\n// UIScreen+Extension.m\n// Weibo11\n//\n// Created by JYJ on 15/12/8.\n// Copyright © 2015年 itheima. All rights rese"
},
{
"path": "IrregularTabBar/IrregularTabBar/Category/UITextControl+FaultTolerance.m",
"chars": 4933,
"preview": "//\n// UITextControl+FaultTolerance.m\n// BaoXianDaiDai\n//\n// Created by linsihua on 16/4/5.\n// Copyright © 2016年 baob"
},
{
"path": "IrregularTabBar/IrregularTabBar/Category/UIView+Extension.h",
"chars": 973,
"preview": "//\n// UIView+Extension.h\n// 01-黑酷\n//\n// Created by apple on 14-6-27.\n// Copyright (c) 2014年 heima. All rights reserv"
},
{
"path": "IrregularTabBar/IrregularTabBar/Category/UIView+Extension.m",
"chars": 2700,
"preview": "//\n// UIView+Extension.m\n// 01-黑酷\n//\n// Created by apple on 14-6-27.\n// Copyright (c) 2014年 heima. All rights reserv"
},
{
"path": "IrregularTabBar/IrregularTabBar/Category/UIView+IBExtension.h",
"chars": 431,
"preview": "//\n// UIView+IBExtension.h\n// Weibo11\n//\n// Created by JYJ on 15/12/6.\n// Copyright © 2015年 itheima. All rights rese"
},
{
"path": "IrregularTabBar/IrregularTabBar/Category/UIView+IBExtension.m",
"chars": 906,
"preview": "//\n// UIView+IBExtension.m\n// Weibo11\n//\n// Created by JYJ on 15/12/6.\n// Copyright © 2015年 itheima. All rights rese"
},
{
"path": "IrregularTabBar/IrregularTabBar/Category/UIView+Runtime.h",
"chars": 500,
"preview": "//\n// UIView+Runtime.h\n// Weibo11\n//\n// Created by JYJ on 15/12/12.\n// Copyright © 2015年 itheima. All rights reserve"
},
{
"path": "IrregularTabBar/IrregularTabBar/Category/UIView+Runtime.m",
"chars": 1552,
"preview": "//\n// UIView+Runtime.m\n// Weibo11\n//\n// Created by JYJ on 15/12/12.\n// Copyright © 2015年 itheima. All rights reserve"
},
{
"path": "IrregularTabBar/IrregularTabBar/Controller/DataViewController.h",
"chars": 220,
"preview": "//\n// DataViewController.h\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/3.\n// Copyright © 2016年 baobeikeji. All r"
},
{
"path": "IrregularTabBar/IrregularTabBar/Controller/DataViewController.m",
"chars": 833,
"preview": "//\n// DataViewController.m\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/3.\n// Copyright © 2016年 baobeikeji. All r"
},
{
"path": "IrregularTabBar/IrregularTabBar/Controller/HomeViewController.h",
"chars": 225,
"preview": "//\n// HomeViewController.h\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/3.\n// Copyright © 2016年 baobeikeji. All r"
},
{
"path": "IrregularTabBar/IrregularTabBar/Controller/HomeViewController.m",
"chars": 2141,
"preview": "//\n// HomeViewController.m\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/3.\n// Copyright © 2016年 baobeikeji. All r"
},
{
"path": "IrregularTabBar/IrregularTabBar/Controller/InsuranceViewController.h",
"chars": 230,
"preview": "//\n// InsuranceViewController.h\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/3.\n// Copyright © 2016年 baobeikeji. "
},
{
"path": "IrregularTabBar/IrregularTabBar/Controller/InsuranceViewController.m",
"chars": 853,
"preview": "//\n// InsuranceViewController.m\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/3.\n// Copyright © 2016年 baobeikeji. "
},
{
"path": "IrregularTabBar/IrregularTabBar/Controller/NewViewController.h",
"chars": 223,
"preview": "//\n// NewViewController.h\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/3.\n// Copyright © 2016年 baobeikeji. All ri"
},
{
"path": "IrregularTabBar/IrregularTabBar/Controller/NewViewController.m",
"chars": 1962,
"preview": "//\n// NewViewController.m\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/3.\n// Copyright © 2016年 baobeikeji. All ri"
},
{
"path": "IrregularTabBar/IrregularTabBar/Controller/ProfileViewController.h",
"chars": 226,
"preview": "//\n// ProfileViewController.h\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/3.\n// Copyright © 2016年 baobeikeji. Al"
},
{
"path": "IrregularTabBar/IrregularTabBar/Controller/ProfileViewController.m",
"chars": 1271,
"preview": "//\n// ProfileViewController.m\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/3.\n// Copyright © 2016年 baobeikeji. Al"
},
{
"path": "IrregularTabBar/IrregularTabBar/Info.plist",
"chars": 1070,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "IrregularTabBar/IrregularTabBar/Main/BXNavigationController.h",
"chars": 283,
"preview": "//\n// BXNavigationController.h\n// BaoXianDaiDai\n//\n// Created by JYJ on 15/5/28.\n// Copyright (c) 2015年 baobeikeji.c"
},
{
"path": "IrregularTabBar/IrregularTabBar/Main/BXNavigationController.m",
"chars": 2673,
"preview": "//\n// BXNavigationController.m\n// BaoXianDaiDai\n//\n// Created by JYJ on 15/5/28.\n// Copyright (c) 2015年 baobeikeji.c"
},
{
"path": "IrregularTabBar/IrregularTabBar/Main/BXTabBarController.h",
"chars": 226,
"preview": "//\n// BXTabBarController.h\n// BaoXianDaiDai\n//\n// Created by JYJ on 15/5/28.\n// Copyright (c) 2015年 baobeikeji.cn. A"
},
{
"path": "IrregularTabBar/IrregularTabBar/Main/BXTabBarController.m",
"chars": 7514,
"preview": "//\n// BXTabBarController.m\n// BaoXianDaiDai\n//\n// Created by JYJ on 15/5/28.\n// Copyright (c) 2015年 baobeikeji.cn. A"
},
{
"path": "IrregularTabBar/IrregularTabBar/PrefixHeader.pch",
"chars": 1753,
"preview": "//\n// PrefixHeader.pch\n// BXInsureceBroker\n//\n// Created by JYJ on 16/2/19.\n// Copyright © 2016年 baobeikeji. All rig"
},
{
"path": "IrregularTabBar/IrregularTabBar/main.m",
"chars": 333,
"preview": "//\n// main.m\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/3.\n// Copyright © 2016年 baobeikeji. All rights reserved"
},
{
"path": "IrregularTabBar/IrregularTabBar.xcodeproj/project.pbxproj",
"chars": 31633,
"preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
},
{
"path": "IrregularTabBar/IrregularTabBar.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
"chars": 160,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n version = \"1.0\">\n <FileRef\n location = \"self:IrregularTabBar"
},
{
"path": "IrregularTabBar.xcworkspace/contents.xcworkspacedata",
"chars": 369,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n version = \"1.0\">\n <FileRef\n location = \"group:IrregularTabBa"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/AppDelegate.h",
"chars": 277,
"preview": "//\n// AppDelegate.h\n// IrregularTabBar2\n//\n// Created by JYJ on 16/6/1.\n// Copyright © 2016年 baobeikeji. All rights "
},
{
"path": "IrregularTabBar2/IrregularTabBar2/AppDelegate.m",
"chars": 2294,
"preview": "//\n// AppDelegate.m\n// IrregularTabBar2\n//\n// Created by JYJ on 16/6/1.\n// Copyright © 2016年 baobeikeji. All rights "
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Assets.xcassets/AppIcon.appiconset/Contents.json",
"chars": 4361,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"iphone\",\n \"size\" : \"20x20\",\n \"scale\" : \"2x\"\n },\n {\n \"idiom\""
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Assets.xcassets/Contents.json",
"chars": 62,
"preview": "{\n \"info\" : {\n \"version\" : 1,\n \"author\" : \"xcode\"\n }\n}"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Assets.xcassets/LaunchImage.launchimage/Contents.json",
"chars": 2529,
"preview": "{\n \"images\" : [\n {\n \"extent\" : \"full-screen\",\n \"idiom\" : \"iphone\",\n \"subtype\" : \"2436h\",\n \"filen"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Assets.xcassets/NavigationBar/Contents.json",
"chars": 62,
"preview": "{\n \"info\" : {\n \"version\" : 1,\n \"author\" : \"xcode\"\n }\n}"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Assets.xcassets/NavigationBar/navigationButtonReturn.imageset/Contents.json",
"chars": 423,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"filename\" : \"navigationButtonReturn.png\",\n \"scale\" : \"1x"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Assets.xcassets/TabBar/Contents.json",
"chars": 62,
"preview": "{\n \"info\" : {\n \"version\" : 1,\n \"author\" : \"xcode\"\n }\n}"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Assets.xcassets/TabBar/m_badge.imageset/Contents.json",
"chars": 307,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Assets.xcassets/TabBar/navigationbarBackgroundWhite.imageset/Contents.json",
"chars": 325,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"filename\" : \"navigationbarBackgroundWhite.png\",\n \"scale\""
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Assets.xcassets/TabBar/tabBar_icon_contrast.imageset/Contents.json",
"chars": 370,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Assets.xcassets/TabBar/tabBar_icon_contrast_default.imageset/Contents.json",
"chars": 386,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Assets.xcassets/TabBar/tabBar_icon_customer.imageset/Contents.json",
"chars": 370,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Assets.xcassets/TabBar/tabBar_icon_customer_default.imageset/Contents.json",
"chars": 386,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Assets.xcassets/TabBar/tabBar_icon_mine.imageset/Contents.json",
"chars": 362,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Assets.xcassets/TabBar/tabBar_icon_mine_default.imageset/Contents.json",
"chars": 378,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Assets.xcassets/TabBar/tabBar_icon_plan.imageset/Contents.json",
"chars": 362,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Assets.xcassets/TabBar/tabBar_icon_plan_default.imageset/Contents.json",
"chars": 378,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Assets.xcassets/TabBar/tabBar_icon_schedule.imageset/Contents.json",
"chars": 370,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Assets.xcassets/TabBar/tabBar_icon_schedule_default.imageset/Contents.json",
"chars": 386,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Assets.xcassets/摄影机图标_点击前.imageset/Contents.json",
"chars": 309,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Assets.xcassets/摄影机图标_点击后.imageset/Contents.json",
"chars": 309,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar2/IrregularTabBar2/BXTabBar/BXTabBar.h",
"chars": 192,
"preview": "//\n// BXTabBar.h\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/3.\n// Copyright © 2016年 baobeikeji. All rights rese"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/BXTabBar/BXTabBar.m",
"chars": 2346,
"preview": "//\n// BXTabBar.m\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/3.\n// Copyright © 2016年 baobeikeji. All rights rese"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/BXTabBar/BXTabBarBigButton.h",
"chars": 210,
"preview": "//\n// BXTabBarBigButton.h\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/3.\n// Copyright © 2016年 baobeikeji. All ri"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/BXTabBar/BXTabBarBigButton.m",
"chars": 1217,
"preview": "//\n// BXTabBarBigButton.m\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/3.\n// Copyright © 2016年 baobeikeji. All ri"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Category/BXExtensions.h",
"chars": 616,
"preview": "//\n// BXExtensions.h\n// BXInsurenceBroker\n//\n// Created by JYJ on 16/3/15.\n// Copyright © 2016年 baobeikeji. All righ"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Category/Foundation+Log.m",
"chars": 3119,
"preview": "\n#import <Foundation/Foundation.h>\n//#import <objc/runtime.h>\n\n//@implementation NSObject (Log)\n//+ (void)load {\n// /"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Category/NSDate+Extension.h",
"chars": 413,
"preview": "//\n// NSDate+Extension.h\n// Weibo11\n//\n// Created by JYJ on 15/12/12.\n// Copyright © 2015年 itheima. All rights reser"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Category/NSDate+Extension.m",
"chars": 1499,
"preview": "//\n// NSDate+Extension.m\n// Weibo11\n//\n// Created by JYJ on 15/12/12.\n// Copyright © 2015年 itheima. All rights reser"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Category/NSDictionary+Extension.h",
"chars": 354,
"preview": "//\n// NSDictionary+Extension.h\n// BXInsurenceBroker\n//\n// Created by linsihua on 16/4/9.\n// Copyright © 2016年 baobei"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Category/NSDictionary+Extension.m",
"chars": 2542,
"preview": "//\n// NSDictionary+Extension.m\n// BXInsurenceBroker\n//\n// Created by linsihua on 16/4/9.\n// Copyright © 2016年 baobei"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Category/NSString+BXExtension.h",
"chars": 933,
"preview": "//\n// NSString+BXExtension.h\n// BXInsurenceBroker\n//\n// Created by JYJ on 16/2/23.\n// Copyright © 2016年 baobeikeji. "
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Category/NSString+BXExtension.m",
"chars": 5331,
"preview": "//\n// NSString+BXExtension.m\n// BXInsurenceBroker\n//\n// Created by JYJ on 16/2/23.\n// Copyright © 2016年 baobeikeji. "
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Category/UIApplication+Extensions.h",
"chars": 394,
"preview": "//\n// UIApplication+Extensions.h\n// Weibo11\n//\n// Created by JYJ on 15/12/8.\n// Copyright © 2015年 itheima. All right"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Category/UIApplication+Extensions.m",
"chars": 1000,
"preview": "//\n// UIApplication+Extensions.m\n// Weibo11\n//\n// Created by JYJ on 15/12/8.\n// Copyright © 2015年 itheima. All right"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Category/UIBarButtonItem+Extension.h",
"chars": 750,
"preview": "//\n// UIBarButtonItem+Extension.h\n// JYJ微博\n//\n// Created by JYJ on 15/3/11.\n// Copyright (c) 2015年 JYJ. All rights r"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Category/UIBarButtonItem+Extension.m",
"chars": 2761,
"preview": "//\n// UIBarButtonItem+Extension.m\n// JYJ微博\n//\n// Created by JYJ on 15/3/11.\n// Copyright (c) 2015年 JYJ. All rights r"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Category/UIButton+Extension.h",
"chars": 1602,
"preview": "//\n// UIButton+Extension.h\n// Weibo11\n//\n// Created by JYJ on 15/12/5.\n// Copyright © 2015年 itheima. All rights rese"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Category/UIButton+Extension.m",
"chars": 2633,
"preview": "//\n// UIButton+Extension.m\n// Weibo11\n//\n// Created by JYJ on 15/12/5.\n// Copyright © 2015年 itheima. All rights rese"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Category/UIDevice+DeviceType.h",
"chars": 332,
"preview": "//\n// UIDevice+DeviceType.h\n// honeyshare\n//\n// Created by LLY on 14-11-14.\n// Copyright (c) 2014年 意会信息科技. All right"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Category/UIDevice+DeviceType.m",
"chars": 2834,
"preview": "//\n// UIDevice+DeviceType.m\n// honeyshare\n//\n// Created by LLY on 14-11-14.\n// Copyright (c) 2014年 意会信息科技. All right"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Category/UIFont+Extension.h",
"chars": 579,
"preview": "//\n// UIFont+Extension.h\n// BXInsurenceBroker\n//\n// Created by JYJ on 16/2/23.\n// Copyright © 2016年 baobeikeji. All "
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Category/UIFont+Extension.m",
"chars": 1837,
"preview": "//\n// UIFont+Extension.m\n// BXInsurenceBroker\n//\n// Created by JYJ on 16/2/23.\n// Copyright © 2016年 baobeikeji. All "
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Category/UIImage+Extension.h",
"chars": 924,
"preview": "//\n// UIImage+Extension.h\n// JYJ微博\n//\n// Created by JYJ on 15/3/11.\n// Copyright (c) 2015年 JYJ. All rights reserved."
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Category/UIImage+Extension.m",
"chars": 3639,
"preview": "//\n// UIImage+Extension.m\n// JYJ微博\n//\n// Created by JYJ on 15/3/11.\n// Copyright (c) 2015年 JYJ. All rights reserved."
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Category/UIImage+ScreenShot.h",
"chars": 261,
"preview": "//\n// UIImage+ScreenShot.h\n// Weibo11\n//\n// Created by JYJ on 15/12/12.\n// Copyright © 2015年 itheima. All rights res"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Category/UIImage+ScreenShot.m",
"chars": 739,
"preview": "//\n// UIImage+ScreenShot.m\n// Weibo11\n//\n// Created by JYJ on 15/12/12.\n// Copyright © 2015年 itheima. All rights res"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Category/UILabel+Extension.h",
"chars": 1206,
"preview": "//\n// UILabel+Extension.h\n// Weibo11\n//\n// Created by JYJ on 15/12/5.\n// Copyright © 2015年 itheima. All rights reser"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Category/UILabel+Extension.m",
"chars": 1381,
"preview": "//\n// UILabel+Extension.m\n// Weibo11\n//\n// Created by JYJ on 15/12/5.\n// Copyright © 2015年 itheima. All rights reser"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Category/UIScreen+Extension.h",
"chars": 261,
"preview": "//\n// UIScreen+Extension.h\n// Weibo11\n//\n// Created by JYJ on 15/12/8.\n// Copyright © 2015年 itheima. All rights rese"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Category/UIScreen+Extension.m",
"chars": 407,
"preview": "//\n// UIScreen+Extension.m\n// Weibo11\n//\n// Created by JYJ on 15/12/8.\n// Copyright © 2015年 itheima. All rights rese"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Category/UITextControl+FaultTolerance.m",
"chars": 4933,
"preview": "//\n// UITextControl+FaultTolerance.m\n// BaoXianDaiDai\n//\n// Created by linsihua on 16/4/5.\n// Copyright © 2016年 baob"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Category/UIView+Extension.h",
"chars": 973,
"preview": "//\n// UIView+Extension.h\n// 01-黑酷\n//\n// Created by apple on 14-6-27.\n// Copyright (c) 2014年 heima. All rights reserv"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Category/UIView+Extension.m",
"chars": 2700,
"preview": "//\n// UIView+Extension.m\n// 01-黑酷\n//\n// Created by apple on 14-6-27.\n// Copyright (c) 2014年 heima. All rights reserv"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Category/UIView+IBExtension.h",
"chars": 431,
"preview": "//\n// UIView+IBExtension.h\n// Weibo11\n//\n// Created by JYJ on 15/12/6.\n// Copyright © 2015年 itheima. All rights rese"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Category/UIView+IBExtension.m",
"chars": 906,
"preview": "//\n// UIView+IBExtension.m\n// Weibo11\n//\n// Created by JYJ on 15/12/6.\n// Copyright © 2015年 itheima. All rights rese"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Category/UIView+Runtime.h",
"chars": 500,
"preview": "//\n// UIView+Runtime.h\n// Weibo11\n//\n// Created by JYJ on 15/12/12.\n// Copyright © 2015年 itheima. All rights reserve"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Category/UIView+Runtime.m",
"chars": 1552,
"preview": "//\n// UIView+Runtime.m\n// Weibo11\n//\n// Created by JYJ on 15/12/12.\n// Copyright © 2015年 itheima. All rights reserve"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Controller/DataViewController.h",
"chars": 220,
"preview": "//\n// DataViewController.h\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/3.\n// Copyright © 2016年 baobeikeji. All r"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Controller/DataViewController.m",
"chars": 3547,
"preview": "//\n// DataViewController.m\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/3.\n// Copyright © 2016年 baobeikeji. All r"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Controller/HomeViewController.h",
"chars": 225,
"preview": "//\n// HomeViewController.h\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/3.\n// Copyright © 2016年 baobeikeji. All r"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Controller/HomeViewController.m",
"chars": 1929,
"preview": "//\n// HomeViewController.m\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/3.\n// Copyright © 2016年 baobeikeji. All r"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Controller/InsuranceViewController.h",
"chars": 230,
"preview": "//\n// InsuranceViewController.h\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/3.\n// Copyright © 2016年 baobeikeji. "
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Controller/InsuranceViewController.m",
"chars": 1193,
"preview": "//\n// InsuranceViewController.m\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/3.\n// Copyright © 2016年 baobeikeji. "
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Controller/NewViewController.h",
"chars": 223,
"preview": "//\n// NewViewController.h\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/3.\n// Copyright © 2016年 baobeikeji. All ri"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Controller/NewViewController.m",
"chars": 2830,
"preview": "//\n// NewViewController.m\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/3.\n// Copyright © 2016年 baobeikeji. All ri"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Controller/ProfileViewController.h",
"chars": 226,
"preview": "//\n// ProfileViewController.h\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/3.\n// Copyright © 2016年 baobeikeji. Al"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Controller/ProfileViewController.m",
"chars": 1311,
"preview": "//\n// ProfileViewController.m\n// IrregularTabBar\n//\n// Created by JYJ on 16/5/3.\n// Copyright © 2016年 baobeikeji. Al"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Info.plist",
"chars": 1247,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Main/BXNavigationController.h",
"chars": 238,
"preview": "//\n// BXNavigationController.h\n// BaoXianDaiDai\n//\n// Created by JYJ on 15/5/28.\n// Copyright (c) 2015年 baobeikeji.c"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Main/BXNavigationController.m",
"chars": 2655,
"preview": "//\n// BXNavigationController.m\n// BaoXianDaiDai\n//\n// Created by JYJ on 15/5/28.\n// Copyright (c) 2015年 baobeikeji.c"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Main/BXTabBarController.h",
"chars": 226,
"preview": "//\n// BXTabBarController.h\n// BaoXianDaiDai\n//\n// Created by JYJ on 15/5/28.\n// Copyright (c) 2015年 baobeikeji.cn. A"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/Main/BXTabBarController.m",
"chars": 3393,
"preview": "//\n// BXTabBarController.m\n// BaoXianDaiDai\n//\n// Created by JYJ on 15/5/28.\n// Copyright (c) 2015年 baobeikeji.cn. A"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/PrefixHeader.pch",
"chars": 1752,
"preview": "//\n// PrefixHeader.pch\n// IrregularTabBar2\n//\n// Created by JYJ on 16/6/1.\n// Copyright © 2016年 baobeikeji. All righ"
},
{
"path": "IrregularTabBar2/IrregularTabBar2/main.m",
"chars": 334,
"preview": "//\n// main.m\n// IrregularTabBar2\n//\n// Created by JYJ on 16/6/1.\n// Copyright © 2016年 baobeikeji. All rights reserve"
},
{
"path": "IrregularTabBar2/IrregularTabBar2.xcodeproj/project.pbxproj",
"chars": 30687,
"preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
},
{
"path": "IrregularTabBar2/IrregularTabBar2.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
"chars": 161,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n version = \"1.0\">\n <FileRef\n location = \"self:IrregularTabBar"
},
{
"path": "IrregularTabBar3/IrregularTabBar3/AppDelegate.h",
"chars": 277,
"preview": "//\n// AppDelegate.h\n// IrregularTabBar3\n//\n// Created by JYJ on 16/6/2.\n// Copyright © 2016年 baobeikeji. All rights "
},
{
"path": "IrregularTabBar3/IrregularTabBar3/AppDelegate.m",
"chars": 2294,
"preview": "//\n// AppDelegate.m\n// IrregularTabBar3\n//\n// Created by JYJ on 16/6/2.\n// Copyright © 2016年 baobeikeji. All rights "
},
{
"path": "IrregularTabBar3/IrregularTabBar3/Assets.xcassets/AppIcon.appiconset/Contents.json",
"chars": 3444,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"iphone\",\n \"size\" : \"20x20\",\n \"scale\" : \"2x\"\n },\n {\n \"idiom\""
},
{
"path": "IrregularTabBar3/IrregularTabBar3/Assets.xcassets/Contents.json",
"chars": 62,
"preview": "{\n \"info\" : {\n \"version\" : 1,\n \"author\" : \"xcode\"\n }\n}"
},
{
"path": "IrregularTabBar3/IrregularTabBar3/Assets.xcassets/LaunchImage.launchimage/Contents.json",
"chars": 2529,
"preview": "{\n \"images\" : [\n {\n \"extent\" : \"full-screen\",\n \"idiom\" : \"iphone\",\n \"subtype\" : \"2436h\",\n \"filen"
},
{
"path": "IrregularTabBar3/IrregularTabBar3/Assets.xcassets/NavigationBar/Contents.json",
"chars": 62,
"preview": "{\n \"info\" : {\n \"version\" : 1,\n \"author\" : \"xcode\"\n }\n}"
},
{
"path": "IrregularTabBar3/IrregularTabBar3/Assets.xcassets/NavigationBar/navigationButtonReturn.imageset/Contents.json",
"chars": 423,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"filename\" : \"navigationButtonReturn.png\",\n \"scale\" : \"1x"
},
{
"path": "IrregularTabBar3/IrregularTabBar3/Assets.xcassets/TabBar/Contents.json",
"chars": 62,
"preview": "{\n \"info\" : {\n \"version\" : 1,\n \"author\" : \"xcode\"\n }\n}"
},
{
"path": "IrregularTabBar3/IrregularTabBar3/Assets.xcassets/TabBar/main_badge.imageset/Contents.json",
"chars": 350,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar3/IrregularTabBar3/Assets.xcassets/TabBar/tabBar_icon_contrast.imageset/Contents.json",
"chars": 370,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar3/IrregularTabBar3/Assets.xcassets/TabBar/tabBar_icon_contrast_default.imageset/Contents.json",
"chars": 386,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar3/IrregularTabBar3/Assets.xcassets/TabBar/tabBar_icon_customer.imageset/Contents.json",
"chars": 370,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar3/IrregularTabBar3/Assets.xcassets/TabBar/tabBar_icon_customer_default.imageset/Contents.json",
"chars": 386,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar3/IrregularTabBar3/Assets.xcassets/TabBar/tabBar_icon_mine.imageset/Contents.json",
"chars": 362,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar3/IrregularTabBar3/Assets.xcassets/TabBar/tabBar_icon_mine_default.imageset/Contents.json",
"chars": 378,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar3/IrregularTabBar3/Assets.xcassets/TabBar/tabBar_icon_plan.imageset/Contents.json",
"chars": 362,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar3/IrregularTabBar3/Assets.xcassets/TabBar/tabBar_icon_plan_default.imageset/Contents.json",
"chars": 378,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar3/IrregularTabBar3/Assets.xcassets/TabBar/tabBar_icon_schedule.imageset/Contents.json",
"chars": 370,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar3/IrregularTabBar3/Assets.xcassets/TabBar/tabBar_icon_schedule_default.imageset/Contents.json",
"chars": 386,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar3/IrregularTabBar3/Assets.xcassets/TabBar/tabbar_background.imageset/Contents.json",
"chars": 317,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar3/IrregularTabBar3/Assets.xcassets/TabBar/tabbar_compose_button.imageset/Contents.json",
"chars": 372,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar3/IrregularTabBar3/Assets.xcassets/TabBar/tabbar_compose_button_highlighted.imageset/Contents.json",
"chars": 396,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar3/IrregularTabBar3/Assets.xcassets/TabBar/tabbar_compose_icon_add.imageset/Contents.json",
"chars": 376,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar3/IrregularTabBar3/Assets.xcassets/TabBar/tabbar_compose_icon_add_highlighted.imageset/Contents.json",
"chars": 400,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "IrregularTabBar3/IrregularTabBar3/Category/BXExtensions.h",
"chars": 616,
"preview": "//\n// BXExtensions.h\n// BXInsurenceBroker\n//\n// Created by JYJ on 16/3/15.\n// Copyright © 2016年 baobeikeji. All righ"
},
{
"path": "IrregularTabBar3/IrregularTabBar3/Category/Foundation+Log.m",
"chars": 3119,
"preview": "\n#import <Foundation/Foundation.h>\n//#import <objc/runtime.h>\n\n//@implementation NSObject (Log)\n//+ (void)load {\n// /"
},
{
"path": "IrregularTabBar3/IrregularTabBar3/Category/NSDate+Extension.h",
"chars": 413,
"preview": "//\n// NSDate+Extension.h\n// Weibo11\n//\n// Created by JYJ on 15/12/12.\n// Copyright © 2015年 itheima. All rights reser"
},
{
"path": "IrregularTabBar3/IrregularTabBar3/Category/NSDate+Extension.m",
"chars": 1499,
"preview": "//\n// NSDate+Extension.m\n// Weibo11\n//\n// Created by JYJ on 15/12/12.\n// Copyright © 2015年 itheima. All rights reser"
},
{
"path": "IrregularTabBar3/IrregularTabBar3/Category/NSDictionary+Extension.h",
"chars": 354,
"preview": "//\n// NSDictionary+Extension.h\n// BXInsurenceBroker\n//\n// Created by linsihua on 16/4/9.\n// Copyright © 2016年 baobei"
}
]
// ... and 49 more files (download for full content)
About this extraction
This page contains the full source code of the jiangyongjian/IrregularTabBar GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 249 files (365.9 KB), approximately 123.4k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.