├── Screenshot ├── flaw.png ├── Official.png ├── llrisedemo.gif └── LLRiseTabBar-iOS.png ├── LLRiseTabBarDemo ├── LLRiseTabBarDemo │ ├── Assets.xcassets │ │ ├── Contents.json │ │ ├── NavBar │ │ │ ├── Contents.json │ │ │ ├── icon_search.imageset │ │ │ │ ├── icon_search@2x.png │ │ │ │ ├── icon_search@3x.png │ │ │ │ └── Contents.json │ │ │ ├── home_bar_scan.imageset │ │ │ │ ├── home_bar_scan@2x.png │ │ │ │ ├── home_bar_scan@3x.png │ │ │ │ └── Contents.json │ │ │ └── home_title_slogan.imageset │ │ │ │ ├── home_title_slogan@2x.png │ │ │ │ ├── home_title_slogan@3x.png │ │ │ │ └── Contents.json │ │ ├── TabBarIcon │ │ │ ├── Contents.json │ │ │ ├── home_normal.imageset │ │ │ │ ├── home_normal@2x.png │ │ │ │ └── Contents.json │ │ │ ├── post_normal.imageset │ │ │ │ ├── post_normal@2x.png │ │ │ │ └── Contents.json │ │ │ ├── mycity_normal.imageset │ │ │ │ ├── mycity_normal@2x.png │ │ │ │ └── Contents.json │ │ │ ├── account_normal.imageset │ │ │ │ ├── account_normal@2x.png │ │ │ │ └── Contents.json │ │ │ ├── home_highlight.imageset │ │ │ │ ├── home_highlight@2x.png │ │ │ │ └── Contents.json │ │ │ ├── message_normal.imageset │ │ │ │ ├── message_normal@2x.png │ │ │ │ └── Contents.json │ │ │ ├── tapbar_top_line.imageset │ │ │ │ ├── tapbar_top_line@2x.png │ │ │ │ └── Contents.json │ │ │ ├── mycity_highlight.imageset │ │ │ │ ├── mycity_highlight@2x.png │ │ │ │ └── Contents.json │ │ │ ├── account_highlight.imageset │ │ │ │ ├── account_highlight@2x.png │ │ │ │ └── Contents.json │ │ │ └── message_highlight.imageset │ │ │ │ ├── message_highlight@2x.png │ │ │ │ └── Contents.json │ │ ├── AppIcon.appiconset │ │ │ ├── AppIcon29x29@2x.png │ │ │ ├── AppIcon29x29@3x.png │ │ │ ├── AppIcon40x40@2x.png │ │ │ ├── AppIcon40x40@3x.png │ │ │ ├── AppIcon60x60@2x.png │ │ │ ├── AppIcon60x60@3x.png │ │ │ └── Contents.json │ │ └── BrandAsset.launchimage │ │ │ ├── LaunchImage@2x.png │ │ │ ├── LaunchImage-568h@2x.png │ │ │ ├── LaunchImage-800-667h@2x.png │ │ │ ├── LaunchImage-800-Portrait-736h@3x.png │ │ │ └── Contents.json │ ├── ViewController │ │ ├── Base │ │ │ ├── LLBaseViewController.h │ │ │ └── LLBaseViewController.m │ │ ├── Home │ │ │ ├── LLHomeViewController.h │ │ │ ├── LLHomeViewController.m │ │ │ └── LLHomeViewController.xib │ │ ├── Mine │ │ │ ├── LLMineViewController.h │ │ │ ├── LLMineViewController.m │ │ │ └── LLMineViewController.xib │ │ ├── Message │ │ │ ├── LLMessageViewController.h │ │ │ ├── LLMessageViewController.m │ │ │ └── LLMessageViewController.xib │ │ └── SameCity │ │ │ ├── LLSameCityViewController.h │ │ │ ├── LLSameCityViewController.m │ │ │ └── LLSameCityViewController.xib │ ├── AppDelegate.h │ ├── main.m │ ├── CustomView │ │ └── LLTabBar │ │ │ ├── LLTabBar.h │ │ │ ├── LLTabBarItem.h │ │ │ ├── LLTabBarItem.m │ │ │ └── LLTabBar.m │ ├── LLRiseTabBarDemo.pch │ ├── Info.plist │ └── AppDelegate.m └── LLRiseTabBarDemo.xcodeproj │ ├── project.xcworkspace │ └── contents.xcworkspacedata │ └── project.pbxproj ├── .gitignore ├── LICENSE └── README.md /Screenshot/flaw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoCodeNoWife/LLRiseTabBar-iOS/HEAD/Screenshot/flaw.png -------------------------------------------------------------------------------- /Screenshot/Official.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoCodeNoWife/LLRiseTabBar-iOS/HEAD/Screenshot/Official.png -------------------------------------------------------------------------------- /Screenshot/llrisedemo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoCodeNoWife/LLRiseTabBar-iOS/HEAD/Screenshot/llrisedemo.gif -------------------------------------------------------------------------------- /Screenshot/LLRiseTabBar-iOS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoCodeNoWife/LLRiseTabBar-iOS/HEAD/Screenshot/LLRiseTabBar-iOS.png -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/NavBar/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/TabBarIcon/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/AppIcon.appiconset/AppIcon29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoCodeNoWife/LLRiseTabBar-iOS/HEAD/LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/AppIcon.appiconset/AppIcon29x29@2x.png -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/AppIcon.appiconset/AppIcon29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoCodeNoWife/LLRiseTabBar-iOS/HEAD/LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/AppIcon.appiconset/AppIcon29x29@3x.png -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/AppIcon.appiconset/AppIcon40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoCodeNoWife/LLRiseTabBar-iOS/HEAD/LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/AppIcon.appiconset/AppIcon40x40@2x.png -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/AppIcon.appiconset/AppIcon40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoCodeNoWife/LLRiseTabBar-iOS/HEAD/LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/AppIcon.appiconset/AppIcon40x40@3x.png -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/AppIcon.appiconset/AppIcon60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoCodeNoWife/LLRiseTabBar-iOS/HEAD/LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/AppIcon.appiconset/AppIcon60x60@2x.png -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/AppIcon.appiconset/AppIcon60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoCodeNoWife/LLRiseTabBar-iOS/HEAD/LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/AppIcon.appiconset/AppIcon60x60@3x.png -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/BrandAsset.launchimage/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoCodeNoWife/LLRiseTabBar-iOS/HEAD/LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/BrandAsset.launchimage/LaunchImage@2x.png -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/BrandAsset.launchimage/LaunchImage-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoCodeNoWife/LLRiseTabBar-iOS/HEAD/LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/BrandAsset.launchimage/LaunchImage-568h@2x.png -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/NavBar/icon_search.imageset/icon_search@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoCodeNoWife/LLRiseTabBar-iOS/HEAD/LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/NavBar/icon_search.imageset/icon_search@2x.png -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/NavBar/icon_search.imageset/icon_search@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoCodeNoWife/LLRiseTabBar-iOS/HEAD/LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/NavBar/icon_search.imageset/icon_search@3x.png -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/BrandAsset.launchimage/LaunchImage-800-667h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoCodeNoWife/LLRiseTabBar-iOS/HEAD/LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/BrandAsset.launchimage/LaunchImage-800-667h@2x.png -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/NavBar/home_bar_scan.imageset/home_bar_scan@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoCodeNoWife/LLRiseTabBar-iOS/HEAD/LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/NavBar/home_bar_scan.imageset/home_bar_scan@2x.png -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/NavBar/home_bar_scan.imageset/home_bar_scan@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoCodeNoWife/LLRiseTabBar-iOS/HEAD/LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/NavBar/home_bar_scan.imageset/home_bar_scan@3x.png -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/TabBarIcon/home_normal.imageset/home_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoCodeNoWife/LLRiseTabBar-iOS/HEAD/LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/TabBarIcon/home_normal.imageset/home_normal@2x.png -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/TabBarIcon/post_normal.imageset/post_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoCodeNoWife/LLRiseTabBar-iOS/HEAD/LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/TabBarIcon/post_normal.imageset/post_normal@2x.png -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/TabBarIcon/mycity_normal.imageset/mycity_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoCodeNoWife/LLRiseTabBar-iOS/HEAD/LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/TabBarIcon/mycity_normal.imageset/mycity_normal@2x.png -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/TabBarIcon/account_normal.imageset/account_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoCodeNoWife/LLRiseTabBar-iOS/HEAD/LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/TabBarIcon/account_normal.imageset/account_normal@2x.png -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/TabBarIcon/home_highlight.imageset/home_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoCodeNoWife/LLRiseTabBar-iOS/HEAD/LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/TabBarIcon/home_highlight.imageset/home_highlight@2x.png -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/TabBarIcon/message_normal.imageset/message_normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoCodeNoWife/LLRiseTabBar-iOS/HEAD/LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/TabBarIcon/message_normal.imageset/message_normal@2x.png -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/BrandAsset.launchimage/LaunchImage-800-Portrait-736h@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoCodeNoWife/LLRiseTabBar-iOS/HEAD/LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/BrandAsset.launchimage/LaunchImage-800-Portrait-736h@3x.png -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/NavBar/home_title_slogan.imageset/home_title_slogan@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoCodeNoWife/LLRiseTabBar-iOS/HEAD/LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/NavBar/home_title_slogan.imageset/home_title_slogan@2x.png -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/NavBar/home_title_slogan.imageset/home_title_slogan@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoCodeNoWife/LLRiseTabBar-iOS/HEAD/LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/NavBar/home_title_slogan.imageset/home_title_slogan@3x.png -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/TabBarIcon/tapbar_top_line.imageset/tapbar_top_line@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoCodeNoWife/LLRiseTabBar-iOS/HEAD/LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/TabBarIcon/tapbar_top_line.imageset/tapbar_top_line@2x.png -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/TabBarIcon/mycity_highlight.imageset/mycity_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoCodeNoWife/LLRiseTabBar-iOS/HEAD/LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/TabBarIcon/mycity_highlight.imageset/mycity_highlight@2x.png -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/TabBarIcon/account_highlight.imageset/account_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoCodeNoWife/LLRiseTabBar-iOS/HEAD/LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/TabBarIcon/account_highlight.imageset/account_highlight@2x.png -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/TabBarIcon/message_highlight.imageset/message_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NoCodeNoWife/LLRiseTabBar-iOS/HEAD/LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/TabBarIcon/message_highlight.imageset/message_highlight@2x.png -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/ViewController/Base/LLBaseViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LLBaseViewController.h 3 | // LLRiseTabBarDemo 4 | // 5 | // Created by Meilbn on 10/18/15. 6 | // Copyright © 2015 meilbn. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LLBaseViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/ViewController/Home/LLHomeViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LLHomeViewController.h 3 | // LLRiseTabBarDemo 4 | // 5 | // Created by Meilbn on 10/18/15. 6 | // Copyright © 2015 meilbn. All rights reserved. 7 | // 8 | 9 | #import "LLBaseViewController.h" 10 | 11 | @interface LLHomeViewController : LLBaseViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/ViewController/Mine/LLMineViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LLMineViewController.h 3 | // LLRiseTabBarDemo 4 | // 5 | // Created by Meilbn on 10/18/15. 6 | // Copyright © 2015 meilbn. All rights reserved. 7 | // 8 | 9 | #import "LLBaseViewController.h" 10 | 11 | @interface LLMineViewController : LLBaseViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/ViewController/Message/LLMessageViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LLMessageViewController.h 3 | // LLRiseTabBarDemo 4 | // 5 | // Created by Meilbn on 10/18/15. 6 | // Copyright © 2015 meilbn. All rights reserved. 7 | // 8 | 9 | #import "LLBaseViewController.h" 10 | 11 | @interface LLMessageViewController : LLBaseViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/ViewController/SameCity/LLSameCityViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LLSameCityViewController.h 3 | // LLRiseTabBarDemo 4 | // 5 | // Created by Meilbn on 10/18/15. 6 | // Copyright © 2015 meilbn. All rights reserved. 7 | // 8 | 9 | #import "LLBaseViewController.h" 10 | 11 | @interface LLSameCityViewController : LLBaseViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // LLRiseTabBarDemo 4 | // 5 | // Created by Meilbn on 10/18/15. 6 | // Copyright © 2015 meilbn. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // LLRiseTabBarDemo 4 | // 5 | // Created by Meilbn on 10/18/15. 6 | // Copyright © 2015 meilbn. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/TabBarIcon/home_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "home_normal@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/TabBarIcon/post_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "post_normal@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/TabBarIcon/account_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "account_normal@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/TabBarIcon/home_highlight.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "home_highlight@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/TabBarIcon/message_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "message_normal@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/TabBarIcon/mycity_normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "mycity_normal@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/TabBarIcon/mycity_highlight.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "mycity_highlight@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/TabBarIcon/tapbar_top_line.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "tapbar_top_line@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/TabBarIcon/account_highlight.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "account_highlight@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/TabBarIcon/message_highlight.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "message_highlight@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/NavBar/icon_search.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "icon_search@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x", 15 | "filename" : "icon_search@3x.png" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/NavBar/home_bar_scan.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "home_bar_scan@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x", 15 | "filename" : "home_bar_scan@3x.png" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/NavBar/home_title_slogan.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "home_title_slogan@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x", 15 | "filename" : "home_title_slogan@3x.png" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/CustomView/LLTabBar/LLTabBar.h: -------------------------------------------------------------------------------- 1 | // 2 | // LLTabBar.h 3 | // LLRiseTabBarDemo 4 | // 5 | // Created by Meilbn on 10/18/15. 6 | // Copyright © 2015 meilbn. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "LLTabBarItem.h" 11 | 12 | @protocol LLTabBarDelegate 13 | 14 | - (void)tabBarDidSelectedRiseButton; 15 | 16 | @end 17 | 18 | @interface LLTabBar : UIView 19 | 20 | @property (nonatomic, copy) NSArray *tabBarItemAttributes; 21 | @property (nonatomic, weak) id delegate; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # MacOSX 2 | .DS_Store 3 | 4 | # Xcode 5 | # 6 | build/ 7 | *.pbxuser 8 | !default.pbxuser 9 | *.mode1v3 10 | !default.mode1v3 11 | *.mode2v3 12 | !default.mode2v3 13 | *.perspectivev3 14 | !default.perspectivev3 15 | xcuserdata 16 | *.xccheckout 17 | *.moved-aside 18 | DerivedData 19 | *.hmap 20 | *.ipa 21 | *.xcuserstate 22 | 23 | # CocoaPods 24 | # 25 | # We recommend against adding the Pods directory to your .gitignore. However 26 | # you should judge for yourself, the pros and cons are mentioned at: 27 | # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control 28 | # 29 | #Pods/ 30 | -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/LLRiseTabBarDemo.pch: -------------------------------------------------------------------------------- 1 | // 2 | // LLRiseTabBarDemo.pch 3 | // LLRiseTabBarDemo 4 | // 5 | // Created by Meilbn on 10/18/15. 6 | // Copyright © 2015 meilbn. All rights reserved. 7 | // 8 | 9 | #ifndef LLRiseTabBarDemo_pch 10 | #define LLRiseTabBarDemo_pch 11 | 12 | // Include any system framework and library headers here that should be included in all compilation units. 13 | // You will also need to set the Prefix Header build setting of one or more of your targets to reference this file. 14 | 15 | // 屏幕高度 16 | #define SCREEN_HEIGHT [[UIScreen mainScreen] bounds].size.height 17 | // 屏幕宽度 18 | #define SCREEN_WIDTH [[UIScreen mainScreen] bounds].size.width 19 | 20 | 21 | 22 | #endif /* LLRiseTabBarDemo_pch */ 23 | -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/CustomView/LLTabBar/LLTabBarItem.h: -------------------------------------------------------------------------------- 1 | // 2 | // LLTabBarItem.h 3 | // LLRiseTabBarDemo 4 | // 5 | // Created by Meilbn on 10/18/15. 6 | // Copyright © 2015 meilbn. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef NS_ENUM(NSUInteger, LLTabBarItemType) { 12 | LLTabBarItemNormal = 0, 13 | LLTabBarItemRise, 14 | }; 15 | 16 | extern NSString *const kLLTabBarItemAttributeTitle;// NSString 17 | extern NSString *const kLLTabBarItemAttributeNormalImageName;// NSString 18 | extern NSString *const kLLTabBarItemAttributeSelectedImageName;// NSString 19 | extern NSString *const kLLTabBarItemAttributeType;// NSNumber, LLTabBarItemType 20 | 21 | @interface LLTabBarItem : UIButton 22 | 23 | @property (nonatomic, assign) LLTabBarItemType tabBarItemType; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/ViewController/Mine/LLMineViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // LLMineViewController.m 3 | // LLRiseTabBarDemo 4 | // 5 | // Created by Meilbn on 10/18/15. 6 | // Copyright © 2015 meilbn. All rights reserved. 7 | // 8 | 9 | #import "LLMineViewController.h" 10 | 11 | @interface LLMineViewController () 12 | 13 | @end 14 | 15 | @implementation LLMineViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | // Do any additional setup after loading the view from its nib. 20 | } 21 | 22 | - (void)didReceiveMemoryWarning { 23 | [super didReceiveMemoryWarning]; 24 | // Dispose of any resources that can be recreated. 25 | } 26 | 27 | /* 28 | #pragma mark - Navigation 29 | 30 | // In a storyboard-based application, you will often want to do a little preparation before navigation 31 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 32 | // Get the new view controller using [segue destinationViewController]. 33 | // Pass the selected object to the new view controller. 34 | } 35 | */ 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "29x29", 5 | "idiom" : "iphone", 6 | "filename" : "AppIcon29x29@2x.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "29x29", 11 | "idiom" : "iphone", 12 | "filename" : "AppIcon29x29@3x.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "40x40", 17 | "idiom" : "iphone", 18 | "filename" : "AppIcon40x40@2x.png", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "size" : "40x40", 23 | "idiom" : "iphone", 24 | "filename" : "AppIcon40x40@3x.png", 25 | "scale" : "3x" 26 | }, 27 | { 28 | "size" : "60x60", 29 | "idiom" : "iphone", 30 | "filename" : "AppIcon60x60@2x.png", 31 | "scale" : "2x" 32 | }, 33 | { 34 | "size" : "60x60", 35 | "idiom" : "iphone", 36 | "filename" : "AppIcon60x60@3x.png", 37 | "scale" : "3x" 38 | } 39 | ], 40 | "info" : { 41 | "version" : 1, 42 | "author" : "xcode" 43 | } 44 | } -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/ViewController/Message/LLMessageViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // LLMessageViewController.m 3 | // LLRiseTabBarDemo 4 | // 5 | // Created by Meilbn on 10/18/15. 6 | // Copyright © 2015 meilbn. All rights reserved. 7 | // 8 | 9 | #import "LLMessageViewController.h" 10 | 11 | @interface LLMessageViewController () 12 | 13 | @end 14 | 15 | @implementation LLMessageViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | // Do any additional setup after loading the view from its nib. 20 | } 21 | 22 | - (void)didReceiveMemoryWarning { 23 | [super didReceiveMemoryWarning]; 24 | // Dispose of any resources that can be recreated. 25 | } 26 | 27 | /* 28 | #pragma mark - Navigation 29 | 30 | // In a storyboard-based application, you will often want to do a little preparation before navigation 31 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 32 | // Get the new view controller using [segue destinationViewController]. 33 | // Pass the selected object to the new view controller. 34 | } 35 | */ 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/ViewController/SameCity/LLSameCityViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // LLSameCityViewController.m 3 | // LLRiseTabBarDemo 4 | // 5 | // Created by Meilbn on 10/18/15. 6 | // Copyright © 2015 meilbn. All rights reserved. 7 | // 8 | 9 | #import "LLSameCityViewController.h" 10 | 11 | @interface LLSameCityViewController () 12 | 13 | @end 14 | 15 | @implementation LLSameCityViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | // Do any additional setup after loading the view from its nib. 20 | } 21 | 22 | - (void)didReceiveMemoryWarning { 23 | [super didReceiveMemoryWarning]; 24 | // Dispose of any resources that can be recreated. 25 | } 26 | 27 | /* 28 | #pragma mark - Navigation 29 | 30 | // In a storyboard-based application, you will often want to do a little preparation before navigation 31 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 32 | // Get the new view controller using [segue destinationViewController]. 33 | // Pass the selected object to the new view controller. 34 | } 35 | */ 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/ViewController/Home/LLHomeViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // LLHomeViewController.m 3 | // LLRiseTabBarDemo 4 | // 5 | // Created by Meilbn on 10/18/15. 6 | // Copyright © 2015 meilbn. All rights reserved. 7 | // 8 | 9 | #import "LLHomeViewController.h" 10 | #import "LLTabBarItem.h" 11 | #import "LLTabBar.h" 12 | 13 | @interface LLHomeViewController () 14 | 15 | @end 16 | 17 | @implementation LLHomeViewController 18 | 19 | - (void)viewDidLoad { 20 | [super viewDidLoad]; 21 | // Do any additional setup after loading the view from its nib. 22 | } 23 | 24 | - (void)didReceiveMemoryWarning { 25 | [super didReceiveMemoryWarning]; 26 | // Dispose of any resources that can be recreated. 27 | } 28 | 29 | /* 30 | #pragma mark - Navigation 31 | 32 | // In a storyboard-based application, you will often want to do a little preparation before navigation 33 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 34 | // Get the new view controller using [segue destinationViewController]. 35 | // Pass the selected object to the new view controller. 36 | } 37 | */ 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | LSRequiresIPhoneOS 24 | 25 | UIRequiredDeviceCapabilities 26 | 27 | armv7 28 | 29 | UISupportedInterfaceOrientations 30 | 31 | UIInterfaceOrientationPortrait 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/ViewController/Base/LLBaseViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // LLBaseViewController.m 3 | // LLRiseTabBarDemo 4 | // 5 | // Created by Meilbn on 10/18/15. 6 | // Copyright © 2015 meilbn. All rights reserved. 7 | // 8 | 9 | #import "LLBaseViewController.h" 10 | 11 | @interface LLBaseViewController () 12 | 13 | @end 14 | 15 | @implementation LLBaseViewController 16 | 17 | #pragma mark - Lifecycle 18 | 19 | - (instancetype)init { 20 | self = [super init]; 21 | 22 | if (self) { 23 | 24 | } 25 | 26 | return self; 27 | } 28 | 29 | - (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 30 | self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 31 | 32 | if (self) { 33 | 34 | } 35 | 36 | return self; 37 | } 38 | 39 | #pragma mark - View Lifecycle 40 | 41 | - (void)viewDidLoad { 42 | [super viewDidLoad]; 43 | // Do any additional setup after loading the view. 44 | self.navigationController.navigationBarHidden = YES; 45 | } 46 | 47 | - (void)didReceiveMemoryWarning { 48 | [super didReceiveMemoryWarning]; 49 | // Dispose of any resources that can be recreated. 50 | } 51 | 52 | @end 53 | -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/Assets.xcassets/BrandAsset.launchimage/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "extent" : "full-screen", 5 | "idiom" : "iphone", 6 | "subtype" : "736h", 7 | "filename" : "LaunchImage-800-Portrait-736h@3x.png", 8 | "minimum-system-version" : "8.0", 9 | "orientation" : "portrait", 10 | "scale" : "3x" 11 | }, 12 | { 13 | "extent" : "full-screen", 14 | "idiom" : "iphone", 15 | "subtype" : "667h", 16 | "filename" : "LaunchImage-800-667h@2x.png", 17 | "minimum-system-version" : "8.0", 18 | "orientation" : "portrait", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "orientation" : "portrait", 23 | "idiom" : "iphone", 24 | "filename" : "LaunchImage@2x.png", 25 | "extent" : "full-screen", 26 | "minimum-system-version" : "7.0", 27 | "scale" : "2x" 28 | }, 29 | { 30 | "extent" : "full-screen", 31 | "idiom" : "iphone", 32 | "subtype" : "retina4", 33 | "filename" : "LaunchImage-568h@2x.png", 34 | "minimum-system-version" : "7.0", 35 | "orientation" : "portrait", 36 | "scale" : "2x" 37 | } 38 | ], 39 | "info" : { 40 | "version" : 1, 41 | "author" : "xcode" 42 | } 43 | } -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/CustomView/LLTabBar/LLTabBarItem.m: -------------------------------------------------------------------------------- 1 | // 2 | // LLTabBarItem.m 3 | // LLRiseTabBarDemo 4 | // 5 | // Created by Meilbn on 10/18/15. 6 | // Copyright © 2015 meilbn. All rights reserved. 7 | // 8 | 9 | #import "LLTabBarItem.h" 10 | 11 | NSString *const kLLTabBarItemAttributeTitle = @"LLTabBarItemAttributeTitle"; 12 | NSString *const kLLTabBarItemAttributeNormalImageName = @"LLTabBarItemAttributeNormalImageName"; 13 | NSString *const kLLTabBarItemAttributeSelectedImageName = @"LLTabBarItemAttributeSelectedImageName"; 14 | NSString *const kLLTabBarItemAttributeType = @"LLTabBarItemAttributeType"; 15 | 16 | @implementation LLTabBarItem 17 | 18 | - (instancetype)initWithFrame:(CGRect)frame { 19 | self = [super initWithFrame:frame]; 20 | 21 | if (self) { 22 | [self config]; 23 | } 24 | 25 | return self; 26 | } 27 | 28 | - (instancetype)init { 29 | self = [super init]; 30 | 31 | if (self) { 32 | [self config]; 33 | } 34 | 35 | return self; 36 | } 37 | 38 | - (instancetype)initWithCoder:(NSCoder *)aDecoder { 39 | self = [super initWithCoder:aDecoder]; 40 | 41 | if (self) { 42 | [self config]; 43 | } 44 | 45 | return self; 46 | } 47 | 48 | - (void)config { 49 | self.adjustsImageWhenHighlighted = NO; 50 | self.imageView.contentMode = UIViewContentModeScaleAspectFit; 51 | } 52 | 53 | - (void)layoutSubviews { 54 | [super layoutSubviews]; 55 | 56 | [self.titleLabel sizeToFit]; 57 | CGSize titleSize = self.titleLabel.frame.size; 58 | 59 | CGSize imageSize = [self imageForState:UIControlStateNormal].size; 60 | if (imageSize.width != 0 && imageSize.height != 0) { 61 | CGFloat imageViewCenterY = CGRectGetHeight(self.frame) - 3 - titleSize.height - imageSize.height / 2 - 5; 62 | self.imageView.center = CGPointMake(CGRectGetWidth(self.frame) / 2, imageViewCenterY); 63 | } else { 64 | CGPoint imageViewCenter = self.imageView.center; 65 | imageViewCenter.x = CGRectGetWidth(self.frame) / 2; 66 | imageViewCenter.y = (CGRectGetHeight(self.frame) - titleSize.height) / 2; 67 | self.imageView.center = imageViewCenter; 68 | } 69 | 70 | CGPoint labelCenter = CGPointMake(CGRectGetWidth(self.frame) / 2, CGRectGetHeight(self.frame) - 3 - titleSize.height / 2); 71 | self.titleLabel.center = labelCenter; 72 | 73 | // 还有一种实现方式是设置 Edge Insets,Xcode 7.0.1 好像有点不开心,在 IB 里面更改一下属性的时候,经常崩溃。。。 74 | /* 位置还有一点不准确,推荐用上面的代码来设置 75 | 76 | [self.titleLabel sizeToFit]; 77 | CGSize titleSize = self.titleLabel.frame.size; 78 | CGSize imageSize = [self imageForState:UIControlStateNormal].size; 79 | NSInteger titleTopInset = CGRectGetHeight(self.frame) - 3 - titleSize.height; 80 | CGFloat titleRightInset = (CGRectGetWidth(self.frame) - titleSize.width) / 2 + titleSize.width; 81 | [self setTitleEdgeInsets:UIEdgeInsetsMake(titleTopInset, 0, 3, titleRightInset)]; 82 | CGFloat imageViewLeftRightInset = (CGRectGetWidth(self.frame) - imageSize.width) / 2; 83 | [self setImageEdgeInsets:UIEdgeInsetsMake(CGRectGetHeight(self.frame) - 3 - 5 - titleSize.height - imageSize.height, imageViewLeftRightInset, 3 + 5 + titleSize.height, imageViewLeftRightInset)]; 84 | 85 | */ 86 | } 87 | 88 | @end 89 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # LLRiseTabBar-iOS 2 | 仿淘宝闲鱼的TabBar (Objective-C 实现) 3 | 4 | ## 0x00 为什么做这个 5 | 从我由 Android 转 iOS 开发之后,曾接过一个项目,底部的 TabBar 就是设计成中间一个按钮凸起的样子的,平时玩的 App 不多,这样的设计也就在 Instagram 上看到过,但是那时候上网找资源也没找到比较好的 (也有可能是我没找到),所以那时候就没有做得很好,到后来,突然看到了一些 App 更新之后变成了中间一个按钮凸起的样子,想起了之前想要仿着咸鱼的 TabBar,但是一直没有动手去做,所以现在就动手开始做了。 6 | 7 | ### Android 版 8 | Android 版在 [这里](https://github.com/NoCodeNoWife/LLRiseTabBar-Android) 9 | 10 | ## 0x01 进度 11 | - 2015-10-19 中午:~~花了一个晚上的时间,没做完,有一个问题是,在自定义的按钮上,没有显示设置好的 image,在系统的 UIButton 上就可以显示。~~ (TMD Google 了好久没解决,原来是我自己忘了在自定义按钮的 ``layoutSubviews`` 方法里面调用父类的 ``layoutSubviews `` 方法 = =||) 12 | - 2015-10-19 下午:~~中间发布按钮图片显示样式未调整好~~ 13 | - 2015-10-19 晚上:完成 14 | 15 | ## 0x02 截图 16 | ### 官方 App 截图: 17 | ![官方 App 截图](https://github.com/NoCodeNoWife/LLRiseTabBar-iOS/blob/master/Screenshot/Official.png) 18 | 19 | ### 项目截图: 20 | - PNG: 21 | 22 | ![](https://github.com/NoCodeNoWife/LLRiseTabBar-iOS/blob/master/Screenshot/LLRiseTabBar-iOS.png) 23 | 24 | - GIF: 25 | 26 | ![](https://github.com/NoCodeNoWife/LLRiseTabBar-iOS/blob/master/Screenshot/llrisedemo.gif) 27 | 28 | ## 0x03 瑕疵 29 | - ~~当点击同城的时候,按钮会有变暗的效果,经过测试,发现是跟图片有关系~~ ([@devtofu](https://github.com/devtofu) 给出了 [解决办法](https://github.com/NoCodeNoWife/LLRiseTabBar-iOS/issues/1)): 30 | 31 | /* -------------------- 2016-10-11 更新 -------------------- */ 32 | 33 | 其实不用覆写 ``setHighlighted:`` 方法,只要设置 UIButton 的 ``adjustsImageWhenHighlighted`` 为 ``NO`` 就可以了。 34 | 35 | ![](https://github.com/NoCodeNoWife/LLRiseTabBar-iOS/blob/master/Screenshot/flaw.png) 36 | 37 | - 因为 LLTabBarItem 是继承自 UIButton 的,在设置了 ViewController 的 tabBarItem 之后,在系统的 UITabBar 中生成的实际上是 UITabBarButton(通过 Reveal 看到的),而 UITabBarButton 是继承自 UIControl 的,所以和继承 UIButton 的效果有所差别,并没有和系统的 UITabBar 效果一样。感兴趣的可以继承 UIControl 试试看。 38 | 39 | ## Usage 40 | ``` Objective-C 41 | UITabBarController *tabBarController = [[UITabBarController alloc] init]; 42 | tabBarController.viewControllers = @[...]; 43 | 44 | LLTabBar *tabBar = [[LLTabBar alloc] initWithFrame:tabBarController.tabBar.bounds]; 45 | tabBar.tabBarItemAttributes = @[@{kLLTabBarItemAttributeTitle : @"首页", kLLTabBarItemAttributeNormalImageName : @"home_normal", kLLTabBarItemAttributeSelectedImageName : @"home_highlight", kLLTabBarItemAttributeType : @(LLTabBarItemNormal)}, 46 | @{kLLTabBarItemAttributeTitle : @"同城", kLLTabBarItemAttributeNormalImageName : @"mycity_normal", kLLTabBarItemAttributeSelectedImageName : @"mycity_highlight", kLLTabBarItemAttributeType : @(LLTabBarItemNormal)}, 47 | @{kLLTabBarItemAttributeTitle : @"发布", kLLTabBarItemAttributeNormalImageName : @"post_normal", kLLTabBarItemAttributeSelectedImageName : @"post_normal", kLLTabBarItemAttributeType : @(LLTabBarItemRise)}, 48 | @{kLLTabBarItemAttributeTitle : @"消息", kLLTabBarItemAttributeNormalImageName : @"message_normal", kLLTabBarItemAttributeSelectedImageName : @"message_highlight", kLLTabBarItemAttributeType : @(LLTabBarItemNormal)}, 49 | @{kLLTabBarItemAttributeTitle : @"我的", kLLTabBarItemAttributeNormalImageName : @"account_normal", kLLTabBarItemAttributeSelectedImageName : @"account_highlight", kLLTabBarItemAttributeType : @(LLTabBarItemNormal)}]; 50 | tabBar.delegate = self; 51 | [tabBarController.tabBar addSubview:tabBar]; 52 | ``` 53 | 54 | ## 0x04 Requirements 55 | - iOS 7.0+ 56 | 57 | ## 0x05 编译测试环境 58 | - Xcode 7.0.1 (7A1001) 59 | - iPhone6 (9.0) 模拟器 60 | - iPhone5S (8.3) 真机 61 | 62 | ## License 63 | LLRiseTabBar-iOS is available under the MIT license. See the LICENSE file for more info. 64 | 65 | -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/CustomView/LLTabBar/LLTabBar.m: -------------------------------------------------------------------------------- 1 | // 2 | // LLTabBar.m 3 | // LLRiseTabBarDemo 4 | // 5 | // Created by Meilbn on 10/18/15. 6 | // Copyright © 2015 meilbn. All rights reserved. 7 | // 8 | 9 | #import "LLTabBar.h" 10 | 11 | @interface LLTabBar () 12 | 13 | @property (strong, nonatomic) NSMutableArray *tabBarItems; 14 | 15 | @end 16 | 17 | @implementation LLTabBar 18 | 19 | #pragma mark - Lifecycle 20 | 21 | - (instancetype)initWithFrame:(CGRect)frame { 22 | self = [super initWithFrame:frame]; 23 | 24 | if (self) { 25 | [self config]; 26 | } 27 | 28 | return self; 29 | } 30 | 31 | #pragma mark - Private Method 32 | 33 | - (void)config { 34 | self.backgroundColor = [UIColor whiteColor]; 35 | UIImageView *topLine = [[UIImageView alloc] initWithFrame:CGRectMake(0, -5, SCREEN_WIDTH, 5)]; 36 | topLine.image = [UIImage imageNamed:@"tapbar_top_line"]; 37 | [self addSubview:topLine]; 38 | } 39 | 40 | - (void)setSelectedIndex:(NSInteger)index { 41 | for (LLTabBarItem *item in self.tabBarItems) { 42 | if (item.tag == index) { 43 | item.selected = YES; 44 | } else { 45 | item.selected = NO; 46 | } 47 | } 48 | 49 | UIWindow *keyWindow = [[[UIApplication sharedApplication] delegate] window]; 50 | UITabBarController *tabBarController = (UITabBarController *)keyWindow.rootViewController; 51 | if (tabBarController) { 52 | tabBarController.selectedIndex = index; 53 | } 54 | } 55 | 56 | #pragma mark - Touch Event 57 | 58 | - (void)itemSelected:(LLTabBarItem *)sender { 59 | if (sender.tabBarItemType != LLTabBarItemRise) { 60 | [self setSelectedIndex:sender.tag]; 61 | } else { 62 | if (self.delegate) { 63 | if ([self.delegate respondsToSelector:@selector(tabBarDidSelectedRiseButton)]) { 64 | [self.delegate tabBarDidSelectedRiseButton]; 65 | } 66 | } 67 | } 68 | } 69 | 70 | #pragma mark - Setter 71 | 72 | - (void)setTabBarItemAttributes:(NSArray *)tabBarItemAttributes { 73 | _tabBarItemAttributes = tabBarItemAttributes.copy; 74 | 75 | CGFloat itemWidth = SCREEN_WIDTH / _tabBarItemAttributes.count; 76 | CGFloat tabBarHeight = CGRectGetHeight(self.frame); 77 | NSInteger itemTag = 0; 78 | BOOL passedRiseItem = NO; 79 | 80 | _tabBarItems = [NSMutableArray arrayWithCapacity:_tabBarItemAttributes.count]; 81 | for (id item in _tabBarItemAttributes) { 82 | if ([item isKindOfClass:[NSDictionary class]]) { 83 | NSDictionary *itemDict = (NSDictionary *)item; 84 | 85 | LLTabBarItemType type = [itemDict[kLLTabBarItemAttributeType] integerValue]; 86 | CGRect frame = CGRectMake(itemTag * itemWidth + (passedRiseItem ? itemWidth : 0), 0, itemWidth, tabBarHeight); 87 | 88 | LLTabBarItem *tabBarItem = [self tabBarItemWithFrame:frame 89 | title:itemDict[kLLTabBarItemAttributeTitle] 90 | normalImageName:itemDict[kLLTabBarItemAttributeNormalImageName] 91 | selectedImageName:itemDict[kLLTabBarItemAttributeSelectedImageName] tabBarItemType:type]; 92 | if (itemTag == 0) { 93 | tabBarItem.selected = YES; 94 | } 95 | 96 | [tabBarItem addTarget:self action:@selector(itemSelected:) forControlEvents:UIControlEventTouchUpInside]; 97 | 98 | if (tabBarItem.tabBarItemType != LLTabBarItemRise) { 99 | tabBarItem.tag = itemTag; 100 | itemTag++; 101 | } else { 102 | passedRiseItem = YES; 103 | } 104 | 105 | [_tabBarItems addObject:tabBarItem]; 106 | [self addSubview:tabBarItem]; 107 | } 108 | } 109 | } 110 | 111 | - (LLTabBarItem *)tabBarItemWithFrame:(CGRect)frame title:(NSString *)title normalImageName:(NSString *)normalImageName selectedImageName:(NSString *)selectedImageName tabBarItemType:(LLTabBarItemType)tabBarItemType { 112 | LLTabBarItem *item = [[LLTabBarItem alloc] initWithFrame:frame]; 113 | [item setTitle:title forState:UIControlStateNormal]; 114 | [item setTitle:title forState:UIControlStateSelected]; 115 | item.titleLabel.font = [UIFont systemFontOfSize:8]; 116 | UIImage *normalImage = [UIImage imageNamed:normalImageName]; 117 | UIImage *selectedImage = [UIImage imageNamed:selectedImageName]; 118 | [item setImage:normalImage forState:UIControlStateNormal]; 119 | [item setImage:selectedImage forState:UIControlStateSelected]; 120 | [item setTitleColor:[UIColor colorWithWhite:51 / 255.0 alpha:1] forState:UIControlStateNormal]; 121 | [item setTitleColor:[UIColor colorWithWhite:51 / 255.0 alpha:1] forState:UIControlStateSelected]; 122 | item.tabBarItemType = tabBarItemType; 123 | 124 | return item; 125 | } 126 | 127 | @end 128 | -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/ViewController/Message/LLMessageViewController.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/ViewController/Mine/LLMineViewController.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/ViewController/SameCity/LLSameCityViewController.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // LLRiseTabBarDemo 4 | // 5 | // Created by Meilbn on 10/18/15. 6 | // Copyright © 2015 meilbn. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | #import "LLTabBar.h" 11 | #import "LLHomeViewController.h" 12 | #import "LLSameCityViewController.h" 13 | #import "LLMessageViewController.h" 14 | #import "LLMineViewController.h" 15 | 16 | @interface AppDelegate () 17 | 18 | @end 19 | 20 | @implementation AppDelegate 21 | 22 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 23 | // Override point for customization after application launch. 24 | self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; 25 | self.window.backgroundColor = [UIColor whiteColor]; 26 | [self.window makeKeyAndVisible]; 27 | 28 | LLHomeViewController *homeViewController = [[LLHomeViewController alloc] init]; 29 | LLSameCityViewController *sameCityViewController = [[LLSameCityViewController alloc] init]; 30 | LLMessageViewController *messageViewController = [[LLMessageViewController alloc] init]; 31 | LLMineViewController *mineViewController = [[LLMineViewController alloc] init]; 32 | 33 | UITabBarController *tabBarController = [[UITabBarController alloc] init]; 34 | tabBarController.viewControllers = @[homeViewController, sameCityViewController, messageViewController, mineViewController]; 35 | 36 | [[UITabBar appearance] setBackgroundImage:[[UIImage alloc] init]]; 37 | [[UITabBar appearance] setShadowImage:[[UIImage alloc] init]]; 38 | 39 | LLTabBar *tabBar = [[LLTabBar alloc] initWithFrame:tabBarController.tabBar.bounds]; 40 | 41 | tabBar.tabBarItemAttributes = @[@{kLLTabBarItemAttributeTitle : @"首页", kLLTabBarItemAttributeNormalImageName : @"home_normal", kLLTabBarItemAttributeSelectedImageName : @"home_highlight", kLLTabBarItemAttributeType : @(LLTabBarItemNormal)}, 42 | @{kLLTabBarItemAttributeTitle : @"同城", kLLTabBarItemAttributeNormalImageName : @"mycity_normal", kLLTabBarItemAttributeSelectedImageName : @"mycity_highlight", kLLTabBarItemAttributeType : @(LLTabBarItemNormal)}, 43 | @{kLLTabBarItemAttributeTitle : @"发布", kLLTabBarItemAttributeNormalImageName : @"post_normal", kLLTabBarItemAttributeSelectedImageName : @"post_normal", kLLTabBarItemAttributeType : @(LLTabBarItemRise)}, 44 | @{kLLTabBarItemAttributeTitle : @"消息", kLLTabBarItemAttributeNormalImageName : @"message_normal", kLLTabBarItemAttributeSelectedImageName : @"message_highlight", kLLTabBarItemAttributeType : @(LLTabBarItemNormal)}, 45 | @{kLLTabBarItemAttributeTitle : @"我的", kLLTabBarItemAttributeNormalImageName : @"account_normal", kLLTabBarItemAttributeSelectedImageName : @"account_highlight", kLLTabBarItemAttributeType : @(LLTabBarItemNormal)}]; 46 | 47 | // tabBar.tabBarItemAttributes = @[@{kLLTabBarItemAttributeTitle : @"首页", kLLTabBarItemAttributeNormalImageName : @"home_normal", kLLTabBarItemAttributeSelectedImageName : @"home_highlight", kLLTabBarItemAttributeType : @(LLTabBarItemNormal)}, 48 | // @{kLLTabBarItemAttributeTitle : @"发布", kLLTabBarItemAttributeNormalImageName : @"post_normal", kLLTabBarItemAttributeSelectedImageName : @"post_normal", kLLTabBarItemAttributeType : @(LLTabBarItemRise)}, 49 | // @{kLLTabBarItemAttributeTitle : @"消息", kLLTabBarItemAttributeNormalImageName : @"message_normal", kLLTabBarItemAttributeSelectedImageName : @"message_highlight", kLLTabBarItemAttributeType : @(LLTabBarItemNormal)}]; 50 | 51 | // tabBar.tabBarItemAttributes = @[@{kLLTabBarItemAttributeTitle : @"首页", kLLTabBarItemAttributeNormalImageName : @"home_normal", kLLTabBarItemAttributeSelectedImageName : @"home_highlight", kLLTabBarItemAttributeType : @(LLTabBarItemNormal)}, 52 | // @{kLLTabBarItemAttributeTitle : @"同城", kLLTabBarItemAttributeNormalImageName : @"mycity_normal", kLLTabBarItemAttributeSelectedImageName : @"mycity_highlight", kLLTabBarItemAttributeType : @(LLTabBarItemNormal)}]; 53 | 54 | tabBar.delegate = self; 55 | [tabBarController.tabBar addSubview:tabBar]; 56 | 57 | self.window.rootViewController = tabBarController; 58 | 59 | return YES; 60 | } 61 | 62 | #pragma mark - LLTabBarDelegate 63 | 64 | - (void)tabBarDidSelectedRiseButton { 65 | UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController; 66 | UIViewController *viewController = tabBarController.selectedViewController; 67 | 68 | UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil 69 | delegate:self 70 | cancelButtonTitle:@"取消" 71 | destructiveButtonTitle:nil 72 | otherButtonTitles:@"拍照", @"从相册选取", @"淘宝一键转卖", nil]; 73 | [actionSheet showInView:viewController.view]; 74 | } 75 | 76 | #pragma mark - UIActionSheetDelegate 77 | 78 | - (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex { 79 | NSLog(@"buttonIndex = %ld", buttonIndex); 80 | } 81 | 82 | #pragma mark - 83 | 84 | - (void)applicationWillResignActive:(UIApplication *)application { 85 | // 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. 86 | // 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. 87 | } 88 | 89 | - (void)applicationDidEnterBackground:(UIApplication *)application { 90 | // 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. 91 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 92 | } 93 | 94 | - (void)applicationWillEnterForeground:(UIApplication *)application { 95 | // 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. 96 | } 97 | 98 | - (void)applicationDidBecomeActive:(UIApplication *)application { 99 | // 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. 100 | } 101 | 102 | - (void)applicationWillTerminate:(UIApplication *)application { 103 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 104 | } 105 | 106 | @end 107 | -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo/ViewController/Home/LLHomeViewController.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 33 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | -------------------------------------------------------------------------------- /LLRiseTabBarDemo/LLRiseTabBarDemo.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 820978E81BD3A37600CF9D0C /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 820978E71BD3A37600CF9D0C /* main.m */; }; 11 | 820978EB1BD3A37700CF9D0C /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 820978EA1BD3A37700CF9D0C /* AppDelegate.m */; }; 12 | 820978F31BD3A37700CF9D0C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 820978F21BD3A37700CF9D0C /* Assets.xcassets */; }; 13 | 820979071BD3AA9400CF9D0C /* LLBaseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 820979061BD3AA9400CF9D0C /* LLBaseViewController.m */; }; 14 | 820979101BD3AB2800CF9D0C /* LLHomeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8209790E1BD3AB2800CF9D0C /* LLHomeViewController.m */; }; 15 | 820979111BD3AB2800CF9D0C /* LLHomeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8209790F1BD3AB2800CF9D0C /* LLHomeViewController.xib */; }; 16 | 820979151BD3AEA800CF9D0C /* LLMessageViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 820979131BD3AEA800CF9D0C /* LLMessageViewController.m */; }; 17 | 820979161BD3AEA800CF9D0C /* LLMessageViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 820979141BD3AEA800CF9D0C /* LLMessageViewController.xib */; }; 18 | 8209791A1BD3AFAC00CF9D0C /* LLMineViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 820979181BD3AFAC00CF9D0C /* LLMineViewController.m */; }; 19 | 8209791B1BD3AFAC00CF9D0C /* LLMineViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 820979191BD3AFAC00CF9D0C /* LLMineViewController.xib */; }; 20 | 8209791F1BD3AFDB00CF9D0C /* LLSameCityViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8209791D1BD3AFDB00CF9D0C /* LLSameCityViewController.m */; }; 21 | 820979201BD3AFDB00CF9D0C /* LLSameCityViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8209791E1BD3AFDB00CF9D0C /* LLSameCityViewController.xib */; }; 22 | 820979281BD3B28700CF9D0C /* LLTabBar.m in Sources */ = {isa = PBXBuildFile; fileRef = 820979271BD3B28700CF9D0C /* LLTabBar.m */; }; 23 | 8209792B1BD3C1ED00CF9D0C /* LLTabBarItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 8209792A1BD3C1ED00CF9D0C /* LLTabBarItem.m */; }; 24 | /* End PBXBuildFile section */ 25 | 26 | /* Begin PBXFileReference section */ 27 | 820978E31BD3A37600CF9D0C /* LLRiseTabBarDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LLRiseTabBarDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; 28 | 820978E71BD3A37600CF9D0C /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 29 | 820978E91BD3A37700CF9D0C /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 30 | 820978EA1BD3A37700CF9D0C /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 31 | 820978F21BD3A37700CF9D0C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 32 | 820978F71BD3A37700CF9D0C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 33 | 820979051BD3AA9400CF9D0C /* LLBaseViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LLBaseViewController.h; sourceTree = ""; }; 34 | 820979061BD3AA9400CF9D0C /* LLBaseViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LLBaseViewController.m; sourceTree = ""; }; 35 | 8209790D1BD3AB2800CF9D0C /* LLHomeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LLHomeViewController.h; sourceTree = ""; }; 36 | 8209790E1BD3AB2800CF9D0C /* LLHomeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LLHomeViewController.m; sourceTree = ""; }; 37 | 8209790F1BD3AB2800CF9D0C /* LLHomeViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LLHomeViewController.xib; sourceTree = ""; }; 38 | 820979121BD3AEA800CF9D0C /* LLMessageViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LLMessageViewController.h; sourceTree = ""; }; 39 | 820979131BD3AEA800CF9D0C /* LLMessageViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LLMessageViewController.m; sourceTree = ""; }; 40 | 820979141BD3AEA800CF9D0C /* LLMessageViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LLMessageViewController.xib; sourceTree = ""; }; 41 | 820979171BD3AFAC00CF9D0C /* LLMineViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LLMineViewController.h; sourceTree = ""; }; 42 | 820979181BD3AFAC00CF9D0C /* LLMineViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LLMineViewController.m; sourceTree = ""; }; 43 | 820979191BD3AFAC00CF9D0C /* LLMineViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LLMineViewController.xib; sourceTree = ""; }; 44 | 8209791C1BD3AFDB00CF9D0C /* LLSameCityViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LLSameCityViewController.h; sourceTree = ""; }; 45 | 8209791D1BD3AFDB00CF9D0C /* LLSameCityViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LLSameCityViewController.m; sourceTree = ""; }; 46 | 8209791E1BD3AFDB00CF9D0C /* LLSameCityViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LLSameCityViewController.xib; sourceTree = ""; }; 47 | 820979261BD3B28700CF9D0C /* LLTabBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LLTabBar.h; sourceTree = ""; }; 48 | 820979271BD3B28700CF9D0C /* LLTabBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LLTabBar.m; sourceTree = ""; }; 49 | 820979291BD3C1ED00CF9D0C /* LLTabBarItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LLTabBarItem.h; sourceTree = ""; }; 50 | 8209792A1BD3C1ED00CF9D0C /* LLTabBarItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LLTabBarItem.m; sourceTree = ""; }; 51 | 827809371BD3CB7B0096F95C /* LLRiseTabBarDemo.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LLRiseTabBarDemo.pch; sourceTree = ""; }; 52 | /* End PBXFileReference section */ 53 | 54 | /* Begin PBXFrameworksBuildPhase section */ 55 | 820978E01BD3A37600CF9D0C /* Frameworks */ = { 56 | isa = PBXFrameworksBuildPhase; 57 | buildActionMask = 2147483647; 58 | files = ( 59 | ); 60 | runOnlyForDeploymentPostprocessing = 0; 61 | }; 62 | /* End PBXFrameworksBuildPhase section */ 63 | 64 | /* Begin PBXGroup section */ 65 | 820978DA1BD3A37600CF9D0C = { 66 | isa = PBXGroup; 67 | children = ( 68 | 820978E51BD3A37600CF9D0C /* LLRiseTabBarDemo */, 69 | 820979211BD3B0FE00CF9D0C /* Frameworks */, 70 | 820978E41BD3A37600CF9D0C /* Products */, 71 | ); 72 | sourceTree = ""; 73 | }; 74 | 820978E41BD3A37600CF9D0C /* Products */ = { 75 | isa = PBXGroup; 76 | children = ( 77 | 820978E31BD3A37600CF9D0C /* LLRiseTabBarDemo.app */, 78 | ); 79 | name = Products; 80 | sourceTree = ""; 81 | }; 82 | 820978E51BD3A37600CF9D0C /* LLRiseTabBarDemo */ = { 83 | isa = PBXGroup; 84 | children = ( 85 | 820979241BD3B1CC00CF9D0C /* CustomView */, 86 | 820978FD1BD3A94100CF9D0C /* ViewController */, 87 | 820978E91BD3A37700CF9D0C /* AppDelegate.h */, 88 | 820978EA1BD3A37700CF9D0C /* AppDelegate.m */, 89 | 820978F21BD3A37700CF9D0C /* Assets.xcassets */, 90 | 820978E61BD3A37600CF9D0C /* Supporting Files */, 91 | ); 92 | path = LLRiseTabBarDemo; 93 | sourceTree = ""; 94 | }; 95 | 820978E61BD3A37600CF9D0C /* Supporting Files */ = { 96 | isa = PBXGroup; 97 | children = ( 98 | 820978E71BD3A37600CF9D0C /* main.m */, 99 | 820978F71BD3A37700CF9D0C /* Info.plist */, 100 | 827809371BD3CB7B0096F95C /* LLRiseTabBarDemo.pch */, 101 | ); 102 | name = "Supporting Files"; 103 | sourceTree = ""; 104 | }; 105 | 820978FD1BD3A94100CF9D0C /* ViewController */ = { 106 | isa = PBXGroup; 107 | children = ( 108 | 820979041BD3AA9400CF9D0C /* Base */, 109 | 820979081BD3AB0600CF9D0C /* Home */, 110 | 820979091BD3AB0600CF9D0C /* Message */, 111 | 8209790A1BD3AB0600CF9D0C /* Mine */, 112 | 8209790B1BD3AB0600CF9D0C /* Publish */, 113 | 8209790C1BD3AB0600CF9D0C /* SameCity */, 114 | ); 115 | path = ViewController; 116 | sourceTree = ""; 117 | }; 118 | 820979041BD3AA9400CF9D0C /* Base */ = { 119 | isa = PBXGroup; 120 | children = ( 121 | 820979051BD3AA9400CF9D0C /* LLBaseViewController.h */, 122 | 820979061BD3AA9400CF9D0C /* LLBaseViewController.m */, 123 | ); 124 | path = Base; 125 | sourceTree = ""; 126 | }; 127 | 820979081BD3AB0600CF9D0C /* Home */ = { 128 | isa = PBXGroup; 129 | children = ( 130 | 8209790D1BD3AB2800CF9D0C /* LLHomeViewController.h */, 131 | 8209790E1BD3AB2800CF9D0C /* LLHomeViewController.m */, 132 | 8209790F1BD3AB2800CF9D0C /* LLHomeViewController.xib */, 133 | ); 134 | path = Home; 135 | sourceTree = ""; 136 | }; 137 | 820979091BD3AB0600CF9D0C /* Message */ = { 138 | isa = PBXGroup; 139 | children = ( 140 | 820979121BD3AEA800CF9D0C /* LLMessageViewController.h */, 141 | 820979131BD3AEA800CF9D0C /* LLMessageViewController.m */, 142 | 820979141BD3AEA800CF9D0C /* LLMessageViewController.xib */, 143 | ); 144 | path = Message; 145 | sourceTree = ""; 146 | }; 147 | 8209790A1BD3AB0600CF9D0C /* Mine */ = { 148 | isa = PBXGroup; 149 | children = ( 150 | 820979171BD3AFAC00CF9D0C /* LLMineViewController.h */, 151 | 820979181BD3AFAC00CF9D0C /* LLMineViewController.m */, 152 | 820979191BD3AFAC00CF9D0C /* LLMineViewController.xib */, 153 | ); 154 | path = Mine; 155 | sourceTree = ""; 156 | }; 157 | 8209790B1BD3AB0600CF9D0C /* Publish */ = { 158 | isa = PBXGroup; 159 | children = ( 160 | ); 161 | path = Publish; 162 | sourceTree = ""; 163 | }; 164 | 8209790C1BD3AB0600CF9D0C /* SameCity */ = { 165 | isa = PBXGroup; 166 | children = ( 167 | 8209791C1BD3AFDB00CF9D0C /* LLSameCityViewController.h */, 168 | 8209791D1BD3AFDB00CF9D0C /* LLSameCityViewController.m */, 169 | 8209791E1BD3AFDB00CF9D0C /* LLSameCityViewController.xib */, 170 | ); 171 | path = SameCity; 172 | sourceTree = ""; 173 | }; 174 | 820979211BD3B0FE00CF9D0C /* Frameworks */ = { 175 | isa = PBXGroup; 176 | children = ( 177 | ); 178 | name = Frameworks; 179 | sourceTree = ""; 180 | }; 181 | 820979241BD3B1CC00CF9D0C /* CustomView */ = { 182 | isa = PBXGroup; 183 | children = ( 184 | 820979251BD3B1CC00CF9D0C /* LLTabBar */, 185 | ); 186 | path = CustomView; 187 | sourceTree = ""; 188 | }; 189 | 820979251BD3B1CC00CF9D0C /* LLTabBar */ = { 190 | isa = PBXGroup; 191 | children = ( 192 | 820979261BD3B28700CF9D0C /* LLTabBar.h */, 193 | 820979271BD3B28700CF9D0C /* LLTabBar.m */, 194 | 820979291BD3C1ED00CF9D0C /* LLTabBarItem.h */, 195 | 8209792A1BD3C1ED00CF9D0C /* LLTabBarItem.m */, 196 | ); 197 | path = LLTabBar; 198 | sourceTree = ""; 199 | }; 200 | /* End PBXGroup section */ 201 | 202 | /* Begin PBXNativeTarget section */ 203 | 820978E21BD3A37600CF9D0C /* LLRiseTabBarDemo */ = { 204 | isa = PBXNativeTarget; 205 | buildConfigurationList = 820978FA1BD3A37700CF9D0C /* Build configuration list for PBXNativeTarget "LLRiseTabBarDemo" */; 206 | buildPhases = ( 207 | 820978DF1BD3A37600CF9D0C /* Sources */, 208 | 820978E01BD3A37600CF9D0C /* Frameworks */, 209 | 820978E11BD3A37600CF9D0C /* Resources */, 210 | ); 211 | buildRules = ( 212 | ); 213 | dependencies = ( 214 | ); 215 | name = LLRiseTabBarDemo; 216 | productName = LLRiseTabBarDemo; 217 | productReference = 820978E31BD3A37600CF9D0C /* LLRiseTabBarDemo.app */; 218 | productType = "com.apple.product-type.application"; 219 | }; 220 | /* End PBXNativeTarget section */ 221 | 222 | /* Begin PBXProject section */ 223 | 820978DB1BD3A37600CF9D0C /* Project object */ = { 224 | isa = PBXProject; 225 | attributes = { 226 | LastUpgradeCheck = 0700; 227 | ORGANIZATIONNAME = melody; 228 | TargetAttributes = { 229 | 820978E21BD3A37600CF9D0C = { 230 | CreatedOnToolsVersion = 7.0.1; 231 | }; 232 | }; 233 | }; 234 | buildConfigurationList = 820978DE1BD3A37600CF9D0C /* Build configuration list for PBXProject "LLRiseTabBarDemo" */; 235 | compatibilityVersion = "Xcode 3.2"; 236 | developmentRegion = English; 237 | hasScannedForEncodings = 0; 238 | knownRegions = ( 239 | en, 240 | Base, 241 | ); 242 | mainGroup = 820978DA1BD3A37600CF9D0C; 243 | productRefGroup = 820978E41BD3A37600CF9D0C /* Products */; 244 | projectDirPath = ""; 245 | projectRoot = ""; 246 | targets = ( 247 | 820978E21BD3A37600CF9D0C /* LLRiseTabBarDemo */, 248 | ); 249 | }; 250 | /* End PBXProject section */ 251 | 252 | /* Begin PBXResourcesBuildPhase section */ 253 | 820978E11BD3A37600CF9D0C /* Resources */ = { 254 | isa = PBXResourcesBuildPhase; 255 | buildActionMask = 2147483647; 256 | files = ( 257 | 820979201BD3AFDB00CF9D0C /* LLSameCityViewController.xib in Resources */, 258 | 820978F31BD3A37700CF9D0C /* Assets.xcassets in Resources */, 259 | 8209791B1BD3AFAC00CF9D0C /* LLMineViewController.xib in Resources */, 260 | 820979161BD3AEA800CF9D0C /* LLMessageViewController.xib in Resources */, 261 | 820979111BD3AB2800CF9D0C /* LLHomeViewController.xib in Resources */, 262 | ); 263 | runOnlyForDeploymentPostprocessing = 0; 264 | }; 265 | /* End PBXResourcesBuildPhase section */ 266 | 267 | /* Begin PBXSourcesBuildPhase section */ 268 | 820978DF1BD3A37600CF9D0C /* Sources */ = { 269 | isa = PBXSourcesBuildPhase; 270 | buildActionMask = 2147483647; 271 | files = ( 272 | 8209791F1BD3AFDB00CF9D0C /* LLSameCityViewController.m in Sources */, 273 | 8209792B1BD3C1ED00CF9D0C /* LLTabBarItem.m in Sources */, 274 | 820979281BD3B28700CF9D0C /* LLTabBar.m in Sources */, 275 | 820979071BD3AA9400CF9D0C /* LLBaseViewController.m in Sources */, 276 | 820979101BD3AB2800CF9D0C /* LLHomeViewController.m in Sources */, 277 | 820978EB1BD3A37700CF9D0C /* AppDelegate.m in Sources */, 278 | 820979151BD3AEA800CF9D0C /* LLMessageViewController.m in Sources */, 279 | 820978E81BD3A37600CF9D0C /* main.m in Sources */, 280 | 8209791A1BD3AFAC00CF9D0C /* LLMineViewController.m in Sources */, 281 | ); 282 | runOnlyForDeploymentPostprocessing = 0; 283 | }; 284 | /* End PBXSourcesBuildPhase section */ 285 | 286 | /* Begin XCBuildConfiguration section */ 287 | 820978F81BD3A37700CF9D0C /* Debug */ = { 288 | isa = XCBuildConfiguration; 289 | buildSettings = { 290 | ALWAYS_SEARCH_USER_PATHS = NO; 291 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 292 | CLANG_CXX_LIBRARY = "libc++"; 293 | CLANG_ENABLE_MODULES = YES; 294 | CLANG_ENABLE_OBJC_ARC = YES; 295 | CLANG_WARN_BOOL_CONVERSION = YES; 296 | CLANG_WARN_CONSTANT_CONVERSION = YES; 297 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 298 | CLANG_WARN_EMPTY_BODY = YES; 299 | CLANG_WARN_ENUM_CONVERSION = YES; 300 | CLANG_WARN_INT_CONVERSION = YES; 301 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 302 | CLANG_WARN_UNREACHABLE_CODE = YES; 303 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 304 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 305 | COPY_PHASE_STRIP = NO; 306 | DEBUG_INFORMATION_FORMAT = dwarf; 307 | ENABLE_STRICT_OBJC_MSGSEND = YES; 308 | ENABLE_TESTABILITY = YES; 309 | GCC_C_LANGUAGE_STANDARD = gnu99; 310 | GCC_DYNAMIC_NO_PIC = NO; 311 | GCC_NO_COMMON_BLOCKS = YES; 312 | GCC_OPTIMIZATION_LEVEL = 0; 313 | GCC_PREPROCESSOR_DEFINITIONS = ( 314 | "DEBUG=1", 315 | "$(inherited)", 316 | ); 317 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 318 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 319 | GCC_WARN_UNDECLARED_SELECTOR = YES; 320 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 321 | GCC_WARN_UNUSED_FUNCTION = YES; 322 | GCC_WARN_UNUSED_VARIABLE = YES; 323 | IPHONEOS_DEPLOYMENT_TARGET = 7.0; 324 | MTL_ENABLE_DEBUG_INFO = YES; 325 | ONLY_ACTIVE_ARCH = YES; 326 | SDKROOT = iphoneos; 327 | }; 328 | name = Debug; 329 | }; 330 | 820978F91BD3A37700CF9D0C /* Release */ = { 331 | isa = XCBuildConfiguration; 332 | buildSettings = { 333 | ALWAYS_SEARCH_USER_PATHS = NO; 334 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 335 | CLANG_CXX_LIBRARY = "libc++"; 336 | CLANG_ENABLE_MODULES = YES; 337 | CLANG_ENABLE_OBJC_ARC = YES; 338 | CLANG_WARN_BOOL_CONVERSION = YES; 339 | CLANG_WARN_CONSTANT_CONVERSION = YES; 340 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 341 | CLANG_WARN_EMPTY_BODY = YES; 342 | CLANG_WARN_ENUM_CONVERSION = YES; 343 | CLANG_WARN_INT_CONVERSION = YES; 344 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 345 | CLANG_WARN_UNREACHABLE_CODE = YES; 346 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 347 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 348 | COPY_PHASE_STRIP = NO; 349 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 350 | ENABLE_NS_ASSERTIONS = NO; 351 | ENABLE_STRICT_OBJC_MSGSEND = YES; 352 | GCC_C_LANGUAGE_STANDARD = gnu99; 353 | GCC_NO_COMMON_BLOCKS = YES; 354 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 355 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 356 | GCC_WARN_UNDECLARED_SELECTOR = YES; 357 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 358 | GCC_WARN_UNUSED_FUNCTION = YES; 359 | GCC_WARN_UNUSED_VARIABLE = YES; 360 | IPHONEOS_DEPLOYMENT_TARGET = 7.0; 361 | MTL_ENABLE_DEBUG_INFO = NO; 362 | SDKROOT = iphoneos; 363 | VALIDATE_PRODUCT = YES; 364 | }; 365 | name = Release; 366 | }; 367 | 820978FB1BD3A37700CF9D0C /* Debug */ = { 368 | isa = XCBuildConfiguration; 369 | buildSettings = { 370 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 371 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = BrandAsset; 372 | FRAMEWORK_SEARCH_PATHS = ( 373 | "$(inherited)", 374 | "$(PROJECT_DIR)", 375 | ); 376 | GCC_PREFIX_HEADER = "$(SRCROOT)/LLRiseTabBarDemo/LLRiseTabBarDemo.pch"; 377 | INFOPLIST_FILE = LLRiseTabBarDemo/Info.plist; 378 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 379 | OTHER_LDFLAGS = ""; 380 | PRODUCT_BUNDLE_IDENTIFIER = com.meilbn.LLRiseTabBarDemo; 381 | PRODUCT_NAME = "$(TARGET_NAME)"; 382 | }; 383 | name = Debug; 384 | }; 385 | 820978FC1BD3A37700CF9D0C /* Release */ = { 386 | isa = XCBuildConfiguration; 387 | buildSettings = { 388 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 389 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = BrandAsset; 390 | FRAMEWORK_SEARCH_PATHS = ( 391 | "$(inherited)", 392 | "$(PROJECT_DIR)", 393 | ); 394 | GCC_PREFIX_HEADER = "$(SRCROOT)/LLRiseTabBarDemo/LLRiseTabBarDemo.pch"; 395 | INFOPLIST_FILE = LLRiseTabBarDemo/Info.plist; 396 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 397 | OTHER_LDFLAGS = ""; 398 | PRODUCT_BUNDLE_IDENTIFIER = com.meilbn.LLRiseTabBarDemo; 399 | PRODUCT_NAME = "$(TARGET_NAME)"; 400 | }; 401 | name = Release; 402 | }; 403 | /* End XCBuildConfiguration section */ 404 | 405 | /* Begin XCConfigurationList section */ 406 | 820978DE1BD3A37600CF9D0C /* Build configuration list for PBXProject "LLRiseTabBarDemo" */ = { 407 | isa = XCConfigurationList; 408 | buildConfigurations = ( 409 | 820978F81BD3A37700CF9D0C /* Debug */, 410 | 820978F91BD3A37700CF9D0C /* Release */, 411 | ); 412 | defaultConfigurationIsVisible = 0; 413 | defaultConfigurationName = Release; 414 | }; 415 | 820978FA1BD3A37700CF9D0C /* Build configuration list for PBXNativeTarget "LLRiseTabBarDemo" */ = { 416 | isa = XCConfigurationList; 417 | buildConfigurations = ( 418 | 820978FB1BD3A37700CF9D0C /* Debug */, 419 | 820978FC1BD3A37700CF9D0C /* Release */, 420 | ); 421 | defaultConfigurationIsVisible = 0; 422 | defaultConfigurationName = Release; 423 | }; 424 | /* End XCConfigurationList section */ 425 | }; 426 | rootObject = 820978DB1BD3A37600CF9D0C /* Project object */; 427 | } 428 | --------------------------------------------------------------------------------