├── DLTabBarController
└── DLTabBarControllerDemo
│ ├── .DS_Store
│ ├── DLTabBarControllerDemo
│ ├── Assets.xcassets
│ │ ├── Contents.json
│ │ ├── TabBar
│ │ │ ├── Contents.json
│ │ │ ├── main_badge.imageset
│ │ │ │ ├── main_badge@2x.png
│ │ │ │ └── Contents.json
│ │ │ ├── tabbar_home.imageset
│ │ │ │ ├── tabbar_home@2x.png
│ │ │ │ └── Contents.json
│ │ │ ├── tabbar_profile.imageset
│ │ │ │ ├── tabbar_profile@2x.png
│ │ │ │ └── Contents.json
│ │ │ ├── tabbar_discover.imageset
│ │ │ │ ├── tabbar_discover@2x.png
│ │ │ │ └── Contents.json
│ │ │ ├── tabbar_background.imageset
│ │ │ │ ├── tabbar_background@2x.png
│ │ │ │ └── Contents.json
│ │ │ ├── tabbar_home_selected.imageset
│ │ │ │ ├── tabbar_home_selected@2x.png
│ │ │ │ └── Contents.json
│ │ │ ├── tabbar_compose_button.imageset
│ │ │ │ ├── tabbar_compose_button@2x.png
│ │ │ │ └── Contents.json
│ │ │ ├── tabbar_message_center.imageset
│ │ │ │ ├── tabbar_message_center@2x.png
│ │ │ │ └── Contents.json
│ │ │ ├── tabbar_compose_icon_add.imageset
│ │ │ │ ├── tabbar_compose_icon_add@2x.png
│ │ │ │ └── Contents.json
│ │ │ ├── tabbar_profile_selected.imageset
│ │ │ │ ├── tabbar_profile_selected@2x.png
│ │ │ │ └── Contents.json
│ │ │ ├── tabbar_discover_selected.imageset
│ │ │ │ ├── tabbar_discover_selected@2x.png
│ │ │ │ └── Contents.json
│ │ │ ├── tabbar_message_center_selected.imageset
│ │ │ │ ├── tabbar_message_center_selected@2x.png
│ │ │ │ └── Contents.json
│ │ │ ├── tabbar_compose_button_highlighted.imageset
│ │ │ │ ├── tabbar_compose_button_highlighted@2x.png
│ │ │ │ └── Contents.json
│ │ │ └── tabbar_compose_icon_add_highlighted.imageset
│ │ │ │ ├── tabbar_compose_icon_add_highlighted@2x.png
│ │ │ │ └── Contents.json
│ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ ├── .DS_Store
│ ├── Lib
│ │ ├── BHBPopView
│ │ │ ├── Resource
│ │ │ │ ├── music.bundle
│ │ │ │ │ ├── composer_open.wav
│ │ │ │ │ └── composer_close.wav
│ │ │ │ └── images.bundle
│ │ │ │ │ ├── compose_slogan@2x.png
│ │ │ │ │ ├── compose_slogan@3x.png
│ │ │ │ │ ├── tabbar_compose_book@2x.png
│ │ │ │ │ ├── tabbar_compose_idea@2x.png
│ │ │ │ │ ├── tabbar_compose_idea@3x.png
│ │ │ │ │ ├── tabbar_compose_lbs@2x.png
│ │ │ │ │ ├── tabbar_compose_lbs@3x.png
│ │ │ │ │ ├── tabbar_compose_more@2x.png
│ │ │ │ │ ├── tabbar_compose_more@3x.png
│ │ │ │ │ ├── tabbar_compose_button@2x.png
│ │ │ │ │ ├── tabbar_compose_button@3x.png
│ │ │ │ │ ├── tabbar_compose_camera@2x.png
│ │ │ │ │ ├── tabbar_compose_camera@3x.png
│ │ │ │ │ ├── tabbar_compose_friend@2x.png
│ │ │ │ │ ├── tabbar_compose_friend@3x.png
│ │ │ │ │ ├── tabbar_compose_music@2x.png
│ │ │ │ │ ├── tabbar_compose_music@3x.png
│ │ │ │ │ ├── tabbar_compose_photo@2x.png
│ │ │ │ │ ├── tabbar_compose_photo@3x.png
│ │ │ │ │ ├── tabbar_compose_review@2x.png
│ │ │ │ │ ├── tabbar_compose_review@3x.png
│ │ │ │ │ ├── tabbar_compose_video@2x.png
│ │ │ │ │ ├── tabbar_compose_voice@2x.png
│ │ │ │ │ ├── tabbar_compose_voice@3x.png
│ │ │ │ │ ├── tabbar_compose_weibo@2x.png
│ │ │ │ │ ├── tabbar_compose_weibo@3x.png
│ │ │ │ │ ├── tabbar_compose_icon_add@2x.png
│ │ │ │ │ ├── tabbar_compose_icon_add@3x.png
│ │ │ │ │ ├── tabbar_compose_more_mask@2x.png
│ │ │ │ │ ├── tabbar_compose_notloaded@2x.png
│ │ │ │ │ ├── tabbar_compose_shooting@2x.png
│ │ │ │ │ ├── tabbar_compose_shooting@3x.png
│ │ │ │ │ ├── tabbar_compose_transfer@3x.png
│ │ │ │ │ ├── tabbar_compose_wbcamera@2x.png
│ │ │ │ │ ├── tabbar_compose_wbcamera@3x.png
│ │ │ │ │ ├── tabbar_compose_left_button@2x.png
│ │ │ │ │ ├── tabbar_compose_below_button@2x.png
│ │ │ │ │ ├── tabbar_compose_right_button@2x.png
│ │ │ │ │ ├── tabbar_compose_below_background@2x.png
│ │ │ │ │ ├── tabbar_compose_background_icon_add@2x.png
│ │ │ │ │ ├── tabbar_compose_background_icon_add@3x.png
│ │ │ │ │ ├── tabbar_compose_button_highlighted@2x.png
│ │ │ │ │ ├── tabbar_compose_button_highlighted@3x.png
│ │ │ │ │ ├── tabbar_compose_background_icon_close@2x.png
│ │ │ │ │ ├── tabbar_compose_background_icon_close@3x.png
│ │ │ │ │ ├── tabbar_compose_icon_add_highlighted@2x.png
│ │ │ │ │ ├── tabbar_compose_icon_add_highlighted@3x.png
│ │ │ │ │ ├── tabbar_compose_background_icon_return@2x.png
│ │ │ │ │ ├── tabbar_compose_background_icon_return@3x.png
│ │ │ │ │ ├── tabbar_compose_below_button_highlighted@2x.png
│ │ │ │ │ ├── tabbar_compose_left_button_highlighted@2x.png
│ │ │ │ │ └── tabbar_compose_right_button_highlighted@2x.png
│ │ │ ├── BHBGroup.m
│ │ │ ├── BHBGroup.h
│ │ │ ├── BHBCustomBtn.h
│ │ │ ├── UIButton+BHBSetImage.h
│ │ │ ├── UIImageView+BHBSetImage.h
│ │ │ ├── BHBItem.h
│ │ │ ├── UIImage+BHBEffects.h
│ │ │ ├── BHBItem.m
│ │ │ ├── UIView+BHBAnimation.h
│ │ │ ├── BHBBottomBar.h
│ │ │ ├── BHBCustomBtn.m
│ │ │ ├── BHBCenterView.h
│ │ │ ├── BHBPopView.h
│ │ │ ├── UIImageView+BHBSetImage.m
│ │ │ ├── UIView+BHBAnimation.m
│ │ │ ├── UIButton+BHBSetImage.m
│ │ │ ├── BHBPlaySoundTool.h
│ │ │ ├── BHBSingleton.h
│ │ │ ├── BHBPlaySoundTool.m
│ │ │ ├── BHBBottomBar.m
│ │ │ ├── UIImage+BHBEffects.m
│ │ │ └── BHBPopView.m
│ │ ├── UIView+Extension.h
│ │ └── UIView+Extension.m
│ ├── ViewController.h
│ ├── DLTabBarController.h
│ ├── AppDelegate.h
│ ├── main.m
│ ├── DLTabBar.h
│ ├── ViewController.m
│ ├── Info.plist
│ ├── Base.lproj
│ │ ├── Main.storyboard
│ │ └── LaunchScreen.storyboard
│ ├── AppDelegate.m
│ ├── DLTabBar.m
│ └── DLTabBarController.m
│ ├── DLTabBarControllerDemo.xcodeproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcuserdata
│ │ │ └── ft_david.xcuserdatad
│ │ │ └── UserInterfaceState.xcuserstate
│ └── xcuserdata
│ │ └── ft_david.xcuserdatad
│ │ └── xcschemes
│ │ ├── xcschememanagement.plist
│ │ └── DLTabBarControllerDemo.xcscheme
│ ├── DLTabBarControllerDemoTests
│ ├── Info.plist
│ └── DLTabBarControllerDemoTests.m
│ └── DLTabBarControllerDemoUITests
│ ├── Info.plist
│ └── DLTabBarControllerDemoUITests.m
├── BHBPopViewDemo
├── BHBPopViewDemo
│ ├── BHBPopView
│ │ ├── Resource
│ │ │ ├── music.bundle
│ │ │ │ ├── composer_close.wav
│ │ │ │ └── composer_open.wav
│ │ │ └── images.bundle
│ │ │ │ ├── compose_slogan@2x.png
│ │ │ │ ├── compose_slogan@3x.png
│ │ │ │ ├── tabbar_compose_lbs@2x.png
│ │ │ │ ├── tabbar_compose_lbs@3x.png
│ │ │ │ ├── tabbar_compose_book@2x.png
│ │ │ │ ├── tabbar_compose_idea@2x.png
│ │ │ │ ├── tabbar_compose_idea@3x.png
│ │ │ │ ├── tabbar_compose_more@2x.png
│ │ │ │ ├── tabbar_compose_more@3x.png
│ │ │ │ ├── tabbar_compose_music@2x.png
│ │ │ │ ├── tabbar_compose_music@3x.png
│ │ │ │ ├── tabbar_compose_photo@2x.png
│ │ │ │ ├── tabbar_compose_photo@3x.png
│ │ │ │ ├── tabbar_compose_video@2x.png
│ │ │ │ ├── tabbar_compose_voice@2x.png
│ │ │ │ ├── tabbar_compose_voice@3x.png
│ │ │ │ ├── tabbar_compose_weibo@2x.png
│ │ │ │ ├── tabbar_compose_weibo@3x.png
│ │ │ │ ├── tabbar_compose_button@2x.png
│ │ │ │ ├── tabbar_compose_button@3x.png
│ │ │ │ ├── tabbar_compose_camera@2x.png
│ │ │ │ ├── tabbar_compose_camera@3x.png
│ │ │ │ ├── tabbar_compose_friend@2x.png
│ │ │ │ ├── tabbar_compose_friend@3x.png
│ │ │ │ ├── tabbar_compose_icon_add@2x.png
│ │ │ │ ├── tabbar_compose_icon_add@3x.png
│ │ │ │ ├── tabbar_compose_review@2x.png
│ │ │ │ ├── tabbar_compose_review@3x.png
│ │ │ │ ├── tabbar_compose_shooting@2x.png
│ │ │ │ ├── tabbar_compose_shooting@3x.png
│ │ │ │ ├── tabbar_compose_transfer@3x.png
│ │ │ │ ├── tabbar_compose_wbcamera@2x.png
│ │ │ │ ├── tabbar_compose_wbcamera@3x.png
│ │ │ │ ├── tabbar_compose_more_mask@2x.png
│ │ │ │ ├── tabbar_compose_notloaded@2x.png
│ │ │ │ ├── tabbar_compose_below_button@2x.png
│ │ │ │ ├── tabbar_compose_left_button@2x.png
│ │ │ │ ├── tabbar_compose_right_button@2x.png
│ │ │ │ ├── tabbar_compose_below_background@2x.png
│ │ │ │ ├── tabbar_compose_button_highlighted@2x.png
│ │ │ │ ├── tabbar_compose_button_highlighted@3x.png
│ │ │ │ ├── tabbar_compose_background_icon_add@2x.png
│ │ │ │ ├── tabbar_compose_background_icon_add@3x.png
│ │ │ │ ├── tabbar_compose_icon_add_highlighted@2x.png
│ │ │ │ ├── tabbar_compose_icon_add_highlighted@3x.png
│ │ │ │ ├── tabbar_compose_background_icon_close@2x.png
│ │ │ │ ├── tabbar_compose_background_icon_close@3x.png
│ │ │ │ ├── tabbar_compose_background_icon_return@2x.png
│ │ │ │ ├── tabbar_compose_background_icon_return@3x.png
│ │ │ │ ├── tabbar_compose_left_button_highlighted@2x.png
│ │ │ │ ├── tabbar_compose_below_button_highlighted@2x.png
│ │ │ │ └── tabbar_compose_right_button_highlighted@2x.png
│ │ ├── BHBGroup.m
│ │ ├── BHBGroup.h
│ │ ├── BHBCustomBtn.h
│ │ ├── UIButton+BHBSetImage.h
│ │ ├── UIImageView+BHBSetImage.h
│ │ ├── BHBItem.h
│ │ ├── UIImage+BHBEffects.h
│ │ ├── BHBItem.m
│ │ ├── UIView+BHBAnimation.h
│ │ ├── BHBBottomBar.h
│ │ ├── BHBCustomBtn.m
│ │ ├── BHBCenterView.h
│ │ ├── BHBPopView.h
│ │ ├── UIImageView+BHBSetImage.m
│ │ ├── UIView+BHBAnimation.m
│ │ ├── UIButton+BHBSetImage.m
│ │ ├── BHBPlaySoundTool.h
│ │ ├── BHBSingleton.h
│ │ ├── BHBPlaySoundTool.m
│ │ ├── BHBBottomBar.m
│ │ ├── UIImage+BHBEffects.m
│ │ ├── BHBPopView.m
│ │ └── BHBCenterView.m
│ ├── Images.xcassets
│ │ ├── backgroundImage.imageset
│ │ │ ├── backgroundImage.png
│ │ │ ├── backgroundImage副本.png
│ │ │ └── Contents.json
│ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ ├── ViewController.h
│ ├── AppDelegate.h
│ ├── main.m
│ ├── Info.plist
│ ├── Base.lproj
│ │ ├── Main.storyboard
│ │ └── LaunchScreen.xib
│ ├── AppDelegate.m
│ └── ViewController.m
├── BHBPopViewDemo.xcodeproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ ├── xcuserdata
│ │ │ └── bihongbo.xcuserdatad
│ │ │ │ ├── UserInterfaceState.xcuserstate
│ │ │ │ └── WorkspaceSettings.xcsettings
│ │ └── xcshareddata
│ │ │ └── BHBPopViewDemo.xccheckout
│ └── xcuserdata
│ │ └── bihongbo.xcuserdatad
│ │ ├── xcdebugger
│ │ └── Breakpoints_v2.xcbkptlist
│ │ └── xcschemes
│ │ ├── xcschememanagement.plist
│ │ └── BHBPopViewDemo.xcscheme
└── BHBPopViewDemoTests
│ ├── Info.plist
│ └── BHBPopViewDemoTests.m
├── LICENSE
├── BHBPopView.podspec
└── README.md
/DLTabBarController/DLTabBarControllerDemo/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/.DS_Store
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/.DS_Store
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/music.bundle/composer_close.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/music.bundle/composer_close.wav
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/music.bundle/composer_open.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/music.bundle/composer_open.wav
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/compose_slogan@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/compose_slogan@2x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/compose_slogan@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/compose_slogan@3x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_lbs@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_lbs@2x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_lbs@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_lbs@3x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_book@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_book@2x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_idea@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_idea@2x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_idea@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_idea@3x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_more@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_more@2x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_more@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_more@3x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_music@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_music@2x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_music@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_music@3x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_photo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_photo@2x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_photo@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_photo@3x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_video@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_video@2x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_voice@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_voice@2x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_voice@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_voice@3x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_weibo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_weibo@2x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_weibo@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_weibo@3x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/Images.xcassets/backgroundImage.imageset/backgroundImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/Images.xcassets/backgroundImage.imageset/backgroundImage.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_button@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_button@2x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_button@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_button@3x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_camera@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_camera@2x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_camera@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_camera@3x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_friend@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_friend@2x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_friend@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_friend@3x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_icon_add@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_icon_add@2x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_icon_add@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_icon_add@3x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_review@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_review@2x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_review@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_review@3x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_shooting@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_shooting@2x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_shooting@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_shooting@3x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_transfer@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_transfer@3x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_wbcamera@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_wbcamera@2x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_wbcamera@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_wbcamera@3x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/Images.xcassets/backgroundImage.imageset/backgroundImage副本.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/Images.xcassets/backgroundImage.imageset/backgroundImage副本.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_more_mask@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_more_mask@2x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_notloaded@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_notloaded@2x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_below_button@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_below_button@2x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_left_button@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_left_button@2x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_right_button@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_right_button@2x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_below_background@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_below_background@2x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_button_highlighted@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_button_highlighted@2x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_button_highlighted@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_button_highlighted@3x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_background_icon_add@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_background_icon_add@2x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_background_icon_add@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_background_icon_add@3x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_icon_add_highlighted@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_icon_add_highlighted@2x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_icon_add_highlighted@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_icon_add_highlighted@3x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_background_icon_close@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_background_icon_close@2x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_background_icon_close@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_background_icon_close@3x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_background_icon_return@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_background_icon_return@2x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_background_icon_return@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_background_icon_return@3x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_left_button_highlighted@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_left_button_highlighted@2x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_below_button_highlighted@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_below_button_highlighted@2x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_right_button_highlighted@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/Resource/images.bundle/tabbar_compose_right_button_highlighted@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/music.bundle/composer_open.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/music.bundle/composer_open.wav
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/BHBGroup.m:
--------------------------------------------------------------------------------
1 | //
2 | // BHBGroup.m
3 | // BHBPopViewDemo
4 | //
5 | // Created by bihongbo on 16/3/16.
6 | // Copyright © 2016年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import "BHBGroup.h"
10 |
11 | @implementation BHBGroup
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/music.bundle/composer_close.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/music.bundle/composer_close.wav
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo.xcodeproj/project.xcworkspace/xcuserdata/bihongbo.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/BHBPopViewDemo/BHBPopViewDemo.xcodeproj/project.xcworkspace/xcuserdata/bihongbo.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/compose_slogan@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/compose_slogan@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/compose_slogan@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/compose_slogan@3x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/main_badge.imageset/main_badge@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/main_badge.imageset/main_badge@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_home.imageset/tabbar_home@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_home.imageset/tabbar_home@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_book@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_book@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_idea@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_idea@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_idea@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_idea@3x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_lbs@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_lbs@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_lbs@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_lbs@3x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_more@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_more@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_more@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_more@3x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_button@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_button@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_button@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_button@3x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_camera@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_camera@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_camera@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_camera@3x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_friend@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_friend@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_friend@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_friend@3x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_music@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_music@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_music@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_music@3x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_photo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_photo@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_photo@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_photo@3x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_review@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_review@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_review@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_review@3x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_video@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_video@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_voice@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_voice@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_voice@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_voice@3x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_weibo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_weibo@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_weibo@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_weibo@3x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_profile.imageset/tabbar_profile@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_profile.imageset/tabbar_profile@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_icon_add@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_icon_add@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_icon_add@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_icon_add@3x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_more_mask@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_more_mask@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_notloaded@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_notloaded@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_shooting@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_shooting@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_shooting@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_shooting@3x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_transfer@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_transfer@3x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_wbcamera@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_wbcamera@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_wbcamera@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_wbcamera@3x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_discover.imageset/tabbar_discover@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_discover.imageset/tabbar_discover@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_left_button@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_left_button@2x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/14.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : UIViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_background.imageset/tabbar_background@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_background.imageset/tabbar_background@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_below_button@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_below_button@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_right_button@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_right_button@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/BHBGroup.m:
--------------------------------------------------------------------------------
1 | //
2 | // BHBGroup.m
3 | // BHBPopViewDemo
4 | //
5 | // Created by bihongbo on 16/3/16.
6 | // Copyright © 2016年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import "BHBGroup.h"
10 |
11 | @implementation BHBGroup
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_below_background@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_below_background@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_background_icon_add@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_background_icon_add@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_background_icon_add@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_background_icon_add@3x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_button_highlighted@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_button_highlighted@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_button_highlighted@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_button_highlighted@3x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_home_selected.imageset/tabbar_home_selected@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_home_selected.imageset/tabbar_home_selected@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_background_icon_close@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_background_icon_close@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_background_icon_close@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_background_icon_close@3x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_icon_add_highlighted@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_icon_add_highlighted@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_icon_add_highlighted@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_icon_add_highlighted@3x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_compose_button.imageset/tabbar_compose_button@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_compose_button.imageset/tabbar_compose_button@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_message_center.imageset/tabbar_message_center@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_message_center.imageset/tabbar_message_center@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_background_icon_return@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_background_icon_return@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_background_icon_return@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_background_icon_return@3x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_below_button_highlighted@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_below_button_highlighted@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_left_button_highlighted@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_left_button_highlighted@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_right_button_highlighted@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/Resource/images.bundle/tabbar_compose_right_button_highlighted@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_compose_icon_add.imageset/tabbar_compose_icon_add@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_compose_icon_add.imageset/tabbar_compose_icon_add@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_profile_selected.imageset/tabbar_profile_selected@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_profile_selected.imageset/tabbar_profile_selected@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_discover_selected.imageset/tabbar_discover_selected@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_discover_selected.imageset/tabbar_discover_selected@2x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/BHBGroup.h:
--------------------------------------------------------------------------------
1 | //
2 | // BHBGroup.h
3 | // BHBPopViewDemo
4 | //
5 | // Created by bihongbo on 16/3/16.
6 | // Copyright © 2016年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import "BHBItem.h"
10 |
11 | @interface BHBGroup : BHBItem
12 |
13 | @property (nonatomic, strong) NSArray * items;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo.xcodeproj/project.xcworkspace/xcuserdata/ft_david.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo.xcodeproj/project.xcworkspace/xcuserdata/ft_david.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/BHBCustomBtn.h:
--------------------------------------------------------------------------------
1 | //
2 | // BHBCustomBtn.h
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/15.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #define ICONHEIGHT 71
12 | #define TITLEHEIGHT 30
13 |
14 | @interface BHBCustomBtn : UIButton
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // DLTabBarControllerDemo
4 | //
5 | // Created by FT_David on 16/5/27.
6 | // Copyright © 2016年 FT_David. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : UIViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_message_center_selected.imageset/tabbar_message_center_selected@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_message_center_selected.imageset/tabbar_message_center_selected@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/DLTabBarController.h:
--------------------------------------------------------------------------------
1 | //
2 | // DLTabBarController.h
3 | // DLTabBarControllerDemo
4 | //
5 | // Created by FT_David on 16/5/27.
6 | // Copyright © 2016年 FT_David. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface DLTabBarController : UITabBarController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_compose_button_highlighted.imageset/tabbar_compose_button_highlighted@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_compose_button_highlighted.imageset/tabbar_compose_button_highlighted@2x.png
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/14.
6 | // Copyright (c) 2015年 毕洪博. 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 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_compose_icon_add_highlighted.imageset/tabbar_compose_icon_add_highlighted@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bb-coder/BHBPopView/HEAD/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_compose_icon_add_highlighted.imageset/tabbar_compose_icon_add_highlighted@2x.png
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/BHBGroup.h:
--------------------------------------------------------------------------------
1 | //
2 | // BHBGroup.h
3 | // BHBPopViewDemo
4 | //
5 | // Created by bihongbo on 16/3/16.
6 | // Copyright © 2016年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import "BHBItem.h"
10 |
11 | @interface BHBGroup : BHBItem
12 |
13 | @property (nonatomic, strong) NSArray * items;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/BHBCustomBtn.h:
--------------------------------------------------------------------------------
1 | //
2 | // BHBCustomBtn.h
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/15.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #define ICONHEIGHT 71
12 | #define TITLEHEIGHT 30
13 |
14 | @interface BHBCustomBtn : UIButton
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/UIButton+BHBSetImage.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIButton+BHBSetImage.h
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/15.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface UIButton (BHBSetImage)
12 |
13 | - (void)bhb_setImage:(NSString *)imagePath;
14 | - (void)bhb_setBGImage:(NSString *)imagePath;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/14.
6 | // Copyright (c) 2015年 毕洪博. 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 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // DLTabBarControllerDemo
4 | //
5 | // Created by FT_David on 16/5/27.
6 | // Copyright © 2016年 FT_David. 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 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/UIButton+BHBSetImage.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIButton+BHBSetImage.h
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/15.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface UIButton (BHBSetImage)
12 |
13 | - (void)bhb_setImage:(NSString *)imagePath;
14 | - (void)bhb_setBGImage:(NSString *)imagePath;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/UIImageView+BHBSetImage.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIImageView+BHBSetImage.h
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/15.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface UIImageView (BHBSetImage)
12 |
13 | - (void)bhb_setImage:(UIImage *)image;
14 |
15 | - (void)bhb_setImageWithResourcePath:(NSString *)path AutoSize:(BOOL)isAuto;
16 |
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/BHBItem.h:
--------------------------------------------------------------------------------
1 | //
2 | // BHBItem.h
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/16.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface BHBItem : NSObject
12 |
13 | @property (nonatomic,copy) NSString * title;
14 | @property (nonatomic,copy) NSString * icon;
15 |
16 | -(instancetype)initWithTitle:(NSString *)title Icon:(NSString *)icon;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // DLTabBarControllerDemo
4 | //
5 | // Created by FT_David on 16/5/27.
6 | // Copyright © 2016年 FT_David. 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 |
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo.xcodeproj/project.xcworkspace/xcuserdata/bihongbo.xcuserdatad/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges
6 |
7 | SnapshotAutomaticallyBeforeSignificantChanges
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/UIImage+BHBEffects.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIImage+BHBEffects.h
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/15.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface UIImage (BHBEffects)
12 |
13 | - (UIImage *)bhb_applyBlurWithRadius:(CGFloat)blurRadius tintColor:(UIColor *)tintColor saturationDeltaFactor:(CGFloat)saturationDeltaFactor maskImage:(UIImage *)maskImage;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/UIImageView+BHBSetImage.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIImageView+BHBSetImage.h
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/15.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface UIImageView (BHBSetImage)
12 |
13 | - (void)bhb_setImage:(UIImage *)image;
14 |
15 | - (void)bhb_setImageWithResourcePath:(NSString *)path AutoSize:(BOOL)isAuto;
16 |
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/main_badge.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "main_badge@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 | }
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_home.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "tabbar_home@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 | }
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/BHBItem.h:
--------------------------------------------------------------------------------
1 | //
2 | // BHBItem.h
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/16.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface BHBItem : NSObject
12 |
13 | @property (nonatomic,copy) NSString * title;
14 | @property (nonatomic,copy) NSString * icon;
15 |
16 | -(instancetype)initWithTitle:(NSString *)title Icon:(NSString *)icon;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_discover.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "tabbar_discover@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 | }
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_profile.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "tabbar_profile@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 | }
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/Images.xcassets/backgroundImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "scale" : "2x",
10 | "filename" : "backgroundImage副本.png"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x",
15 | "filename" : "backgroundImage.png"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_background.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "tabbar_background@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 | }
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/UIImage+BHBEffects.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIImage+BHBEffects.h
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/15.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface UIImage (BHBEffects)
12 |
13 | - (UIImage *)bhb_applyBlurWithRadius:(CGFloat)blurRadius tintColor:(UIColor *)tintColor saturationDeltaFactor:(CGFloat)saturationDeltaFactor maskImage:(UIImage *)maskImage;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_home_selected.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "tabbar_home_selected@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 | }
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_compose_button.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "tabbar_compose_button@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 | }
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_compose_icon_add.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "tabbar_compose_icon_add@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 | }
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_message_center.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "tabbar_message_center@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 | }
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_profile_selected.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "tabbar_profile_selected@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 | }
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_discover_selected.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "tabbar_discover_selected@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 | }
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_message_center_selected.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "tabbar_message_center_selected@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 | }
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_compose_button_highlighted.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "tabbar_compose_button_highlighted@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 | }
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/TabBar/tabbar_compose_icon_add_highlighted.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "tabbar_compose_icon_add_highlighted@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 | }
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/BHBItem.m:
--------------------------------------------------------------------------------
1 | //
2 | // BHBItem.m
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/16.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import "BHBItem.h"
10 |
11 | @implementation BHBItem
12 |
13 | -(instancetype)initWithTitle:(NSString *)title Icon:(NSString *)icon{
14 | self = [super init];
15 | if (self) {
16 | self.title = title;
17 | self.icon = icon;
18 | }
19 | return self;
20 | }
21 |
22 | - (void)dealloc{
23 | NSLog(@"BHBItem");
24 | }
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/DLTabBar.h:
--------------------------------------------------------------------------------
1 | //
2 | // DLTabBar.h
3 | // DLTabBarControllerDemo
4 | //
5 | // Created by FT_David on 16/5/27.
6 | // Copyright © 2016年 FT_David. All rights reserved.
7 | //
8 |
9 | #import
10 | @class DLTabBar;
11 |
12 | @protocol DLTabBarDelegate
13 |
14 | /** 点击中间按钮的代理 */
15 | -(void)tabBarDidClickAtCenterButton:(DLTabBar *)tabBar;
16 |
17 | @end
18 |
19 |
20 | @interface DLTabBar : UITabBar
21 |
22 | @property(nonatomic,weak)id delegate;
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/UIView+BHBAnimation.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIView+BHBAnimation.h
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/15.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface UIView (BHBAnimation)
12 |
13 | //淡入
14 | - (void)fadeInWithTime:(NSTimeInterval)time;
15 | //淡出
16 | - (void)fadeOutWithTime:(NSTimeInterval)time;
17 | //缩放
18 | - (void)scalingWithTime:(NSTimeInterval)time andscal:(CGFloat)scal;
19 | //旋转
20 | - (void)RevolvingWithTime:(NSTimeInterval)time andDelta:(CGFloat)delta;
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/BHBItem.m:
--------------------------------------------------------------------------------
1 | //
2 | // BHBItem.m
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/16.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import "BHBItem.h"
10 |
11 | @implementation BHBItem
12 |
13 | -(instancetype)initWithTitle:(NSString *)title Icon:(NSString *)icon{
14 | self = [super init];
15 | if (self) {
16 | self.title = title;
17 | self.icon = icon;
18 | }
19 | return self;
20 | }
21 |
22 | - (void)dealloc{
23 | NSLog(@"BHBItem");
24 | }
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo.xcodeproj/xcuserdata/bihongbo.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
8 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/UIView+BHBAnimation.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIView+BHBAnimation.h
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/15.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface UIView (BHBAnimation)
12 |
13 | //淡入
14 | - (void)fadeInWithTime:(NSTimeInterval)time;
15 | //淡出
16 | - (void)fadeOutWithTime:(NSTimeInterval)time;
17 | //缩放
18 | - (void)scalingWithTime:(NSTimeInterval)time andscal:(CGFloat)scal;
19 | //旋转
20 | - (void)RevolvingWithTime:(NSTimeInterval)time andDelta:(CGFloat)delta;
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/BHBBottomBar.h:
--------------------------------------------------------------------------------
1 | //
2 | // BHBBottomBar.h
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/15.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #define BHBBOTTOMHEIGHT ((57.0 / 736.0) * [UIScreen mainScreen].bounds.size.height)
10 |
11 | #import
12 |
13 | typedef void (^BackClick)();
14 | typedef void (^CloseClick)();
15 |
16 | @interface BHBBottomBar : UIView
17 |
18 | @property (nonatomic,assign) BOOL isMoreBar;
19 |
20 | @property (nonatomic,copy) BackClick backClick;
21 |
22 | @property (nonatomic,copy) CloseClick closeClick;
23 |
24 | //恢复按钮位置
25 | - (void)btnResetPosition;
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/ViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.m
3 | // DLTabBarControllerDemo
4 | //
5 | // Created by FT_David on 16/5/27.
6 | // Copyright © 2016年 FT_David. All rights reserved.
7 | //
8 |
9 | #import "ViewController.h"
10 |
11 | @interface ViewController ()
12 |
13 | @end
14 |
15 | @implementation ViewController
16 |
17 | - (void)viewDidLoad {
18 | [super viewDidLoad];
19 | // Do any additional setup after loading the view, typically from a nib.
20 | }
21 |
22 | - (void)didReceiveMemoryWarning {
23 | [super didReceiveMemoryWarning];
24 | // Dispose of any resources that can be recreated.
25 | }
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/UIView+Extension.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIView+Extension.h
3 | // 黑马微博2期
4 | //
5 | // Created by apple on 14-10-7.
6 | // Copyright (c) 2014年 heima. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface UIView (Extension)
12 | @property (nonatomic, assign) CGFloat x;
13 | @property (nonatomic, assign) CGFloat y;
14 | @property (nonatomic, assign) CGFloat centerX;
15 | @property (nonatomic, assign) CGFloat centerY;
16 | @property (nonatomic, assign) CGFloat width;
17 | @property (nonatomic, assign) CGFloat height;
18 | @property (nonatomic, assign) CGSize size;
19 | @property (nonatomic, assign) CGPoint origin;
20 | @end
21 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/BHBBottomBar.h:
--------------------------------------------------------------------------------
1 | //
2 | // BHBBottomBar.h
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/15.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #define BHBBOTTOMHEIGHT ((57.0 / 736.0) * [UIScreen mainScreen].bounds.size.height)
10 |
11 | #import
12 |
13 | typedef void (^BackClick)();
14 | typedef void (^CloseClick)();
15 |
16 | @interface BHBBottomBar : UIView
17 |
18 | @property (nonatomic,assign) BOOL isMoreBar;
19 |
20 | @property (nonatomic,copy) BackClick backClick;
21 |
22 | @property (nonatomic,copy) CloseClick closeClick;
23 |
24 | //恢复按钮位置
25 | - (void)btnResetPosition;
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo.xcodeproj/xcuserdata/bihongbo.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | BHBPopViewDemo.xcscheme
8 |
9 | orderHint
10 | 0
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | F75502341B7E146C00DD6A40
16 |
17 | primary
18 |
19 |
20 | F755024D1B7E146C00DD6A40
21 |
22 | primary
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemoTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | com.bhb.$(PRODUCT_NAME:rfc1034identifier)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/BHBCustomBtn.m:
--------------------------------------------------------------------------------
1 | //
2 | // BHBCustomBtn.m
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/15.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import "BHBCustomBtn.h"
10 |
11 | @implementation BHBCustomBtn
12 |
13 |
14 | - (CGRect)imageRectForContentRect:(CGRect)contentRect{
15 | CGRect rect = CGRectMake(0, (contentRect.size.height - ICONHEIGHT - TITLEHEIGHT) / 2, contentRect.size.width, ICONHEIGHT);
16 | return rect;
17 | }
18 |
19 | - (CGRect)titleRectForContentRect:(CGRect)contentRect
20 | {
21 | CGRect rect = CGRectMake(0, (contentRect.size.height - ICONHEIGHT - TITLEHEIGHT) / 2 + ICONHEIGHT, contentRect.size.width, TITLEHEIGHT);
22 | return rect;
23 | }
24 |
25 | -(void)setHighlighted:(BOOL)highlighted
26 | {
27 |
28 | }
29 |
30 | - (void)dealloc{
31 | NSLog(@"BHBCustomBtn");
32 | }
33 |
34 | @end
35 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemoTests/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 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemoUITests/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 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/BHBCustomBtn.m:
--------------------------------------------------------------------------------
1 | //
2 | // BHBCustomBtn.m
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/15.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import "BHBCustomBtn.h"
10 |
11 | @implementation BHBCustomBtn
12 |
13 |
14 | - (CGRect)imageRectForContentRect:(CGRect)contentRect{
15 | CGRect rect = CGRectMake(0, (contentRect.size.height - ICONHEIGHT - TITLEHEIGHT) / 2, contentRect.size.width, ICONHEIGHT);
16 | return rect;
17 | }
18 |
19 | - (CGRect)titleRectForContentRect:(CGRect)contentRect
20 | {
21 | CGRect rect = CGRectMake(0, (contentRect.size.height - ICONHEIGHT - TITLEHEIGHT) / 2 + ICONHEIGHT, contentRect.size.width, TITLEHEIGHT);
22 | return rect;
23 | }
24 |
25 | -(void)setHighlighted:(BOOL)highlighted
26 | {
27 |
28 | }
29 |
30 | - (void)dealloc{
31 | NSLog(@"BHBCustomBtn");
32 | }
33 |
34 | @end
35 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo.xcodeproj/xcuserdata/ft_david.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | DLTabBarControllerDemo.xcscheme
8 |
9 | orderHint
10 | 0
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | AAB468F31CF83DE400B828ED
16 |
17 | primary
18 |
19 |
20 | AAB4690C1CF83DE400B828ED
21 |
22 | primary
23 |
24 |
25 | AAB469171CF83DE400B828ED
26 |
27 | primary
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemoTests/BHBPopViewDemoTests.m:
--------------------------------------------------------------------------------
1 | //
2 | // BHBPopViewDemoTests.m
3 | // BHBPopViewDemoTests
4 | //
5 | // Created by 毕洪博 on 15/8/14.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | @interface BHBPopViewDemoTests : XCTestCase
13 |
14 | @end
15 |
16 | @implementation BHBPopViewDemoTests
17 |
18 | - (void)setUp {
19 | [super setUp];
20 | // Put setup code here. This method is called before the invocation of each test method in the class.
21 | }
22 |
23 | - (void)tearDown {
24 | // Put teardown code here. This method is called after the invocation of each test method in the class.
25 | [super tearDown];
26 | }
27 |
28 | - (void)testExample {
29 | // This is an example of a functional test case.
30 | XCTAssert(YES, @"Pass");
31 | }
32 |
33 | - (void)testPerformanceExample {
34 | // This is an example of a performance test case.
35 | [self measureBlock:^{
36 | // Put the code you want to measure the time of here.
37 | }];
38 | }
39 |
40 | @end
41 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015 maker
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 |
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/BHBCenterView.h:
--------------------------------------------------------------------------------
1 | //
2 | // BHBCenterView.h
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/15.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import
10 | @class BHBGroup,BHBItem;
11 | @class BHBCenterView;
12 |
13 | @protocol BHBCenterViewDataSource
14 | @required
15 | - (NSInteger)numberOfItemsWithCenterView:(BHBCenterView *)centerView;
16 | - (BHBItem *)itemWithCenterView:(BHBCenterView *)centerView item:(NSInteger)item;
17 |
18 | @end
19 |
20 | @protocol BHBCenterViewDelegate
21 |
22 | @optional
23 | - (void)didSelectItemWithCenterView:(BHBCenterView *)centerView andItem:(BHBItem *)item;
24 | - (void)didSelectMoreWithCenterView:(BHBCenterView *)centerView andItem:(BHBGroup *)group;
25 | @end
26 |
27 | @interface BHBCenterView : UIScrollView
28 |
29 | @property (nonatomic,weak) id dataSource;
30 | @property (nonatomic,weak) id delegate;
31 |
32 | - (void)reloadData;
33 |
34 | - (void)scrollBack;
35 |
36 | - (void)dismis;
37 |
38 | @end
39 |
40 | #define KBHBRemoveAnimationComplete @"removeAnimation"
41 |
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/BHBPopView.h:
--------------------------------------------------------------------------------
1 | //
2 | // BHBPopView.h
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/14.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #ifndef BHB_INSTANCETYPE
10 | #if __has_feature(objc_instancetype)
11 | #define BHB_INSTANCETYPE instancetype
12 | #else
13 | #define BHB_INSTANCETYPE id
14 | #endif
15 | #endif
16 |
17 | #import
18 | #import "BHBGroup.h"
19 |
20 | typedef void (^DidSelectItemBlock) (BHBItem * item);
21 |
22 | @interface BHBPopView : UIView
23 |
24 | /**
25 | * 直接显示一个popView在某个view上
26 | *
27 | * @param view 父view
28 | * @param imageArray 图标数组
29 | * @param titles 标题数组
30 | * @param block 回调
31 | * @return pop视图
32 | */
33 | + (BHB_INSTANCETYPE)showToView:(UIView *)view andImages:(NSArray *)imageArray andTitles:(NSArray *)titles andSelectBlock:(DidSelectItemBlock)block;
34 | /**
35 | * 如果显示一个带more功能的,请使用此方法
36 | *
37 | * @param view 父view
38 | * @param array BHBItem类型的集合
39 | * @param block 回调
40 | * @return pop视图
41 | */
42 | + (BHB_INSTANCETYPE)showToView:(UIView *)view withItems:(NSArray *)array andSelectBlock:(DidSelectItemBlock)block;
43 |
44 | @end
45 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemoTests/DLTabBarControllerDemoTests.m:
--------------------------------------------------------------------------------
1 | //
2 | // DLTabBarControllerDemoTests.m
3 | // DLTabBarControllerDemoTests
4 | //
5 | // Created by FT_David on 16/5/27.
6 | // Copyright © 2016年 FT_David. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface DLTabBarControllerDemoTests : XCTestCase
12 |
13 | @end
14 |
15 | @implementation DLTabBarControllerDemoTests
16 |
17 | - (void)setUp {
18 | [super setUp];
19 | // Put setup code here. This method is called before the invocation of each test method in the class.
20 | }
21 |
22 | - (void)tearDown {
23 | // Put teardown code here. This method is called after the invocation of each test method in the class.
24 | [super tearDown];
25 | }
26 |
27 | - (void)testExample {
28 | // This is an example of a functional test case.
29 | // Use XCTAssert and related functions to verify your tests produce the correct results.
30 | }
31 |
32 | - (void)testPerformanceExample {
33 | // This is an example of a performance test case.
34 | [self measureBlock:^{
35 | // Put the code you want to measure the time of here.
36 | }];
37 | }
38 |
39 | @end
40 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/BHBCenterView.h:
--------------------------------------------------------------------------------
1 | //
2 | // BHBCenterView.h
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/15.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import
10 | @class BHBGroup,BHBItem;
11 | @class BHBCenterView;
12 |
13 | @protocol BHBCenterViewDataSource
14 | @required
15 | - (NSInteger)numberOfItemsWithCenterView:(BHBCenterView *)centerView;
16 | - (BHBItem *)itemWithCenterView:(BHBCenterView *)centerView item:(NSInteger)item;
17 |
18 | @end
19 |
20 | @protocol BHBCenterViewDelegate
21 |
22 | @optional
23 | - (void)didSelectItemWithCenterView:(BHBCenterView *)centerView andItem:(BHBItem *)item;
24 | - (void)didSelectMoreWithCenterView:(BHBCenterView *)centerView andItem:(BHBGroup *)group;
25 | @end
26 |
27 | @interface BHBCenterView : UIScrollView
28 |
29 | @property (nonatomic,weak) id dataSource;
30 | @property (nonatomic,weak) id delegate;
31 |
32 | - (void)reloadData;
33 |
34 | - (void)scrollBack;
35 |
36 | - (void)dismis;
37 |
38 | @end
39 |
40 | #define KBHBRemoveAnimationComplete @"removeAnimation"
41 |
--------------------------------------------------------------------------------
/BHBPopView.podspec:
--------------------------------------------------------------------------------
1 | #enables colorin the terminal bash shell export
2 | Pod::Spec.new do |s|
3 | s.name = "BHBPopView"
4 | s.version = "1.2.0"
5 | s.summary = "Like sina PopView."
6 | s.description = <<-DESC
7 | It is a marquee view used on iOS, which implement by Objective-C.
8 | DESC
9 | s.homepage = "https://github.com/bb-coder/BHBPopView"
10 | # s.screenshots = "http://7xkdhe.com1.z0.glb.clouddn.com/sinaAnimation1.gif"
11 | s.license = 'MIT'
12 | s.author = { "毕洪博" => "bbcoderios@gmail.com" }
13 | s.source = { :git => "https://github.com/bb-coder/BHBPopView.git", :tag => s.version.to_s }
14 | # s.social_media_url = 'bihongbo.com'
15 |
16 | s.platform = :ios, '7.0'
17 | s.ios.deployment_target = '7.0'
18 | s.osx.deployment_target = '10.7'
19 | s.requires_arc = true
20 |
21 | s.source_files = 'BHBPopViewDemo/BHBPopViewDemo/BHBPopView/*'
22 | # s.resources = 'Assets'
23 |
24 | # s.ios.exclude_files = 'Classes/osx'
25 | # s.osx.exclude_files = 'Classes/ios'
26 | # s.public_header_files = 'Classes/**/*.h'
27 | s.frameworks = 'CoreGraphics','UIKit','Foundation'
28 |
29 | end
30 |
31 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/BHBPopView.h:
--------------------------------------------------------------------------------
1 | //
2 | // BHBPopView.h
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/14.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #ifndef BHB_INSTANCETYPE
10 | #if __has_feature(objc_instancetype)
11 | #define BHB_INSTANCETYPE instancetype
12 | #else
13 | #define BHB_INSTANCETYPE id
14 | #endif
15 | #endif
16 |
17 | #import
18 | #import "BHBGroup.h"
19 |
20 | typedef void (^DidSelectItemBlock) (BHBItem * item);
21 |
22 | @interface BHBPopView : UIView
23 |
24 | /**
25 | * 直接显示一个popView在某个view上
26 | *
27 | * @param view 父view
28 | * @param imageArray 图标数组
29 | * @param titles 标题数组
30 | * @param block 回调
31 | * @return pop视图
32 | */
33 | + (BHB_INSTANCETYPE)showToView:(UIView *)view andImages:(NSArray *)imageArray andTitles:(NSArray *)titles andSelectBlock:(DidSelectItemBlock)block;
34 | /**
35 | * 如果显示一个带more功能的,请使用此方法
36 | *
37 | * @param view 父view
38 | * @param array BHBItem类型的集合
39 | * @param block 回调
40 | * @return pop视图
41 | */
42 | + (BHB_INSTANCETYPE)showToView:(UIView *)view withItems:(NSArray *)array andSelectBlock:(DidSelectItemBlock)block;
43 |
44 | @end
45 |
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/UIImageView+BHBSetImage.m:
--------------------------------------------------------------------------------
1 | //
2 | // UIImageView+BHBSetImage.m
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/15.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import "UIImageView+BHBSetImage.h"
10 |
11 | @implementation UIImageView (BHBSetImage)
12 |
13 | - (void)bhb_setImage:(UIImage *)image{
14 | self.image = image;
15 | self.frame = CGRectMake(0, 0, image.size.width, image.size.height);
16 | }
17 |
18 | - (void)bhb_setImageWithResourcePath:(NSString *)path AutoSize:(BOOL)isAuto{
19 | NSString * filePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:path];
20 | if([[UIDevice currentDevice].systemVersion doubleValue] < 8.0){
21 | filePath = [filePath stringByAppendingString:@"@2x"];
22 | }
23 | UIImage * image = [UIImage imageWithContentsOfFile:filePath];
24 | image = [image resizableImageWithCapInsets:UIEdgeInsetsMake(image.size.height / 2 - 1, image.size.width / 2 - 1, image.size.height / 2 - 1, image.size.width / 2 - 1) resizingMode:UIImageResizingModeStretch];
25 | if (isAuto) {
26 | [self bhb_setImage:image];
27 | }else{
28 | [self setImage:image];
29 | }
30 | }
31 |
32 | @end
33 |
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/UIView+BHBAnimation.m:
--------------------------------------------------------------------------------
1 | //
2 | // UIView+BHBAnimation.m
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/15.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import "UIView+BHBAnimation.h"
10 |
11 | @implementation UIView (BHBAnimation)
12 |
13 | //淡入
14 | - (void)fadeInWithTime:(NSTimeInterval)time{
15 | self.alpha = 0;
16 | [UIView animateWithDuration:time animations:^{
17 | self.alpha = 1;
18 | } completion:^(BOOL finished) {
19 |
20 | }];
21 | }
22 | //淡出
23 | - (void)fadeOutWithTime:(NSTimeInterval)time{
24 | self.alpha = 1;
25 | [UIView animateWithDuration:time animations:^{
26 | self.alpha = 0;
27 | } completion:^(BOOL finished) {
28 | [self removeFromSuperview];
29 | }];
30 | }
31 | //缩放
32 | - (void)scalingWithTime:(NSTimeInterval)time andscal:(CGFloat)scal{
33 |
34 | [UIView animateWithDuration:time animations:^{
35 | self.transform = CGAffineTransformMakeScale(scal,scal);
36 | }];
37 | }
38 | //旋转
39 | - (void)RevolvingWithTime:(NSTimeInterval)time andDelta:(CGFloat)delta{
40 | [UIView animateWithDuration:time animations:^{
41 | self.transform = CGAffineTransformMakeRotation(delta);
42 | }];
43 | }
44 |
45 | @end
46 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/UIImageView+BHBSetImage.m:
--------------------------------------------------------------------------------
1 | //
2 | // UIImageView+BHBSetImage.m
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/15.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import "UIImageView+BHBSetImage.h"
10 |
11 | @implementation UIImageView (BHBSetImage)
12 |
13 | - (void)bhb_setImage:(UIImage *)image{
14 | self.image = image;
15 | self.frame = CGRectMake(0, 0, image.size.width, image.size.height);
16 | }
17 |
18 | - (void)bhb_setImageWithResourcePath:(NSString *)path AutoSize:(BOOL)isAuto{
19 | NSString * filePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:path];
20 | if([[UIDevice currentDevice].systemVersion doubleValue] < 8.0){
21 | filePath = [filePath stringByAppendingString:@"@2x"];
22 | }
23 | UIImage * image = [UIImage imageWithContentsOfFile:filePath];
24 | image = [image resizableImageWithCapInsets:UIEdgeInsetsMake(image.size.height / 2 - 1, image.size.width / 2 - 1, image.size.height / 2 - 1, image.size.width / 2 - 1) resizingMode:UIImageResizingModeStretch];
25 | if (isAuto) {
26 | [self bhb_setImage:image];
27 | }else{
28 | [self setImage:image];
29 | }
30 | }
31 |
32 | @end
33 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/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 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/UIView+BHBAnimation.m:
--------------------------------------------------------------------------------
1 | //
2 | // UIView+BHBAnimation.m
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/15.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import "UIView+BHBAnimation.h"
10 |
11 | @implementation UIView (BHBAnimation)
12 |
13 | //淡入
14 | - (void)fadeInWithTime:(NSTimeInterval)time{
15 | self.alpha = 0;
16 | [UIView animateWithDuration:time animations:^{
17 | self.alpha = 1;
18 | } completion:^(BOOL finished) {
19 |
20 | }];
21 | }
22 | //淡出
23 | - (void)fadeOutWithTime:(NSTimeInterval)time{
24 | self.alpha = 1;
25 | [UIView animateWithDuration:time animations:^{
26 | self.alpha = 0;
27 | } completion:^(BOOL finished) {
28 | [self removeFromSuperview];
29 | }];
30 | }
31 | //缩放
32 | - (void)scalingWithTime:(NSTimeInterval)time andscal:(CGFloat)scal{
33 |
34 | [UIView animateWithDuration:time animations:^{
35 | self.transform = CGAffineTransformMakeScale(scal,scal);
36 | }];
37 | }
38 | //旋转
39 | - (void)RevolvingWithTime:(NSTimeInterval)time andDelta:(CGFloat)delta{
40 | [UIView animateWithDuration:time animations:^{
41 | self.transform = CGAffineTransformMakeRotation(delta);
42 | }];
43 | }
44 |
45 | @end
46 |
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | com.bhb.$(PRODUCT_NAME:rfc1034identifier)
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 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/UIButton+BHBSetImage.m:
--------------------------------------------------------------------------------
1 | //
2 | // UIButton+BHBSetImage.m
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/15.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import "UIButton+BHBSetImage.h"
10 |
11 | @implementation UIButton (BHBSetImage)
12 |
13 | - (void)bhb_setImage:(NSString *)imagePath{
14 | NSString * filePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:imagePath];
15 | if([[UIDevice currentDevice].systemVersion doubleValue] < 8.0){
16 | filePath = [filePath stringByAppendingString:@"@2x"];
17 | }
18 | UIImage * image = [UIImage imageWithContentsOfFile:filePath];
19 | [self setImage:image forState:UIControlStateNormal];
20 | }
21 |
22 | - (void)bhb_setBGImage:(NSString *)imagePath{
23 | NSString * filePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:imagePath];
24 | if([[UIDevice currentDevice].systemVersion doubleValue] < 8.0){
25 | filePath = [filePath stringByAppendingString:@"@2x"];
26 | }
27 | UIImage * image = [UIImage imageWithContentsOfFile:filePath];
28 | image = [image resizableImageWithCapInsets:UIEdgeInsetsMake(image.size.height / 2 - 1, image.size.width / 2 - 1, image.size.height / 2 - 1, image.size.width / 2 - 1) resizingMode:UIImageResizingModeStretch];
29 | [self setBackgroundImage:image forState:UIControlStateNormal];
30 | }
31 |
32 | @end
33 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/UIButton+BHBSetImage.m:
--------------------------------------------------------------------------------
1 | //
2 | // UIButton+BHBSetImage.m
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/15.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import "UIButton+BHBSetImage.h"
10 |
11 | @implementation UIButton (BHBSetImage)
12 |
13 | - (void)bhb_setImage:(NSString *)imagePath{
14 | NSString * filePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:imagePath];
15 | if([[UIDevice currentDevice].systemVersion doubleValue] < 8.0){
16 | filePath = [filePath stringByAppendingString:@"@2x"];
17 | }
18 | UIImage * image = [UIImage imageWithContentsOfFile:filePath];
19 | [self setImage:image forState:UIControlStateNormal];
20 | }
21 |
22 | - (void)bhb_setBGImage:(NSString *)imagePath{
23 | NSString * filePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:imagePath];
24 | if([[UIDevice currentDevice].systemVersion doubleValue] < 8.0){
25 | filePath = [filePath stringByAppendingString:@"@2x"];
26 | }
27 | UIImage * image = [UIImage imageWithContentsOfFile:filePath];
28 | image = [image resizableImageWithCapInsets:UIEdgeInsetsMake(image.size.height / 2 - 1, image.size.width / 2 - 1, image.size.height / 2 - 1, image.size.width / 2 - 1) resizingMode:UIImageResizingModeStretch];
29 | [self setBackgroundImage:image forState:UIControlStateNormal];
30 | }
31 |
32 | @end
33 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemoUITests/DLTabBarControllerDemoUITests.m:
--------------------------------------------------------------------------------
1 | //
2 | // DLTabBarControllerDemoUITests.m
3 | // DLTabBarControllerDemoUITests
4 | //
5 | // Created by FT_David on 16/5/27.
6 | // Copyright © 2016年 FT_David. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface DLTabBarControllerDemoUITests : XCTestCase
12 |
13 | @end
14 |
15 | @implementation DLTabBarControllerDemoUITests
16 |
17 | - (void)setUp {
18 | [super setUp];
19 |
20 | // Put setup code here. This method is called before the invocation of each test method in the class.
21 |
22 | // In UI tests it is usually best to stop immediately when a failure occurs.
23 | self.continueAfterFailure = NO;
24 | // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method.
25 | [[[XCUIApplication alloc] init] launch];
26 |
27 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
28 | }
29 |
30 | - (void)tearDown {
31 | // Put teardown code here. This method is called after the invocation of each test method in the class.
32 | [super tearDown];
33 | }
34 |
35 | - (void)testExample {
36 | // Use recording to get started writing UI tests.
37 | // Use XCTAssert and related functions to verify your tests produce the correct results.
38 | }
39 |
40 | @end
41 |
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/BHBPlaySoundTool.h:
--------------------------------------------------------------------------------
1 | //
2 | // BHBPlaySoundTool.h
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/15.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "BHBSingleton.h"
11 | #import
12 |
13 | @interface BHBSoundId : NSObject
14 | {
15 | SystemSoundID _soundID;
16 | }
17 |
18 | /**
19 | * @brief 为播放震动效果初始化
20 | *
21 | * @return self
22 | */
23 | -(id)initForPlayingVibrate;
24 |
25 | /**
26 | * @brief 为播放系统音效初始化(无需提供音频文件)
27 | *
28 | * @param resourceName 系统音效名称
29 | * @param type 系统音效类型
30 | *
31 | * @return self
32 | */
33 | -(id)initForPlayingSystemSoundEffectWith:(NSString *)resourceName ofType:(NSString *)type;
34 |
35 | /**
36 | * @brief 为播放特定的音频文件初始化(需提供音频文件)
37 | *
38 | * @param filename 音频文件名(加在工程中)
39 | *
40 | * @return self
41 | */
42 | -(id)initForPlayingSoundEffectWith:(NSString *)filename;
43 |
44 | /**
45 | * @brief 播放音效
46 | */
47 | -(void)play;
48 |
49 | @end
50 |
51 | @interface BHBPlaySoundTool : NSObject
52 |
53 | BHBSingletonH(PlaySoundTool)
54 |
55 | /**
56 | * 添加一个音效
57 | *
58 | * @param soundID 音效对象
59 | * @param name 音效名字
60 | */
61 | - (void)addSoundId:(BHBSoundId *)soundID WithName:(NSString *)name;
62 |
63 | /**
64 | * 播放音效
65 | *
66 | * @param name 音效名字
67 | *
68 | * @return 播放是否成功
69 | */
70 | - (BOOL)playWithSoundName:(NSString *)name;
71 |
72 | /**
73 | * 初始化所有默认音效
74 | */
75 | - (void)registerAllSoundId;
76 |
77 | @end
78 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/BHBPlaySoundTool.h:
--------------------------------------------------------------------------------
1 | //
2 | // BHBPlaySoundTool.h
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/15.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "BHBSingleton.h"
11 | #import
12 |
13 | @interface BHBSoundId : NSObject
14 | {
15 | SystemSoundID _soundID;
16 | }
17 |
18 | /**
19 | * @brief 为播放震动效果初始化
20 | *
21 | * @return self
22 | */
23 | -(id)initForPlayingVibrate;
24 |
25 | /**
26 | * @brief 为播放系统音效初始化(无需提供音频文件)
27 | *
28 | * @param resourceName 系统音效名称
29 | * @param type 系统音效类型
30 | *
31 | * @return self
32 | */
33 | -(id)initForPlayingSystemSoundEffectWith:(NSString *)resourceName ofType:(NSString *)type;
34 |
35 | /**
36 | * @brief 为播放特定的音频文件初始化(需提供音频文件)
37 | *
38 | * @param filename 音频文件名(加在工程中)
39 | *
40 | * @return self
41 | */
42 | -(id)initForPlayingSoundEffectWith:(NSString *)filename;
43 |
44 | /**
45 | * @brief 播放音效
46 | */
47 | -(void)play;
48 |
49 | @end
50 |
51 | @interface BHBPlaySoundTool : NSObject
52 |
53 | BHBSingletonH(PlaySoundTool)
54 |
55 | /**
56 | * 添加一个音效
57 | *
58 | * @param soundID 音效对象
59 | * @param name 音效名字
60 | */
61 | - (void)addSoundId:(BHBSoundId *)soundID WithName:(NSString *)name;
62 |
63 | /**
64 | * 播放音效
65 | *
66 | * @param name 音效名字
67 | *
68 | * @return 播放是否成功
69 | */
70 | - (BOOL)playWithSoundName:(NSString *)name;
71 |
72 | /**
73 | * 初始化所有默认音效
74 | */
75 | - (void)registerAllSoundId;
76 |
77 | @end
78 |
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
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 |
26 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
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 |
26 |
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo.xcodeproj/project.xcworkspace/xcshareddata/BHBPopViewDemo.xccheckout:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDESourceControlProjectFavoriteDictionaryKey
6 |
7 | IDESourceControlProjectIdentifier
8 | A52955D1-2901-452C-88CC-470AD957EAA9
9 | IDESourceControlProjectName
10 | BHBPopViewDemo
11 | IDESourceControlProjectOriginsDictionary
12 |
13 | 47BB9F9CB5B154A61EB7B6C1923B7E1049138B37
14 | https://github.com/bb-coder/BHBPopView.git
15 |
16 | IDESourceControlProjectPath
17 | BHBPopViewDemo/BHBPopViewDemo.xcodeproj
18 | IDESourceControlProjectRelativeInstallPathDictionary
19 |
20 | 47BB9F9CB5B154A61EB7B6C1923B7E1049138B37
21 | ../../..
22 |
23 | IDESourceControlProjectURL
24 | https://github.com/bb-coder/BHBPopView.git
25 | IDESourceControlProjectVersion
26 | 111
27 | IDESourceControlProjectWCCIdentifier
28 | 47BB9F9CB5B154A61EB7B6C1923B7E1049138B37
29 | IDESourceControlProjectWCConfigurations
30 |
31 |
32 | IDESourceControlRepositoryExtensionIdentifierKey
33 | public.vcs.git
34 | IDESourceControlWCCIdentifierKey
35 | 47BB9F9CB5B154A61EB7B6C1923B7E1049138B37
36 | IDESourceControlWCCName
37 | BHBPopView
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
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 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/AppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.m
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/14.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import "AppDelegate.h"
10 |
11 | @interface AppDelegate ()
12 |
13 | @end
14 |
15 | @implementation AppDelegate
16 |
17 |
18 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
19 | // Override point for customization after application launch.
20 | return YES;
21 | }
22 |
23 | - (void)applicationWillResignActive:(UIApplication *)application {
24 | // 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.
25 | // 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.
26 | }
27 |
28 | - (void)applicationDidEnterBackground:(UIApplication *)application {
29 | // 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.
30 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
31 | }
32 |
33 | - (void)applicationWillEnterForeground:(UIApplication *)application {
34 | // 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.
35 | }
36 |
37 | - (void)applicationDidBecomeActive:(UIApplication *)application {
38 | // 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.
39 | }
40 |
41 | - (void)applicationWillTerminate:(UIApplication *)application {
42 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
43 | }
44 |
45 | @end
46 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/UIView+Extension.m:
--------------------------------------------------------------------------------
1 | //
2 | // UIView+Extension.m
3 | // 黑马微博2期
4 | //
5 | // Created by apple on 14-10-7.
6 | // Copyright (c) 2014年 heima. All rights reserved.
7 | //
8 |
9 | #import "UIView+Extension.h"
10 |
11 | @implementation UIView (Extension)
12 |
13 | - (void)setX:(CGFloat)x
14 | {
15 | CGRect frame = self.frame;
16 | frame.origin.x = x;
17 | self.frame = frame;
18 | }
19 |
20 | - (void)setY:(CGFloat)y
21 | {
22 | CGRect frame = self.frame;
23 | frame.origin.y = y;
24 | self.frame = frame;
25 | }
26 |
27 | - (CGFloat)x
28 | {
29 | return self.frame.origin.x;
30 | }
31 |
32 | - (CGFloat)y
33 | {
34 | return self.frame.origin.y;
35 | }
36 |
37 | - (void)setCenterX:(CGFloat)centerX
38 | {
39 | CGPoint center = self.center;
40 | center.x = centerX;
41 | self.center = center;
42 | }
43 |
44 | - (CGFloat)centerX
45 | {
46 | return self.center.x;
47 | }
48 |
49 | - (void)setCenterY:(CGFloat)centerY
50 | {
51 | CGPoint center = self.center;
52 | center.y = centerY;
53 | self.center = center;
54 | }
55 |
56 | - (CGFloat)centerY
57 | {
58 | return self.center.y;
59 | }
60 |
61 | - (void)setWidth:(CGFloat)width
62 | {
63 | CGRect frame = self.frame;
64 | frame.size.width = width;
65 | self.frame = frame;
66 | }
67 |
68 | - (void)setHeight:(CGFloat)height
69 | {
70 | CGRect frame = self.frame;
71 | frame.size.height = height;
72 | self.frame = frame;
73 | }
74 |
75 | - (CGFloat)height
76 | {
77 | return self.frame.size.height;
78 | }
79 |
80 | - (CGFloat)width
81 | {
82 | return self.frame.size.width;
83 | }
84 |
85 | - (void)setSize:(CGSize)size
86 | {
87 | CGRect frame = self.frame;
88 | frame.size = size;
89 | self.frame = frame;
90 | }
91 |
92 | - (CGSize)size
93 | {
94 | return self.frame.size;
95 | }
96 |
97 | - (void)setOrigin:(CGPoint)origin
98 | {
99 | CGRect frame = self.frame;
100 | frame.origin = origin;
101 | self.frame = frame;
102 | }
103 |
104 | - (CGPoint)origin
105 | {
106 | return self.frame.origin;
107 | }
108 | @end
109 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/AppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.m
3 | // DLTabBarControllerDemo
4 | //
5 | // Created by FT_David on 16/5/27.
6 | // Copyright © 2016年 FT_David. All rights reserved.
7 | //
8 |
9 | #import "AppDelegate.h"
10 | #import "DLTabBarController.h"
11 | @interface AppDelegate ()
12 |
13 | @end
14 |
15 | @implementation AppDelegate
16 |
17 |
18 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
19 | self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
20 | self.window.backgroundColor = [UIColor whiteColor];
21 | self.window.rootViewController = [[DLTabBarController alloc] init];
22 | [self.window makeKeyAndVisible];
23 | return YES;
24 | }
25 |
26 | - (void)applicationWillResignActive:(UIApplication *)application {
27 | // 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.
28 | // 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.
29 | }
30 |
31 | - (void)applicationDidEnterBackground:(UIApplication *)application {
32 | // 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.
33 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
34 | }
35 |
36 | - (void)applicationWillEnterForeground:(UIApplication *)application {
37 | // 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.
38 | }
39 |
40 | - (void)applicationDidBecomeActive:(UIApplication *)application {
41 | // 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.
42 | }
43 |
44 | - (void)applicationWillTerminate:(UIApplication *)application {
45 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
46 | }
47 |
48 | @end
49 |
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/BHBSingleton.h:
--------------------------------------------------------------------------------
1 | //
2 | // BHBSingleton.h
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/15.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #ifndef BHBPopViewDemo_BHBSingleton_h
10 | #define BHBPopViewDemo_BHBSingleton_h
11 |
12 | #define BHBSingletonH(methodName) + (instancetype)shared##methodName;
13 | #if __has_feature(objc_arc) // 是ARC
14 | #define BHBSingletonM(methodName) \
15 | static id instace = nil; \
16 | + (id)allocWithZone:(struct _NSZone *)zone \
17 | { \
18 | if (instace == nil) { \
19 | static dispatch_once_t onceToken; \
20 | dispatch_once(&onceToken, ^{ \
21 | instace = [super allocWithZone:zone]; \
22 | }); \
23 | } \
24 | return instace; \
25 | } \
26 | \
27 | - (id)init \
28 | { \
29 | static dispatch_once_t onceToken; \
30 | dispatch_once(&onceToken, ^{ \
31 | instace = [super init]; \
32 | }); \
33 | return instace; \
34 | } \
35 | \
36 | + (instancetype)shared##methodName \
37 | { \
38 | return [[self alloc] init]; \
39 | } \
40 | - (id)copyWithZone:(struct _NSZone *)zone \
41 | { \
42 | return instace; \
43 | } \
44 | \
45 | - (id)mutableCopyWithZone:(struct _NSZone *)zone{\
46 | return instace;\
47 | }
48 | #else // 不是ARC
49 | #define BHBSingletonM(methodName) \
50 | static id instace = nil; \
51 | + (id)allocWithZone:(struct _NSZone *)zone \
52 | { \
53 | if (instace == nil) { \
54 | static dispatch_once_t onceToken; \
55 | dispatch_once(&onceToken, ^{ \
56 | instace = [super allocWithZone:zone]; \
57 | }); \
58 | } \
59 | return instace; \
60 | } \
61 | \
62 | - (id)init \
63 | { \
64 | static dispatch_once_t onceToken; \
65 | dispatch_once(&onceToken, ^{ \
66 | instace = [super init]; \
67 | }); \
68 | return instace; \
69 | } \
70 | \
71 | + (instancetype)shared##methodName \
72 | { \
73 | return [[self alloc] init]; \
74 | } \
75 | \
76 | + (oneway void)release \
77 | { \
78 | \
79 | } \
80 | \
81 | - (id)retain \
82 | { \
83 | return self; \
84 | } \
85 | \
86 | - (NSUInteger)retainCount \
87 | { \
88 | return 1; \
89 | } \
90 | - (id)copyWithZone:(struct _NSZone *)zone \
91 | { \
92 | return instace; \
93 | } \
94 | - (id)mutableCopyWithZone:(struct _NSZone *)zone \
95 | { \
96 | return instace; \
97 | }
98 | #endif
99 |
100 |
101 | #endif
102 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/DLTabBar.m:
--------------------------------------------------------------------------------
1 | //
2 | // DLTabBar.m
3 | // DLTabBarControllerDemo
4 | //
5 | // Created by FT_David on 16/5/27.
6 | // Copyright © 2016年 FT_David. All rights reserved.
7 | //
8 |
9 | #import "DLTabBar.h"
10 | #import "UIView+Extension.h"
11 | @interface DLTabBar()
12 |
13 | @property (nonatomic, weak) UIButton *centerButton;
14 |
15 | @end
16 |
17 | @implementation DLTabBar
18 |
19 | @dynamic delegate;
20 |
21 |
22 | -(instancetype)initWithFrame:(CGRect)frame
23 | {
24 | self = [super initWithFrame:frame];
25 | if (self) {
26 | UIButton *centerButton = [[UIButton alloc] init];
27 | [centerButton setBackgroundImage:[UIImage imageNamed:@"tabbar_compose_button"] forState:UIControlStateNormal];
28 | [centerButton setBackgroundImage:[UIImage imageNamed:@"tabbar_compose_button_highlighted"] forState:UIControlStateHighlighted];
29 | [centerButton setImage:[UIImage imageNamed:@"tabbar_compose_icon_add"] forState:UIControlStateNormal];
30 | [centerButton setImage:[UIImage imageNamed:@"tabbar_compose_icon_add_highlighted"] forState:UIControlStateHighlighted];
31 | centerButton.size = centerButton.currentBackgroundImage.size;
32 | [centerButton addTarget:self action:@selector(centerButtonAction) forControlEvents:UIControlEventTouchUpInside];
33 | [self addSubview:centerButton];
34 | self.centerButton = centerButton;
35 | }
36 | return self;
37 | }
38 |
39 |
40 | - (void)centerButtonAction
41 | {
42 |
43 | if (self.delegate && [self.delegate respondsToSelector:@selector(tabBarDidClickAtCenterButton:)]) {
44 | [self.delegate tabBarDidClickAtCenterButton:self];
45 | }
46 | }
47 |
48 | - (void)layoutSubviews
49 | {
50 |
51 | [super layoutSubviews];
52 |
53 |
54 | self.centerButton.centerX = self.width * 0.5;
55 | self.centerButton.centerY = self.height * 0.5;
56 |
57 | CGFloat tabbarButtonW = self.width / 5;
58 | CGFloat tabbarButtonIndex = 0;
59 | for (UIView *child in self.subviews) {
60 | Class class = NSClassFromString(@"UITabBarButton");
61 | if ([child isKindOfClass:class]) {
62 |
63 | child.width = tabbarButtonW;
64 |
65 | child.x = tabbarButtonIndex * tabbarButtonW;
66 |
67 | tabbarButtonIndex++;
68 | if (tabbarButtonIndex == 2) {
69 | tabbarButtonIndex++;
70 | }
71 | }
72 | }
73 | }
74 |
75 |
76 | @end
77 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/BHBSingleton.h:
--------------------------------------------------------------------------------
1 | //
2 | // BHBSingleton.h
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/15.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #ifndef BHBPopViewDemo_BHBSingleton_h
10 | #define BHBPopViewDemo_BHBSingleton_h
11 |
12 | #define BHBSingletonH(methodName) + (instancetype)shared##methodName;
13 | #if __has_feature(objc_arc) // 是ARC
14 | #define BHBSingletonM(methodName) \
15 | static id instace = nil; \
16 | + (id)allocWithZone:(struct _NSZone *)zone \
17 | { \
18 | if (instace == nil) { \
19 | static dispatch_once_t onceToken; \
20 | dispatch_once(&onceToken, ^{ \
21 | instace = [super allocWithZone:zone]; \
22 | }); \
23 | } \
24 | return instace; \
25 | } \
26 | \
27 | - (id)init \
28 | { \
29 | static dispatch_once_t onceToken; \
30 | dispatch_once(&onceToken, ^{ \
31 | instace = [super init]; \
32 | }); \
33 | return instace; \
34 | } \
35 | \
36 | + (instancetype)shared##methodName \
37 | { \
38 | return [[self alloc] init]; \
39 | } \
40 | - (id)copyWithZone:(struct _NSZone *)zone \
41 | { \
42 | return instace; \
43 | } \
44 | \
45 | - (id)mutableCopyWithZone:(struct _NSZone *)zone{\
46 | return instace;\
47 | }
48 | #else // 不是ARC
49 | #define BHBSingletonM(methodName) \
50 | static id instace = nil; \
51 | + (id)allocWithZone:(struct _NSZone *)zone \
52 | { \
53 | if (instace == nil) { \
54 | static dispatch_once_t onceToken; \
55 | dispatch_once(&onceToken, ^{ \
56 | instace = [super allocWithZone:zone]; \
57 | }); \
58 | } \
59 | return instace; \
60 | } \
61 | \
62 | - (id)init \
63 | { \
64 | static dispatch_once_t onceToken; \
65 | dispatch_once(&onceToken, ^{ \
66 | instace = [super init]; \
67 | }); \
68 | return instace; \
69 | } \
70 | \
71 | + (instancetype)shared##methodName \
72 | { \
73 | return [[self alloc] init]; \
74 | } \
75 | \
76 | + (oneway void)release \
77 | { \
78 | \
79 | } \
80 | \
81 | - (id)retain \
82 | { \
83 | return self; \
84 | } \
85 | \
86 | - (NSUInteger)retainCount \
87 | { \
88 | return 1; \
89 | } \
90 | - (id)copyWithZone:(struct _NSZone *)zone \
91 | { \
92 | return instace; \
93 | } \
94 | - (id)mutableCopyWithZone:(struct _NSZone *)zone \
95 | { \
96 | return instace; \
97 | }
98 | #endif
99 |
100 |
101 | #endif
102 |
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/ViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.m
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/14.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import "ViewController.h"
10 | #import "BHBPopView.h"
11 |
12 | @interface ViewController ()
13 |
14 | @end
15 |
16 | @implementation ViewController
17 |
18 | - (void)viewDidLoad {
19 | [super viewDidLoad];
20 | //添加背景图
21 | [self addBackImage];
22 | }
23 |
24 | /**
25 | * 添加背景图
26 | */
27 | - (void)addBackImage{
28 | UIImageView * backImageView = [[UIImageView alloc]initWithFrame:self.view.bounds];
29 | backImageView.image = [UIImage imageNamed:@"backgroundImage"];
30 | [self.view addSubview:backImageView];
31 | }
32 |
33 | - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
34 |
35 | BHBItem * item0 = [[BHBItem alloc]initWithTitle:@"Text" Icon:@"images.bundle/tabbar_compose_idea"];
36 | BHBItem * item1 = [[BHBItem alloc]initWithTitle:@"Albums" Icon:@"images.bundle/tabbar_compose_photo"];
37 | BHBItem * item2 = [[BHBItem alloc]initWithTitle:@"Camera" Icon:@"images.bundle/tabbar_compose_camera"];
38 | //第4个按钮内部有一组
39 | BHBGroup * item3 = [[BHBGroup alloc]initWithTitle:@"Check in" Icon:@"images.bundle/tabbar_compose_lbs"];
40 | BHBItem * item31 = [[BHBItem alloc]initWithTitle:@"Friend Circle" Icon:@"images.bundle/tabbar_compose_friend"];
41 | BHBItem * item32 = [[BHBItem alloc]initWithTitle:@"Weibo Camera" Icon:@"images.bundle/tabbar_compose_wbcamera"];
42 | BHBItem * item33 = [[BHBItem alloc]initWithTitle:@"Music" Icon:@"images.bundle/tabbar_compose_music"];
43 | item3.items = @[item31,item32,item33];
44 |
45 | BHBItem * item4 = [[BHBItem alloc]initWithTitle:@"Review" Icon:@"images.bundle/tabbar_compose_review"];
46 |
47 | //第六个按钮内部有一组
48 | BHBGroup * item5 = [[BHBGroup alloc]initWithTitle:@"More" Icon:@"images.bundle/tabbar_compose_more"];
49 | BHBItem * item51 = [[BHBItem alloc]initWithTitle:@"Friend Circle" Icon:@"images.bundle/tabbar_compose_friend"];
50 | BHBItem * item52 = [[BHBItem alloc]initWithTitle:@"Weibo Camera" Icon:@"images.bundle/tabbar_compose_wbcamera"];
51 | BHBItem * item53 = [[BHBItem alloc]initWithTitle:@"Music" Icon:@"images.bundle/tabbar_compose_music"];
52 | BHBItem * item54 = [[BHBItem alloc]initWithTitle:@"Blog" Icon:@"images.bundle/tabbar_compose_weibo"];
53 | BHBItem * item55 = [[BHBItem alloc]initWithTitle:@"Collection" Icon:@"images.bundle/tabbar_compose_transfer"];
54 | BHBItem * item56 = [[BHBItem alloc]initWithTitle:@"Voice" Icon:@"images.bundle/tabbar_compose_voice"];
55 | item5.items = @[item51,item52,item53,item54,item55,item56];
56 |
57 |
58 | //添加popview
59 | [BHBPopView showToView:self.view.window withItems:@[item0,item1,item2,item3,item4,item5]andSelectBlock:^(BHBItem *item) {
60 | if ([item isKindOfClass:[BHBGroup class]]) {
61 | NSLog(@"选中%@分组",item.title);
62 | }else{
63 | NSLog(@"选中%@项",item.title);
64 | }
65 | }];
66 |
67 | //添加popview
68 | // [BHBPopView showToView:self.view andImages:@[@"images.bundle/tabbar_compose_idea",@"images.bundle/tabbar_compose_photo",@"images.bundle/tabbar_compose_camera",@"images.bundle/tabbar_compose_lbs",@"images.bundle/tabbar_compose_review",@"images.bundle/tabbar_compose_more"] andTitles:@[@"Text",@"Albums",@"Camera",@"Check in",@"Review",@"More"] andSelectBlock:^(BHBItem *item) {
69 | //
70 | // }];
71 | }
72 |
73 | @end
74 |
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/BHBPlaySoundTool.m:
--------------------------------------------------------------------------------
1 | //
2 | // BHBPlaySoundTool.m
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/15.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import "BHBPlaySoundTool.h"
10 |
11 | @implementation BHBSoundId
12 |
13 | - (id)initForPlayingVibrate
14 | {
15 | self = [super init];
16 | if (self) {
17 | _soundID = kSystemSoundID_Vibrate;
18 | }
19 | return self;
20 | }
21 |
22 | -(id)initForPlayingSystemSoundEffectWith:(NSString *)resourceName ofType:(NSString *)type
23 | {
24 | self = [super init];
25 | if (self) {
26 | NSString *path = [[NSBundle bundleWithIdentifier:@"com.apple.UIKit"] pathForResource:resourceName ofType:type];
27 | if (path) {
28 | SystemSoundID theSoundID;
29 | OSStatus error = AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:path], &theSoundID);
30 | if (error == kAudioServicesNoError) {
31 | _soundID = theSoundID;
32 | }else {
33 | NSLog(@"Failed to create sound ");
34 | }
35 | }
36 |
37 | }
38 | return self;
39 | }
40 |
41 | -(id)initForPlayingSoundEffectWith:(NSString *)filename
42 | {
43 | self = [super init];
44 | if (self) {
45 | NSURL *fileURL = [[NSBundle mainBundle] URLForResource:filename withExtension:nil];
46 | if (fileURL != nil)
47 | {
48 | SystemSoundID theSoundID;
49 | OSStatus error = AudioServicesCreateSystemSoundID((__bridge CFURLRef)fileURL, &theSoundID);
50 | if (error == kAudioServicesNoError){
51 | _soundID = theSoundID;
52 | }else {
53 | NSLog(@"Failed to create sound ");
54 | }
55 | }
56 | }
57 | return self;
58 | }
59 |
60 | -(void)play
61 | {
62 | AudioServicesPlaySystemSound(_soundID);
63 | }
64 |
65 | -(void)dealloc
66 | {
67 | AudioServicesDisposeSystemSoundID(_soundID);
68 | }
69 |
70 |
71 | @end
72 |
73 | @interface BHBPlaySoundTool ()
74 |
75 | @property (nonatomic,strong) NSMutableDictionary * soundDictinary;
76 |
77 | @end
78 |
79 | @implementation BHBPlaySoundTool
80 |
81 | BHBSingletonM(PlaySoundTool)
82 |
83 | -(NSMutableDictionary *)soundDictinary
84 | {
85 | if (!_soundDictinary) {
86 | _soundDictinary = [NSMutableDictionary dictionary];
87 | [self registerAllSoundId];
88 | }
89 | return _soundDictinary;
90 | }
91 |
92 | - (void)addSoundId:(BHBSoundId *)soundID WithName:(NSString *)name{
93 | [self.soundDictinary setObject:soundID forKey:name];
94 | }
95 |
96 | //初始化所有音效
97 | - (void)registerAllSoundId{
98 | BHBSoundId * s1 = [[BHBSoundId alloc]initForPlayingSoundEffectWith:@"music.bundle/composer_open.wav"];
99 | [self.soundDictinary setObject:s1 forKey:@"open"];
100 | BHBSoundId * s2 = [[BHBSoundId alloc]initForPlayingSoundEffectWith:@"music.bundle/composer_close.wav"];
101 | [self.soundDictinary setObject:s2 forKey:@"close"];
102 | }
103 |
104 | - (BOOL)playWithSoundName:(NSString *)name{
105 | if (name && ![name isEqualToString:@""]) {
106 | BHBSoundId * soundId = [self.soundDictinary objectForKey:name];
107 | if (!soundId) {
108 | return NO;
109 | }
110 | else{
111 | [soundId play];
112 | return YES;
113 | }
114 | }
115 | return NO;
116 | }
117 |
118 | @end
119 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/BHBPlaySoundTool.m:
--------------------------------------------------------------------------------
1 | //
2 | // BHBPlaySoundTool.m
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/15.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import "BHBPlaySoundTool.h"
10 |
11 | @implementation BHBSoundId
12 |
13 | - (id)initForPlayingVibrate
14 | {
15 | self = [super init];
16 | if (self) {
17 | _soundID = kSystemSoundID_Vibrate;
18 | }
19 | return self;
20 | }
21 |
22 | -(id)initForPlayingSystemSoundEffectWith:(NSString *)resourceName ofType:(NSString *)type
23 | {
24 | self = [super init];
25 | if (self) {
26 | NSString *path = [[NSBundle bundleWithIdentifier:@"com.apple.UIKit"] pathForResource:resourceName ofType:type];
27 | if (path) {
28 | SystemSoundID theSoundID;
29 | OSStatus error = AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:path], &theSoundID);
30 | if (error == kAudioServicesNoError) {
31 | _soundID = theSoundID;
32 | }else {
33 | NSLog(@"Failed to create sound ");
34 | }
35 | }
36 |
37 | }
38 | return self;
39 | }
40 |
41 | -(id)initForPlayingSoundEffectWith:(NSString *)filename
42 | {
43 | self = [super init];
44 | if (self) {
45 | NSURL *fileURL = [[NSBundle mainBundle] URLForResource:filename withExtension:nil];
46 | if (fileURL != nil)
47 | {
48 | SystemSoundID theSoundID;
49 | OSStatus error = AudioServicesCreateSystemSoundID((__bridge CFURLRef)fileURL, &theSoundID);
50 | if (error == kAudioServicesNoError){
51 | _soundID = theSoundID;
52 | }else {
53 | NSLog(@"Failed to create sound ");
54 | }
55 | }
56 | }
57 | return self;
58 | }
59 |
60 | -(void)play
61 | {
62 | AudioServicesPlaySystemSound(_soundID);
63 | }
64 |
65 | -(void)dealloc
66 | {
67 | AudioServicesDisposeSystemSoundID(_soundID);
68 | }
69 |
70 |
71 | @end
72 |
73 | @interface BHBPlaySoundTool ()
74 |
75 | @property (nonatomic,strong) NSMutableDictionary * soundDictinary;
76 |
77 | @end
78 |
79 | @implementation BHBPlaySoundTool
80 |
81 | BHBSingletonM(PlaySoundTool)
82 |
83 | -(NSMutableDictionary *)soundDictinary
84 | {
85 | if (!_soundDictinary) {
86 | _soundDictinary = [NSMutableDictionary dictionary];
87 | [self registerAllSoundId];
88 | }
89 | return _soundDictinary;
90 | }
91 |
92 | - (void)addSoundId:(BHBSoundId *)soundID WithName:(NSString *)name{
93 | [self.soundDictinary setObject:soundID forKey:name];
94 | }
95 |
96 | //初始化所有音效
97 | - (void)registerAllSoundId{
98 | BHBSoundId * s1 = [[BHBSoundId alloc]initForPlayingSoundEffectWith:@"music.bundle/composer_open.wav"];
99 | [self.soundDictinary setObject:s1 forKey:@"open"];
100 | BHBSoundId * s2 = [[BHBSoundId alloc]initForPlayingSoundEffectWith:@"music.bundle/composer_close.wav"];
101 | [self.soundDictinary setObject:s2 forKey:@"close"];
102 | }
103 |
104 | - (BOOL)playWithSoundName:(NSString *)name{
105 | if (name && ![name isEqualToString:@""]) {
106 | BHBSoundId * soundId = [self.soundDictinary objectForKey:name];
107 | if (!soundId) {
108 | return NO;
109 | }
110 | else{
111 | [soundId play];
112 | return YES;
113 | }
114 | }
115 | return NO;
116 | }
117 |
118 | @end
119 |
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/Base.lproj/LaunchScreen.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
20 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | [](https://raw.githubusercontent.com/bb-coder/BHBPopView/master/LICENSE)
2 | [](http://cocoapods.org/?q=BHBPopView)
3 | [](http://cocoapods.org/?q=BHBPopView)
4 | [](https://www.apple.com/nl/ios/)
5 |
6 | # BHBPopView
7 | 仿新浪微博客户端“加号”按钮弹出动画
8 |
9 | 
10 | 
11 |
12 |
13 | ## 怎么使用:
14 |
15 | ### 0.下载或者在cocoapods中引入:
16 |
17 | pod 'BHBPopView'
18 |
19 | ### 1.导入头文件
20 |
21 | #import "BHBPopView.h"
22 |
23 | ### 2.显示弹出框
24 | //添加popview
25 | [BHBPopView showToView:self.view
26 | andImages:@[@"images.bundle/tabbar_compose_idea",
27 | @"images.bundle/tabbar_compose_photo",@"images.bundle/tabbar_compose_camera",
28 | @"images.bundle/tabbar_compose_lbs",@"images.bundle/tabbar_compose_review",
29 | @"images.bundle/tabbar_compose_more"]
30 | andTitles:
31 | @[@"Text",@"Albums",@"Camera",@"Check in",@"Review",@"More"]
32 | andSelectBlock:^(BHBItem *item) {
33 |
34 | }
35 | ];
36 |
37 | ### 3.使用带more按钮滑动显示第二屏功能
38 | BHBItem * item0 = [[BHBItem alloc]initWithTitle:@"Text" Icon:@"images.bundle/tabbar_compose_idea"];
39 | BHBItem * item1 = [[BHBItem alloc]initWithTitle:@"Albums" Icon:@"images.bundle/tabbar_compose_photo"];
40 | BHBItem * item2 = [[BHBItem alloc]initWithTitle:@"Camera" Icon:@"images.bundle/tabbar_compose_camera"];
41 | //第4个按钮内部有一组
42 | BHBGroup * item3 = [[BHBGroup alloc]initWithTitle:@"Check in" Icon:@"images.bundle/tabbar_compose_lbs"];
43 | BHBItem * item31 = [[BHBItem alloc]initWithTitle:@"Friend Circle" Icon:@"images.bundle/tabbar_compose_friend"];
44 | BHBItem * item32 = [[BHBItem alloc]initWithTitle:@"Weibo Camera" Icon:@"images.bundle/tabbar_compose_wbcamera"];
45 | BHBItem * item33 = [[BHBItem alloc]initWithTitle:@"Music" Icon:@"images.bundle/tabbar_compose_music"];
46 | item3.items = @[item31,item32,item33];
47 |
48 | BHBItem * item4 = [[BHBItem alloc]initWithTitle:@"Review" Icon:@"images.bundle/tabbar_compose_review"];
49 |
50 | //第六个按钮内部有一组
51 | BHBGroup * item5 = [[BHBGroup alloc]initWithTitle:@"More" Icon:@"images.bundle/tabbar_compose_more"];
52 | BHBItem * item51 = [[BHBItem alloc]initWithTitle:@"Friend Circle" Icon:@"images.bundle/tabbar_compose_friend"];
53 | BHBItem * item52 = [[BHBItem alloc]initWithTitle:@"Weibo Camera" Icon:@"images.bundle/tabbar_compose_wbcamera"];
54 | BHBItem * item53 = [[BHBItem alloc]initWithTitle:@"Music" Icon:@"images.bundle/tabbar_compose_music"];
55 | BHBItem * item54 = [[BHBItem alloc]initWithTitle:@"Blog" Icon:@"images.bundle/tabbar_compose_weibo"];
56 | BHBItem * item55 = [[BHBItem alloc]initWithTitle:@"Collection" Icon:@"images.bundle/tabbar_compose_transfer"];
57 | BHBItem * item56 = [[BHBItem alloc]initWithTitle:@"Voice" Icon:@"images.bundle/tabbar_compose_voice"];
58 | item5.items = @[item51,item52,item53,item54,item55,item56];
59 |
60 |
61 | //添加popview
62 | [BHBPopView showToView:self.view.window withItems:@[item0,item1,item2,item3,item4,item5]andSelectBlock:^(BHBItem *item) {
63 | if ([item isKindOfClass:[BHBGroup class]]) {
64 | NSLog(@"选中%@分组",item.title);
65 | }else{
66 | NSLog(@"选中%@项",item.title);
67 | }
68 | }];
69 |
70 |
71 | ### 4.使用参考
72 | 使用可参考LiQiankun贡献的DLTabBarController文件夹。
73 |
74 | # 缺陷:
75 | 1.按钮弹出的动画比新浪原版略显生硬。
76 |
77 | # 编写目的:
78 | ### 仅供学习和交流,没有冒犯新浪大大的意思^_^。
79 |
80 | # 灵感:
81 | ## 每次玩微博都强迫症作祟,跟个傻X一样不停的点这个,会不会有人跟我一样?😁
82 | ## 对动画优化有建议的请issue我。
83 | ## 没事跟我一样闲的蛋疼请issue我。
84 |
85 | good luck!
86 |
87 | ## Update log
88 |
89 | ### 1.1版本更新:
90 | - 优化弹出时间
91 | - 优化内存问题
92 | - 增加带层级关系的分组功能(替代原来的more方案)
93 | - 兼容iOS7真机找不到图片的问题
94 |
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/BHBBottomBar.m:
--------------------------------------------------------------------------------
1 | //
2 | // BHBBottomBar.m
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/15.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import "BHBBottomBar.h"
10 | #import "UIImageView+BHBSetImage.h"
11 | #import "UIButton+BHBSetImage.h"
12 | #import "UIView+BHBAnimation.h"
13 |
14 | @interface BHBBottomBar ()
15 |
16 | @property (nonatomic,weak) UIImageView * background;
17 | @property (nonatomic,weak) UIButton * closeBtn;
18 | @property (nonatomic,weak) UIButton * backBtn;
19 | @property (nonatomic,weak) UIButton * secondCloseBtn;
20 |
21 | @end
22 |
23 | @implementation BHBBottomBar
24 |
25 | - (instancetype)initWithFrame:(CGRect)frame
26 | {
27 | self = [super initWithFrame:frame];
28 | if (self) {
29 | UIImageView * back = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, frame.size.width, frame.size.height)];
30 | [back bhb_setImageWithResourcePath:@"images.bundle/tabbar_compose_below_background" AutoSize:NO];
31 | [self addSubview:back];
32 | self.background = back;
33 |
34 | UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom];
35 | btn.frame = CGRectMake(0, 0, BHBBOTTOMHEIGHT / 2, BHBBOTTOMHEIGHT / 2);
36 | btn.center = CGPointMake(frame.size.width / 2, frame.size.height / 2);
37 | [btn bhb_setImage:@"images.bundle/tabbar_compose_background_icon_add"];
38 | btn.userInteractionEnabled = NO;
39 | [self addSubview:btn];
40 | [btn RevolvingWithTime:.25 andDelta:(M_PI_4)];
41 | self.closeBtn = btn;
42 |
43 | UIButton * backbtn = [UIButton buttonWithType:UIButtonTypeCustom];
44 | backbtn.frame = CGRectMake(0, 0, frame.size.width / 2, frame.size.height);
45 | [backbtn bhb_setImage:@"images.bundle/tabbar_compose_background_icon_return"];
46 | [backbtn bhb_setBGImage:@"images.bundle/tabbar_compose_left_button"];
47 | [self addSubview:backbtn];
48 | [backbtn addTarget:self action:@selector(back:) forControlEvents:UIControlEventTouchUpInside];
49 | backbtn.alpha = 0;
50 | backbtn.userInteractionEnabled = NO;
51 | self.backBtn = backbtn;
52 |
53 | UIButton * secCloseBtn = [UIButton buttonWithType:UIButtonTypeCustom];
54 | secCloseBtn.frame = CGRectMake(frame.size.width / 2, 0, frame.size.width / 2, frame.size.height);
55 | [secCloseBtn bhb_setImage:@"images.bundle/tabbar_compose_background_icon_close"];
56 | [secCloseBtn bhb_setBGImage:@"images.bundle/tabbar_compose_right_button"];
57 | [self addSubview:secCloseBtn];
58 | [secCloseBtn addTarget:self action:@selector(close) forControlEvents:UIControlEventTouchUpInside];
59 | secCloseBtn.alpha = 0;
60 | secCloseBtn.userInteractionEnabled = NO;
61 | self.secondCloseBtn = secCloseBtn;
62 |
63 | }
64 | return self;
65 | }
66 |
67 | - (void)close
68 | {
69 | [self fadeOutWithTime:.25];
70 | [self btnResetPosition];
71 | if (self.closeClick) {
72 | self.closeClick();
73 | }
74 | }
75 |
76 | - (void)back:(UIButton *)btn{
77 | self.isMoreBar = NO;
78 | if (self.backClick) {
79 | self.backClick();
80 | }
81 | }
82 |
83 | - (void)setIsMoreBar:(BOOL)isMoreBar
84 | {
85 | _isMoreBar = isMoreBar;
86 | if (isMoreBar) {
87 | [UIView animateWithDuration:.25 animations:^{
88 | self.closeBtn.alpha = 0;
89 | self.backBtn.alpha = 1;
90 | self.secondCloseBtn.alpha = 1;
91 | self.backBtn.userInteractionEnabled = YES;
92 | self.secondCloseBtn.userInteractionEnabled = YES;
93 | }];
94 | }else{
95 | [UIView animateWithDuration:.25 animations:^{
96 | self.closeBtn.alpha = 1;
97 | self.backBtn.alpha = 0;
98 | self.secondCloseBtn.alpha = 0;
99 | self.backBtn.userInteractionEnabled = NO;
100 | self.secondCloseBtn.userInteractionEnabled = NO;
101 | }];
102 | }
103 | }
104 |
105 | //恢复按钮位置
106 | - (void)btnResetPosition{
107 | if (self.closeBtn) {
108 | [self.closeBtn RevolvingWithTime:.25 andDelta:0];
109 | }
110 | }
111 |
112 | - (void)dealloc{
113 | NSLog(@"BHBBottomBar");
114 | }
115 |
116 | @end
117 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/BHBBottomBar.m:
--------------------------------------------------------------------------------
1 | //
2 | // BHBBottomBar.m
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/15.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import "BHBBottomBar.h"
10 | #import "UIImageView+BHBSetImage.h"
11 | #import "UIButton+BHBSetImage.h"
12 | #import "UIView+BHBAnimation.h"
13 |
14 | @interface BHBBottomBar ()
15 |
16 | @property (nonatomic,weak) UIImageView * background;
17 | @property (nonatomic,weak) UIButton * closeBtn;
18 | @property (nonatomic,weak) UIButton * backBtn;
19 | @property (nonatomic,weak) UIButton * secondCloseBtn;
20 |
21 | @end
22 |
23 | @implementation BHBBottomBar
24 |
25 | - (instancetype)initWithFrame:(CGRect)frame
26 | {
27 | self = [super initWithFrame:frame];
28 | if (self) {
29 | UIImageView * back = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, frame.size.width, frame.size.height)];
30 | [back bhb_setImageWithResourcePath:@"images.bundle/tabbar_compose_below_background" AutoSize:NO];
31 | [self addSubview:back];
32 | self.background = back;
33 |
34 | UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom];
35 | btn.frame = CGRectMake(0, 0, BHBBOTTOMHEIGHT / 2, BHBBOTTOMHEIGHT / 2);
36 | btn.center = CGPointMake(frame.size.width / 2, frame.size.height / 2);
37 | [btn bhb_setImage:@"images.bundle/tabbar_compose_background_icon_add"];
38 | btn.userInteractionEnabled = NO;
39 | [self addSubview:btn];
40 | [btn RevolvingWithTime:.25 andDelta:(M_PI_4)];
41 | self.closeBtn = btn;
42 |
43 | UIButton * backbtn = [UIButton buttonWithType:UIButtonTypeCustom];
44 | backbtn.frame = CGRectMake(0, 0, frame.size.width / 2, frame.size.height);
45 | [backbtn bhb_setImage:@"images.bundle/tabbar_compose_background_icon_return"];
46 | [backbtn bhb_setBGImage:@"images.bundle/tabbar_compose_left_button"];
47 | [self addSubview:backbtn];
48 | [backbtn addTarget:self action:@selector(back:) forControlEvents:UIControlEventTouchUpInside];
49 | backbtn.alpha = 0;
50 | backbtn.userInteractionEnabled = NO;
51 | self.backBtn = backbtn;
52 |
53 | UIButton * secCloseBtn = [UIButton buttonWithType:UIButtonTypeCustom];
54 | secCloseBtn.frame = CGRectMake(frame.size.width / 2, 0, frame.size.width / 2, frame.size.height);
55 | [secCloseBtn bhb_setImage:@"images.bundle/tabbar_compose_background_icon_close"];
56 | [secCloseBtn bhb_setBGImage:@"images.bundle/tabbar_compose_right_button"];
57 | [self addSubview:secCloseBtn];
58 | [secCloseBtn addTarget:self action:@selector(close) forControlEvents:UIControlEventTouchUpInside];
59 | secCloseBtn.alpha = 0;
60 | secCloseBtn.userInteractionEnabled = NO;
61 | self.secondCloseBtn = secCloseBtn;
62 |
63 | }
64 | return self;
65 | }
66 |
67 | - (void)close
68 | {
69 | [self fadeOutWithTime:.25];
70 | [self btnResetPosition];
71 | if (self.closeClick) {
72 | self.closeClick();
73 | }
74 | }
75 |
76 | - (void)back:(UIButton *)btn{
77 | self.isMoreBar = NO;
78 | if (self.backClick) {
79 | self.backClick();
80 | }
81 | }
82 |
83 | - (void)setIsMoreBar:(BOOL)isMoreBar
84 | {
85 | _isMoreBar = isMoreBar;
86 | if (isMoreBar) {
87 | [UIView animateWithDuration:.25 animations:^{
88 | self.closeBtn.alpha = 0;
89 | self.backBtn.alpha = 1;
90 | self.secondCloseBtn.alpha = 1;
91 | self.backBtn.userInteractionEnabled = YES;
92 | self.secondCloseBtn.userInteractionEnabled = YES;
93 | }];
94 | }else{
95 | [UIView animateWithDuration:.25 animations:^{
96 | self.closeBtn.alpha = 1;
97 | self.backBtn.alpha = 0;
98 | self.secondCloseBtn.alpha = 0;
99 | self.backBtn.userInteractionEnabled = NO;
100 | self.secondCloseBtn.userInteractionEnabled = NO;
101 | }];
102 | }
103 | }
104 |
105 | //恢复按钮位置
106 | - (void)btnResetPosition{
107 | if (self.closeBtn) {
108 | [self.closeBtn RevolvingWithTime:.25 andDelta:0];
109 | }
110 | }
111 |
112 | - (void)dealloc{
113 | NSLog(@"BHBBottomBar");
114 | }
115 |
116 | @end
117 |
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo.xcodeproj/xcuserdata/bihongbo.xcuserdatad/xcschemes/BHBPopViewDemo.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
29 |
35 |
36 |
37 |
38 |
39 |
44 |
45 |
47 |
53 |
54 |
55 |
56 |
57 |
63 |
64 |
65 |
66 |
75 |
77 |
83 |
84 |
85 |
86 |
87 |
88 |
94 |
96 |
102 |
103 |
104 |
105 |
107 |
108 |
111 |
112 |
113 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo.xcodeproj/xcuserdata/ft_david.xcuserdatad/xcschemes/DLTabBarControllerDemo.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
33 |
39 |
40 |
41 |
43 |
49 |
50 |
51 |
52 |
53 |
59 |
60 |
61 |
62 |
63 |
64 |
74 |
76 |
82 |
83 |
84 |
85 |
86 |
87 |
93 |
95 |
101 |
102 |
103 |
104 |
106 |
107 |
110 |
111 |
112 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/DLTabBarController.m:
--------------------------------------------------------------------------------
1 | //
2 | // DLTabBarController.m
3 | // DLTabBarControllerDemo
4 | //
5 | // Created by FT_David on 16/5/27.
6 | // Copyright © 2016年 FT_David. All rights reserved.
7 | //
8 |
9 | #import "DLTabBarController.h"
10 | #import "ViewController.h"
11 | #import "DLTabBar.h"
12 | #import "BHBPopView.h"
13 | @interface DLTabBarController ()
14 |
15 | @end
16 |
17 | @implementation DLTabBarController
18 |
19 | - (void)viewDidLoad {
20 | [super viewDidLoad];
21 |
22 | [self setupViewControllers];
23 | [self setupTabbar];
24 |
25 | }
26 |
27 |
28 | -(void)setupViewControllers
29 | {
30 | // 1.初始化子控制器
31 | ViewController *home = [[ViewController alloc] init];
32 | [self addChildVc:home title:@"首页" image:@"tabbar_home" selectedImage:@"tabbar_home_selected"];
33 |
34 | ViewController *messageCenter = [[ViewController alloc] init];
35 | [self addChildVc:messageCenter title:@"消息" image:@"tabbar_message_center" selectedImage:@"tabbar_message_center_selected"];
36 |
37 | ViewController *discover = [[ViewController alloc] init];
38 | [self addChildVc:discover title:@"发现" image:@"tabbar_discover" selectedImage:@"tabbar_discover_selected"];
39 |
40 | ViewController *profile = [[ViewController alloc] init];
41 | [self addChildVc:profile title:@"我" image:@"tabbar_profile" selectedImage:@"tabbar_profile_selected"];
42 | }
43 |
44 | -(void)setupTabbar
45 | {
46 |
47 | DLTabBar *tabBar = [[DLTabBar alloc] init];
48 | [self setValue:tabBar forKeyPath:@"tabBar"];
49 | }
50 |
51 | #pragma mark - DLTabBarDelegate
52 | -(void)tabBarDidClickAtCenterButton:(DLTabBar *)tabBar
53 | {
54 |
55 | BHBItem * item0 = [[BHBItem alloc]initWithTitle:@"Text" Icon:@"images.bundle/tabbar_compose_idea"];
56 | BHBItem * item1 = [[BHBItem alloc]initWithTitle:@"Albums" Icon:@"images.bundle/tabbar_compose_photo"];
57 | BHBItem * item2 = [[BHBItem alloc]initWithTitle:@"Camera" Icon:@"images.bundle/tabbar_compose_camera"];
58 | //第4个按钮内部有一组
59 | BHBGroup * item3 = [[BHBGroup alloc]initWithTitle:@"Check in" Icon:@"images.bundle/tabbar_compose_lbs"];
60 | BHBItem * item31 = [[BHBItem alloc]initWithTitle:@"Friend Circle" Icon:@"images.bundle/tabbar_compose_friend"];
61 | BHBItem * item32 = [[BHBItem alloc]initWithTitle:@"Weibo Camera" Icon:@"images.bundle/tabbar_compose_wbcamera"];
62 | BHBItem * item33 = [[BHBItem alloc]initWithTitle:@"Music" Icon:@"images.bundle/tabbar_compose_music"];
63 | item3.items = @[item31,item32,item33];
64 |
65 | BHBItem * item4 = [[BHBItem alloc]initWithTitle:@"Review" Icon:@"images.bundle/tabbar_compose_review"];
66 |
67 | //第六个按钮内部有一组
68 | BHBGroup * item5 = [[BHBGroup alloc]initWithTitle:@"More" Icon:@"images.bundle/tabbar_compose_more"];
69 | BHBItem * item51 = [[BHBItem alloc]initWithTitle:@"Friend Circle" Icon:@"images.bundle/tabbar_compose_friend"];
70 | BHBItem * item52 = [[BHBItem alloc]initWithTitle:@"Weibo Camera" Icon:@"images.bundle/tabbar_compose_wbcamera"];
71 | BHBItem * item53 = [[BHBItem alloc]initWithTitle:@"Music" Icon:@"images.bundle/tabbar_compose_music"];
72 | BHBItem * item54 = [[BHBItem alloc]initWithTitle:@"Blog" Icon:@"images.bundle/tabbar_compose_weibo"];
73 | BHBItem * item55 = [[BHBItem alloc]initWithTitle:@"Collection" Icon:@"images.bundle/tabbar_compose_transfer"];
74 | BHBItem * item56 = [[BHBItem alloc]initWithTitle:@"Voice" Icon:@"images.bundle/tabbar_compose_voice"];
75 | item5.items = @[item51,item52,item53,item54,item55,item56];
76 |
77 |
78 | //添加popview
79 | [BHBPopView showToView:self.view.window withItems:@[item0,item1,item2,item3,item4,item5]andSelectBlock:^(BHBItem *item) {
80 | if ([item isKindOfClass:[BHBGroup class]]) {
81 | NSLog(@"选中%@分组",item.title);
82 | }else{
83 | NSLog(@"选中%@项",item.title);
84 | }
85 | }];
86 |
87 | }
88 |
89 |
90 | - (void)addChildVc:(UIViewController *)childVc title:(NSString *)title image:(NSString *)image selectedImage:(NSString *)selectedImage
91 | {
92 | childVc.title = title;
93 | childVc.tabBarItem.image = [UIImage imageNamed:image];
94 | childVc.tabBarItem.selectedImage = [[UIImage imageNamed:selectedImage] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
95 |
96 | NSMutableDictionary *textAttrs = [NSMutableDictionary dictionary];
97 | textAttrs[NSForegroundColorAttributeName] = [UIColor colorWithRed:123/255.0 green:123/255.0 blue:123/255.0 alpha:1];
98 | NSMutableDictionary *selectTextAttrs = [NSMutableDictionary dictionary];
99 | selectTextAttrs[NSForegroundColorAttributeName] = [UIColor orangeColor];
100 | [childVc.tabBarItem setTitleTextAttributes:textAttrs forState:UIControlStateNormal];
101 | [childVc.tabBarItem setTitleTextAttributes:selectTextAttrs forState:UIControlStateSelected];
102 | UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:childVc];
103 |
104 | [self addChildViewController:nav];
105 | }
106 |
107 |
108 | - (void)didReceiveMemoryWarning {
109 | [super didReceiveMemoryWarning];
110 |
111 | }
112 |
113 |
114 |
115 |
116 |
117 | @end
118 |
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/UIImage+BHBEffects.m:
--------------------------------------------------------------------------------
1 | //
2 | // UIImage+BHBEffects.m
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/15.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import "UIImage+BHBEffects.h"
10 | #import
11 | #import
12 |
13 | @implementation UIImage (BHBEffects)
14 |
15 | - (UIImage *)bhb_applyBlurWithRadius:(CGFloat)blurRadius tintColor:(UIColor *)tintColor saturationDeltaFactor:(CGFloat)saturationDeltaFactor maskImage:(UIImage *)maskImage
16 | {
17 | if (self.size.width < 1 || self.size.height < 1) {
18 | return nil;
19 | }
20 | if (!self.CGImage) {
21 | return nil;
22 | }
23 | if (maskImage && !maskImage.CGImage) {
24 | return nil;
25 | }
26 |
27 | CGRect imageRect = { CGPointZero, self.size };
28 | UIImage *effectImage = self;
29 |
30 | BOOL hasBlur = blurRadius > __FLT_EPSILON__;
31 | BOOL hasSaturationChange = fabs(saturationDeltaFactor - 1.) > __FLT_EPSILON__;
32 | if (hasBlur || hasSaturationChange) {
33 | UIGraphicsBeginImageContextWithOptions(self.size, NO, [[UIScreen mainScreen] scale]);
34 | CGContextRef effectInContext = UIGraphicsGetCurrentContext();
35 | CGContextScaleCTM(effectInContext, 1.0, -1.0);
36 | CGContextTranslateCTM(effectInContext, 0, -self.size.height);
37 | CGContextDrawImage(effectInContext, imageRect, self.CGImage);
38 |
39 | vImage_Buffer effectInBuffer;
40 |
41 |
42 | effectInBuffer.data = CGBitmapContextGetData(effectInContext);
43 | effectInBuffer.width = CGBitmapContextGetWidth(effectInContext);
44 | effectInBuffer.height = CGBitmapContextGetHeight(effectInContext);
45 | effectInBuffer.rowBytes = CGBitmapContextGetBytesPerRow(effectInContext);
46 |
47 | UIGraphicsBeginImageContextWithOptions(self.size, NO, [[UIScreen mainScreen] scale]);
48 | CGContextRef effectOutContext = UIGraphicsGetCurrentContext();
49 | vImage_Buffer effectOutBuffer;
50 | effectOutBuffer.data = CGBitmapContextGetData(effectOutContext);
51 | effectOutBuffer.width = CGBitmapContextGetWidth(effectOutContext);
52 | effectOutBuffer.height = CGBitmapContextGetHeight(effectOutContext);
53 | effectOutBuffer.rowBytes = CGBitmapContextGetBytesPerRow(effectOutContext);
54 |
55 | if (hasBlur) {
56 | CGFloat inputRadius = blurRadius * [[UIScreen mainScreen] scale];
57 | unsigned int radius = floor(inputRadius * 3. * sqrt(2 * M_PI) / 4 + 0.5);
58 | if (radius % 2 != 1) {
59 | radius += 1;
60 | }
61 | vImageBoxConvolve_ARGB8888(&effectInBuffer, &effectOutBuffer, NULL, 0, 0, radius, radius, 0, kvImageEdgeExtend);
62 | vImageBoxConvolve_ARGB8888(&effectOutBuffer, &effectInBuffer, NULL, 0, 0, radius, radius, 0, kvImageEdgeExtend);
63 | vImageBoxConvolve_ARGB8888(&effectInBuffer, &effectOutBuffer, NULL, 0, 0, radius, radius, 0, kvImageEdgeExtend);
64 | }
65 | BOOL effectImageBuffersAreSwapped = NO;
66 | if (hasSaturationChange) {
67 | CGFloat s = saturationDeltaFactor;
68 | CGFloat floatingPointSaturationMatrix[] = {
69 | 0.0722 + 0.9278 * s, 0.0722 - 0.0722 * s, 0.0722 - 0.0722 * s, 0,
70 | 0.7152 - 0.7152 * s, 0.7152 + 0.2848 * s, 0.7152 - 0.7152 * s, 0,
71 | 0.2126 - 0.2126 * s, 0.2126 - 0.2126 * s, 0.2126 + 0.7873 * s, 0,
72 | 0, 0, 0, 1,
73 | };
74 | const int32_t divisor = 256;
75 | NSUInteger matrixSize = sizeof(floatingPointSaturationMatrix)/sizeof(floatingPointSaturationMatrix[0]);
76 | int16_t saturationMatrix[matrixSize];
77 | for (NSUInteger i = 0; i < matrixSize; ++i) {
78 | saturationMatrix[i] = (int16_t)roundf(floatingPointSaturationMatrix[i] * divisor);
79 | }
80 | if (hasBlur) {
81 | vImageMatrixMultiply_ARGB8888(&effectOutBuffer, &effectInBuffer, saturationMatrix, divisor, NULL, NULL, kvImageNoFlags);
82 | effectImageBuffersAreSwapped = YES;
83 | }
84 | else {
85 | vImageMatrixMultiply_ARGB8888(&effectInBuffer, &effectOutBuffer, saturationMatrix, divisor, NULL, NULL, kvImageNoFlags);
86 | }
87 | }
88 | if (!effectImageBuffersAreSwapped)
89 | effectImage = UIGraphicsGetImageFromCurrentImageContext();
90 | UIGraphicsEndImageContext();
91 |
92 | if (effectImageBuffersAreSwapped)
93 | effectImage = UIGraphicsGetImageFromCurrentImageContext();
94 | UIGraphicsEndImageContext();
95 | }
96 |
97 | UIGraphicsBeginImageContextWithOptions(self.size, NO, [[UIScreen mainScreen] scale]);
98 | CGContextRef outputContext = UIGraphicsGetCurrentContext();
99 | CGContextScaleCTM(outputContext, 1.0, -1.0);
100 | CGContextTranslateCTM(outputContext, 0, -self.size.height);
101 |
102 | CGContextDrawImage(outputContext, imageRect, self.CGImage);
103 |
104 | if (hasBlur) {
105 | CGContextSaveGState(outputContext);
106 | if (maskImage) {
107 | CGContextClipToMask(outputContext, imageRect, maskImage.CGImage);
108 | }
109 | CGContextDrawImage(outputContext, imageRect, effectImage.CGImage);
110 | CGContextRestoreGState(outputContext);
111 | }
112 |
113 | if (tintColor) {
114 | CGContextSaveGState(outputContext);
115 | CGContextSetFillColorWithColor(outputContext, tintColor.CGColor);
116 | CGContextFillRect(outputContext, imageRect);
117 | CGContextRestoreGState(outputContext);
118 | }
119 |
120 | UIImage *outputImage = UIGraphicsGetImageFromCurrentImageContext();
121 | UIGraphicsEndImageContext();
122 |
123 | return outputImage;
124 | }
125 |
126 |
127 |
128 | @end
129 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/UIImage+BHBEffects.m:
--------------------------------------------------------------------------------
1 | //
2 | // UIImage+BHBEffects.m
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/15.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import "UIImage+BHBEffects.h"
10 | #import
11 | #import
12 |
13 | @implementation UIImage (BHBEffects)
14 |
15 | - (UIImage *)bhb_applyBlurWithRadius:(CGFloat)blurRadius tintColor:(UIColor *)tintColor saturationDeltaFactor:(CGFloat)saturationDeltaFactor maskImage:(UIImage *)maskImage
16 | {
17 | if (self.size.width < 1 || self.size.height < 1) {
18 | return nil;
19 | }
20 | if (!self.CGImage) {
21 | return nil;
22 | }
23 | if (maskImage && !maskImage.CGImage) {
24 | return nil;
25 | }
26 |
27 | CGRect imageRect = { CGPointZero, self.size };
28 | UIImage *effectImage = self;
29 |
30 | BOOL hasBlur = blurRadius > __FLT_EPSILON__;
31 | BOOL hasSaturationChange = fabs(saturationDeltaFactor - 1.) > __FLT_EPSILON__;
32 | if (hasBlur || hasSaturationChange) {
33 | UIGraphicsBeginImageContextWithOptions(self.size, NO, [[UIScreen mainScreen] scale]);
34 | CGContextRef effectInContext = UIGraphicsGetCurrentContext();
35 | CGContextScaleCTM(effectInContext, 1.0, -1.0);
36 | CGContextTranslateCTM(effectInContext, 0, -self.size.height);
37 | CGContextDrawImage(effectInContext, imageRect, self.CGImage);
38 |
39 | vImage_Buffer effectInBuffer;
40 |
41 |
42 | effectInBuffer.data = CGBitmapContextGetData(effectInContext);
43 | effectInBuffer.width = CGBitmapContextGetWidth(effectInContext);
44 | effectInBuffer.height = CGBitmapContextGetHeight(effectInContext);
45 | effectInBuffer.rowBytes = CGBitmapContextGetBytesPerRow(effectInContext);
46 |
47 | UIGraphicsBeginImageContextWithOptions(self.size, NO, [[UIScreen mainScreen] scale]);
48 | CGContextRef effectOutContext = UIGraphicsGetCurrentContext();
49 | vImage_Buffer effectOutBuffer;
50 | effectOutBuffer.data = CGBitmapContextGetData(effectOutContext);
51 | effectOutBuffer.width = CGBitmapContextGetWidth(effectOutContext);
52 | effectOutBuffer.height = CGBitmapContextGetHeight(effectOutContext);
53 | effectOutBuffer.rowBytes = CGBitmapContextGetBytesPerRow(effectOutContext);
54 |
55 | if (hasBlur) {
56 | CGFloat inputRadius = blurRadius * [[UIScreen mainScreen] scale];
57 | unsigned int radius = floor(inputRadius * 3. * sqrt(2 * M_PI) / 4 + 0.5);
58 | if (radius % 2 != 1) {
59 | radius += 1;
60 | }
61 | vImageBoxConvolve_ARGB8888(&effectInBuffer, &effectOutBuffer, NULL, 0, 0, radius, radius, 0, kvImageEdgeExtend);
62 | vImageBoxConvolve_ARGB8888(&effectOutBuffer, &effectInBuffer, NULL, 0, 0, radius, radius, 0, kvImageEdgeExtend);
63 | vImageBoxConvolve_ARGB8888(&effectInBuffer, &effectOutBuffer, NULL, 0, 0, radius, radius, 0, kvImageEdgeExtend);
64 | }
65 | BOOL effectImageBuffersAreSwapped = NO;
66 | if (hasSaturationChange) {
67 | CGFloat s = saturationDeltaFactor;
68 | CGFloat floatingPointSaturationMatrix[] = {
69 | 0.0722 + 0.9278 * s, 0.0722 - 0.0722 * s, 0.0722 - 0.0722 * s, 0,
70 | 0.7152 - 0.7152 * s, 0.7152 + 0.2848 * s, 0.7152 - 0.7152 * s, 0,
71 | 0.2126 - 0.2126 * s, 0.2126 - 0.2126 * s, 0.2126 + 0.7873 * s, 0,
72 | 0, 0, 0, 1,
73 | };
74 | const int32_t divisor = 256;
75 | NSUInteger matrixSize = sizeof(floatingPointSaturationMatrix)/sizeof(floatingPointSaturationMatrix[0]);
76 | int16_t saturationMatrix[matrixSize];
77 | for (NSUInteger i = 0; i < matrixSize; ++i) {
78 | saturationMatrix[i] = (int16_t)roundf(floatingPointSaturationMatrix[i] * divisor);
79 | }
80 | if (hasBlur) {
81 | vImageMatrixMultiply_ARGB8888(&effectOutBuffer, &effectInBuffer, saturationMatrix, divisor, NULL, NULL, kvImageNoFlags);
82 | effectImageBuffersAreSwapped = YES;
83 | }
84 | else {
85 | vImageMatrixMultiply_ARGB8888(&effectInBuffer, &effectOutBuffer, saturationMatrix, divisor, NULL, NULL, kvImageNoFlags);
86 | }
87 | }
88 | if (!effectImageBuffersAreSwapped)
89 | effectImage = UIGraphicsGetImageFromCurrentImageContext();
90 | UIGraphicsEndImageContext();
91 |
92 | if (effectImageBuffersAreSwapped)
93 | effectImage = UIGraphicsGetImageFromCurrentImageContext();
94 | UIGraphicsEndImageContext();
95 | }
96 |
97 | UIGraphicsBeginImageContextWithOptions(self.size, NO, [[UIScreen mainScreen] scale]);
98 | CGContextRef outputContext = UIGraphicsGetCurrentContext();
99 | CGContextScaleCTM(outputContext, 1.0, -1.0);
100 | CGContextTranslateCTM(outputContext, 0, -self.size.height);
101 |
102 | CGContextDrawImage(outputContext, imageRect, self.CGImage);
103 |
104 | if (hasBlur) {
105 | CGContextSaveGState(outputContext);
106 | if (maskImage) {
107 | CGContextClipToMask(outputContext, imageRect, maskImage.CGImage);
108 | }
109 | CGContextDrawImage(outputContext, imageRect, effectImage.CGImage);
110 | CGContextRestoreGState(outputContext);
111 | }
112 |
113 | if (tintColor) {
114 | CGContextSaveGState(outputContext);
115 | CGContextSetFillColorWithColor(outputContext, tintColor.CGColor);
116 | CGContextFillRect(outputContext, imageRect);
117 | CGContextRestoreGState(outputContext);
118 | }
119 |
120 | UIImage *outputImage = UIGraphicsGetImageFromCurrentImageContext();
121 | UIGraphicsEndImageContext();
122 |
123 | return outputImage;
124 | }
125 |
126 |
127 |
128 | @end
129 |
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/BHBPopView.m:
--------------------------------------------------------------------------------
1 | //
2 | // BHBPopView.m
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/14.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import "BHBPopView.h"
10 | #import "UIImage+BHBEffects.h"
11 | #import "UIView+BHBAnimation.h"
12 | #import "UIImageView+BHBSetImage.h"
13 | #import "BHBPlaySoundTool.h"
14 | #import "BHBBottomBar.h"
15 | #import "BHBCustomBtn.h"
16 | #import "UIButton+BHBSetImage.h"
17 | #import "BHBCenterView.h"
18 |
19 |
20 | @interface BHBPopView ()
21 |
22 | @property (nonatomic,weak) UIImageView * background;
23 | @property (nonatomic,weak) UIImageView * logo;
24 | @property (nonatomic,weak) BHBBottomBar * bottomBar;
25 | @property (nonatomic,weak) BHBCenterView * centerView;
26 |
27 | @property (nonatomic,strong) NSArray * items;
28 | @property (nonatomic,copy) DidSelectItemBlock selectBlock;
29 |
30 |
31 | @end
32 |
33 | @implementation BHBPopView
34 |
35 | - (instancetype)initWithFrame:(CGRect)frame
36 | {
37 | self = [super initWithFrame:frame];
38 | if (self) {
39 | UIImageView * iv = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, frame.size.width, frame.size.height)];
40 | [self addSubview:iv];
41 | self.background = iv;
42 | UIImageView * logo = [[UIImageView alloc]init];
43 | [logo bhb_setImageWithResourcePath:@"images.bundle/compose_slogan" AutoSize:YES];
44 | logo.center = CGPointMake(frame.size.width / 2, frame.size.height * 0.2);
45 | [self addSubview:logo];
46 | self.logo = logo;
47 | BHBBottomBar * bar = [[BHBBottomBar alloc]initWithFrame:CGRectMake(0, frame.size.height - BHBBOTTOMHEIGHT, frame.size.width, BHBBOTTOMHEIGHT)];
48 | __weak typeof(self) weakSelf = self;
49 | bar.backClick = ^{
50 | [weakSelf.centerView scrollBack];
51 | };
52 | bar.closeClick = ^{
53 | [[BHBPlaySoundTool sharedPlaySoundTool] playWithSoundName:@"close"];
54 | [weakSelf hideItems];
55 | [weakSelf hide];
56 | };
57 | [self addSubview:bar];
58 | self.bottomBar = bar;
59 | BHBCenterView * centerView = [[BHBCenterView alloc]initWithFrame:CGRectMake(0, self.frame.size.height * 0.37, self.frame.size.width, self.frame.size.height * 0.4)];
60 | [self addSubview:centerView];
61 | centerView.delegate = self;
62 | centerView.dataSource = self;
63 | centerView.clipsToBounds = NO;
64 | self.centerView = centerView;
65 |
66 | }
67 | return self;
68 | }
69 |
70 | - (void)removeitemsComplete{
71 | self.superview.userInteractionEnabled = YES;
72 | }
73 |
74 |
75 | - (void)showItems{
76 | [self.centerView reloadData];
77 | }
78 |
79 | - (void)hideItems{
80 | [self.centerView dismis];
81 | }
82 |
83 |
84 | + (BHB_INSTANCETYPE)showToView:(UIView *)view withItems:(NSArray *)array andSelectBlock:(DidSelectItemBlock)block{
85 | [[BHBPlaySoundTool sharedPlaySoundTool] playWithSoundName:@"open"];
86 | [self viewNotEmpty:view];
87 | BHBPopView * popView = [[BHBPopView alloc]initWithFrame:view.bounds];
88 | popView.background.image = [self imageWithView:view];
89 | [view addSubview:popView];
90 | popView.selectBlock = block;
91 | [popView fadeInWithTime:0.25];
92 | popView.items = array;
93 | [popView showItems];
94 | return popView;
95 | }
96 |
97 | + (BHB_INSTANCETYPE)showToView:(UIView *)view andImages:(NSArray *)imageArray andTitles:(NSArray *)titles andSelectBlock:(DidSelectItemBlock)block{
98 | NSUInteger count = imageArray.count;
99 | NSMutableArray * items = [NSMutableArray array];
100 | for (int i = 0; i < count; i++) {
101 | BHBItem * item = [[BHBItem alloc]initWithTitle:titles[i] Icon:imageArray[i]];
102 | [items addObject:item];
103 | }
104 | return [self showToView:view withItems:items andSelectBlock:block];
105 | }
106 |
107 | + (UIImage *)imageWithView:(UIView *)view{
108 | UIGraphicsBeginImageContextWithOptions(CGSizeMake(view.frame.size.width, view.frame.size.height), NO, [[UIScreen mainScreen] scale]);
109 | [view.layer renderInContext:UIGraphicsGetCurrentContext()];
110 | UIImage * image = UIGraphicsGetImageFromCurrentImageContext();
111 | UIColor *tintColor = [UIColor colorWithWhite:0.95 alpha:0.78];
112 | image = [image bhb_applyBlurWithRadius:15 tintColor:tintColor saturationDeltaFactor:1 maskImage:nil];
113 | UIGraphicsEndImageContext();
114 |
115 | return image;
116 | }
117 |
118 | + (void)viewNotEmpty:(UIView *)view{
119 | if (view == nil) {
120 | view = (UIView *)[[UIApplication sharedApplication] delegate];
121 | }
122 |
123 | }
124 |
125 | + (void)hideFromView:(UIView *)view{
126 | [self viewNotEmpty:view];
127 | [view.subviews enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
128 | UIView * subV = (UIView *)obj;
129 | [subV isKindOfClass:[self class]];
130 | [BHBPopView hideWithView:subV];
131 | }];
132 | }
133 |
134 | - (void)hide{
135 | [BHBPopView hideWithView:self];
136 | }
137 |
138 | + (void)hideWithView:(UIView *)view{
139 | dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(.35 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
140 | [view fadeOutWithTime:0.35];
141 | });
142 | }
143 |
144 | - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
145 | {
146 | [[BHBPlaySoundTool sharedPlaySoundTool] playWithSoundName:@"close"];
147 | [self.bottomBar btnResetPosition];
148 | [self.bottomBar fadeOutWithTime:.25];
149 | [self hideItems];
150 | [self hide];
151 | }
152 |
153 | #pragma mark centerview delegate and datasource
154 | - (NSInteger)numberOfItemsWithCenterView:(BHBCenterView *)centerView
155 | {
156 | return self.items.count;
157 | }
158 |
159 | -(BHBItem *)itemWithCenterView:(BHBCenterView *)centerView item:(NSInteger)item
160 | {
161 | return self.items[item];
162 | }
163 |
164 | -(void)didSelectItemWithCenterView:(BHBCenterView *)centerView andItem:(BHBItem *)item
165 | {
166 | if (self.selectBlock) {
167 | self.selectBlock(item);
168 | }
169 | [[BHBPlaySoundTool sharedPlaySoundTool] playWithSoundName:@"open"];
170 | [self hide];
171 | }
172 |
173 | - (void)didSelectMoreWithCenterView:(BHBCenterView *)centerView andItem:(BHBGroup *)group
174 | {
175 | if (self.selectBlock) {
176 | self.selectBlock(group);
177 | }
178 | [[BHBPlaySoundTool sharedPlaySoundTool] playWithSoundName:@"open"];
179 | self.bottomBar.isMoreBar = YES;
180 | }
181 |
182 | - (void)dealloc{
183 | NSLog(@"BHBPopView");
184 | }
185 |
186 | @end
187 |
--------------------------------------------------------------------------------
/DLTabBarController/DLTabBarControllerDemo/DLTabBarControllerDemo/Lib/BHBPopView/BHBPopView.m:
--------------------------------------------------------------------------------
1 | //
2 | // BHBPopView.m
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/14.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import "BHBPopView.h"
10 | #import "UIImage+BHBEffects.h"
11 | #import "UIView+BHBAnimation.h"
12 | #import "UIImageView+BHBSetImage.h"
13 | #import "BHBPlaySoundTool.h"
14 | #import "BHBBottomBar.h"
15 | #import "BHBCustomBtn.h"
16 | #import "UIButton+BHBSetImage.h"
17 | #import "BHBCenterView.h"
18 |
19 |
20 | @interface BHBPopView ()
21 |
22 | @property (nonatomic,weak) UIImageView * background;
23 | @property (nonatomic,weak) UIImageView * logo;
24 | @property (nonatomic,weak) BHBBottomBar * bottomBar;
25 | @property (nonatomic,weak) BHBCenterView * centerView;
26 |
27 | @property (nonatomic,strong) NSArray * items;
28 | @property (nonatomic,copy) DidSelectItemBlock selectBlock;
29 |
30 |
31 | @end
32 |
33 | @implementation BHBPopView
34 |
35 | - (instancetype)initWithFrame:(CGRect)frame
36 | {
37 | self = [super initWithFrame:frame];
38 | if (self) {
39 | UIImageView * iv = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, frame.size.width, frame.size.height)];
40 | [self addSubview:iv];
41 | self.background = iv;
42 | UIImageView * logo = [[UIImageView alloc]init];
43 | [logo bhb_setImageWithResourcePath:@"images.bundle/compose_slogan" AutoSize:YES];
44 | logo.center = CGPointMake(frame.size.width / 2, frame.size.height * 0.2);
45 | [self addSubview:logo];
46 | self.logo = logo;
47 | BHBBottomBar * bar = [[BHBBottomBar alloc]initWithFrame:CGRectMake(0, frame.size.height - BHBBOTTOMHEIGHT, frame.size.width, BHBBOTTOMHEIGHT)];
48 | __weak typeof(self) weakSelf = self;
49 | bar.backClick = ^{
50 | [weakSelf.centerView scrollBack];
51 | };
52 | bar.closeClick = ^{
53 | [[BHBPlaySoundTool sharedPlaySoundTool] playWithSoundName:@"close"];
54 | [weakSelf hideItems];
55 | [weakSelf hide];
56 | };
57 | [self addSubview:bar];
58 | self.bottomBar = bar;
59 | BHBCenterView * centerView = [[BHBCenterView alloc]initWithFrame:CGRectMake(0, self.frame.size.height * 0.37, self.frame.size.width, self.frame.size.height * 0.4)];
60 | [self addSubview:centerView];
61 | centerView.delegate = self;
62 | centerView.dataSource = self;
63 | centerView.clipsToBounds = NO;
64 | self.centerView = centerView;
65 |
66 | }
67 | return self;
68 | }
69 |
70 | - (void)removeitemsComplete{
71 | self.superview.userInteractionEnabled = YES;
72 | }
73 |
74 |
75 | - (void)showItems{
76 | [self.centerView reloadData];
77 | }
78 |
79 | - (void)hideItems{
80 | [self.centerView dismis];
81 | }
82 |
83 |
84 | + (BHB_INSTANCETYPE)showToView:(UIView *)view withItems:(NSArray *)array andSelectBlock:(DidSelectItemBlock)block{
85 | [[BHBPlaySoundTool sharedPlaySoundTool] playWithSoundName:@"open"];
86 | [self viewNotEmpty:view];
87 | BHBPopView * popView = [[BHBPopView alloc]initWithFrame:view.bounds];
88 | popView.background.image = [self imageWithView:view];
89 | [view addSubview:popView];
90 | popView.selectBlock = block;
91 | [popView fadeInWithTime:0.25];
92 | popView.items = array;
93 | [popView showItems];
94 | return popView;
95 | }
96 |
97 | + (BHB_INSTANCETYPE)showToView:(UIView *)view andImages:(NSArray *)imageArray andTitles:(NSArray *)titles andSelectBlock:(DidSelectItemBlock)block{
98 | NSUInteger count = imageArray.count;
99 | NSMutableArray * items = [NSMutableArray array];
100 | for (int i = 0; i < count; i++) {
101 | BHBItem * item = [[BHBItem alloc]initWithTitle:titles[i] Icon:imageArray[i]];
102 | [items addObject:item];
103 | }
104 | return [self showToView:view withItems:items andSelectBlock:block];
105 | }
106 |
107 | + (UIImage *)imageWithView:(UIView *)view{
108 | UIGraphicsBeginImageContextWithOptions(CGSizeMake(view.frame.size.width, view.frame.size.height), NO, [[UIScreen mainScreen] scale]);
109 | [view.layer renderInContext:UIGraphicsGetCurrentContext()];
110 | UIImage * image = UIGraphicsGetImageFromCurrentImageContext();
111 | UIColor *tintColor = [UIColor colorWithWhite:0.95 alpha:0.78];
112 | image = [image bhb_applyBlurWithRadius:15 tintColor:tintColor saturationDeltaFactor:1 maskImage:nil];
113 | UIGraphicsEndImageContext();
114 |
115 | return image;
116 | }
117 |
118 | + (void)viewNotEmpty:(UIView *)view{
119 | if (view == nil) {
120 | view = (UIView *)[[UIApplication sharedApplication] delegate];
121 | }
122 |
123 | }
124 |
125 | + (void)hideFromView:(UIView *)view{
126 | [self viewNotEmpty:view];
127 | [view.subviews enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
128 | UIView * subV = (UIView *)obj;
129 | [subV isKindOfClass:[self class]];
130 | [BHBPopView hideWithView:subV];
131 | }];
132 | }
133 |
134 | - (void)hide{
135 | [BHBPopView hideWithView:self];
136 | }
137 |
138 | + (void)hideWithView:(UIView *)view{
139 | dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(.35 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
140 | [view fadeOutWithTime:0.35];
141 | });
142 | }
143 |
144 | - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
145 | {
146 | [[BHBPlaySoundTool sharedPlaySoundTool] playWithSoundName:@"close"];
147 | [self.bottomBar btnResetPosition];
148 | [self.bottomBar fadeOutWithTime:.25];
149 | [self hideItems];
150 | [self hide];
151 | }
152 |
153 | #pragma mark centerview delegate and datasource
154 | - (NSInteger)numberOfItemsWithCenterView:(BHBCenterView *)centerView
155 | {
156 | return self.items.count;
157 | }
158 |
159 | -(BHBItem *)itemWithCenterView:(BHBCenterView *)centerView item:(NSInteger)item
160 | {
161 | return self.items[item];
162 | }
163 |
164 | -(void)didSelectItemWithCenterView:(BHBCenterView *)centerView andItem:(BHBItem *)item
165 | {
166 | if (self.selectBlock) {
167 | self.selectBlock(item);
168 | }
169 | [[BHBPlaySoundTool sharedPlaySoundTool] playWithSoundName:@"open"];
170 | [self hide];
171 | }
172 |
173 | - (void)didSelectMoreWithCenterView:(BHBCenterView *)centerView andItem:(BHBGroup *)group
174 | {
175 | if (self.selectBlock) {
176 | self.selectBlock(group);
177 | }
178 | [[BHBPlaySoundTool sharedPlaySoundTool] playWithSoundName:@"open"];
179 | self.bottomBar.isMoreBar = YES;
180 | }
181 |
182 | - (void)dealloc{
183 | NSLog(@"BHBPopView");
184 | }
185 |
186 | @end
187 |
--------------------------------------------------------------------------------
/BHBPopViewDemo/BHBPopViewDemo/BHBPopView/BHBCenterView.m:
--------------------------------------------------------------------------------
1 | //
2 | // BHBCenterView.m
3 | // BHBPopViewDemo
4 | //
5 | // Created by 毕洪博 on 15/8/15.
6 | // Copyright (c) 2015年 毕洪博. All rights reserved.
7 | //
8 |
9 | #import "BHBCenterView.h"
10 | #import "BHBCustomBtn.h"
11 | #import "UIButton+BHBSetImage.h"
12 | #import "BHBItem.h"
13 | #import "UIView+BHBAnimation.h"
14 | #import "BHBGroup.h"
15 |
16 | @interface BHBCenterView ()
17 |
18 | @property (nonatomic,strong) NSMutableArray * visableBtnArray;
19 | @property (nonatomic,strong) NSMutableArray * homeBtns;
20 | @property (nonatomic,strong) NSMutableArray * moreBtns;
21 | @property (nonatomic,strong) BHBGroup * currentGroup;
22 | @property (nonatomic,assign) BOOL btnCanceled;
23 |
24 | @end
25 |
26 | @implementation BHBCenterView
27 | @dynamic delegate;
28 |
29 | -(NSMutableArray *)homeBtns
30 | {
31 | if (!_homeBtns) {
32 | _homeBtns = [NSMutableArray array];
33 | }
34 | return _homeBtns;
35 | }
36 |
37 | -(NSMutableArray *)visableBtnArray
38 | {
39 | if (!_visableBtnArray) {
40 | _visableBtnArray = [NSMutableArray array];
41 | }
42 | return _visableBtnArray;
43 | }
44 |
45 | - (NSMutableArray *)moreBtns{
46 | if (!_moreBtns) {
47 | _moreBtns = [[NSMutableArray alloc] init];
48 | }
49 | return _moreBtns;
50 | }
51 |
52 | - (void)reloadData{
53 | // NSAssert(self.delegate, @"BHBCenterView`s delegate was nil.");
54 | NSAssert(self.dataSource, @"BHBCenterView`s dataSource was nil.");
55 | NSAssert([self.dataSource respondsToSelector:@selector(numberOfItemsWithCenterView:)], @"BHBCenterView`s was unimplementation numberOfItemsWithCenterView:.");
56 | NSAssert([self.dataSource respondsToSelector:@selector(itemWithCenterView:item:)], @"BHBCenterView`s was unimplementation itemWithCenterView:item:.");
57 | [self.homeBtns makeObjectsPerformSelector:@selector(removeFromSuperview)];
58 | [self.moreBtns makeObjectsPerformSelector:@selector(removeFromSuperlayer)];
59 | [self.homeBtns removeAllObjects];
60 | [self.moreBtns removeAllObjects];
61 | NSUInteger count = [self.dataSource numberOfItemsWithCenterView:self];
62 | NSMutableArray * items = [NSMutableArray array];
63 | for (int i = 0; i < count; i ++) {
64 | [items addObject:[self.dataSource itemWithCenterView:self item:i]];
65 | }
66 | [self layoutBtnsWith:items isMore:NO];
67 | [self btnPositonAnimation:NO];
68 | }
69 |
70 | - (void)layoutBtnsWith:(NSArray *)items isMore:(BOOL)isMore{
71 | if(isMore){
72 | [self.moreBtns makeObjectsPerformSelector:@selector(removeFromSuperview)];
73 | [self.moreBtns removeAllObjects];
74 | }
75 | BHBItem * item;
76 | for (int i = 0; i < items.count; i ++) {
77 | item = items[i];
78 | BHBCustomBtn * btn = [BHBCustomBtn buttonWithType:UIButtonTypeCustom];
79 | [btn bhb_setImage:[NSString stringWithFormat:@"%@",item.icon]];
80 | [btn.imageView setContentMode:UIViewContentModeCenter];
81 | [btn setTitle:item.title forState:UIControlStateNormal];
82 | btn.titleLabel.textAlignment = NSTextAlignmentCenter;
83 | [btn setTitleColor:[UIColor darkGrayColor] forState:UIControlStateNormal];
84 | btn.titleLabel.font = [UIFont systemFontOfSize:14];
85 | CGFloat x = (i % 3) * self.frame.size.width / 3.0;
86 | CGFloat y = (i / 3) * self.frame.size.height / 2.0;
87 | if (isMore) {
88 | x += [UIScreen mainScreen].bounds.size.width;
89 | [self.moreBtns addObject:btn];
90 | }
91 | else {
92 | [self.homeBtns addObject:btn];
93 | }
94 | CGFloat width = self.frame.size.width / 3.0;
95 | CGFloat height = self.frame.size.height / 2;
96 | [btn addTarget:self action:@selector(didClickBtn:) forControlEvents:UIControlEventTouchUpInside];
97 | [btn addTarget:self action:@selector(didTouchBtn:) forControlEvents:UIControlEventTouchDown];
98 | [btn addTarget:self action:@selector(didCancelBtn:) forControlEvents:UIControlEventTouchDragInside];
99 | [self addSubview:btn];
100 | btn.frame = CGRectMake(x, y, width, height);
101 | }
102 | }
103 |
104 | - (void)didTouchBtn:(BHBCustomBtn *)btn{
105 | [btn scalingWithTime:.15 andscal:1.2];
106 | }
107 |
108 | - (void)didCancelBtn:(BHBCustomBtn *)btn{
109 | self.btnCanceled = YES;
110 | [btn scalingWithTime:.15 andscal:1];
111 | }
112 |
113 | - (void)scrollBack{
114 | [self.visableBtnArray removeAllObjects];
115 | [self.homeBtns enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
116 | [self.visableBtnArray addObject:obj];
117 | }];
118 | [self setContentOffset:CGPointMake(0, 0) animated:YES];
119 | }
120 |
121 | - (void)didClickBtn:(BHBCustomBtn *)btn{
122 | if (self.btnCanceled) {
123 | self.btnCanceled = NO;
124 | return;
125 | }
126 |
127 | BHBItem * item;
128 | NSInteger index;
129 | if([self.homeBtns containsObject:btn]){
130 | index = [self.homeBtns indexOfObject:btn];
131 | item = [self.dataSource itemWithCenterView:self item:index];
132 | }
133 | if ([self.moreBtns containsObject:btn]) {
134 | index = [self.moreBtns indexOfObject:btn];
135 | item = [self.currentGroup.items objectAtIndex:index];
136 | }
137 | [btn scalingWithTime:.25 andscal:1];
138 | if([item isKindOfClass:[BHBGroup class]]){
139 | BHBGroup * group = (BHBGroup *)item;
140 | self.currentGroup = group;
141 | if (!self.delegate || ![self.delegate respondsToSelector:@selector(didSelectMoreWithCenterView:andItem:)]) {
142 | return;
143 | }
144 | [self layoutBtnsWith:group.items isMore:YES];
145 | [self.visableBtnArray removeAllObjects];
146 | [self.moreBtns enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
147 | [self.visableBtnArray addObject:obj];
148 | }];
149 | [self setContentOffset:CGPointMake(self.frame.size.width, 0) animated:YES];
150 | [self.delegate didSelectMoreWithCenterView:self andItem:group];
151 | return;
152 | }
153 | else{
154 | [btn scalingWithTime:.25 andscal:1.7];
155 | [btn fadeOutWithTime:.25];
156 | [self.visableBtnArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
157 | BHBCustomBtn * b = obj;
158 | if (b != btn) {
159 | [b scalingWithTime:.25 andscal:0.3];
160 | [b fadeOutWithTime:.25];
161 | }
162 | }];
163 | if (!self.delegate || ![self.delegate respondsToSelector:@selector(didSelectItemWithCenterView:andItem:)]) {
164 | return;
165 | }
166 | [self.delegate didSelectItemWithCenterView:self andItem:item];
167 | }
168 | }
169 |
170 |
171 | - (void)dismis{
172 | [self btnPositonAnimation:YES];
173 | }
174 |
175 | - (void)removeAnimation{
176 | [self.visableBtnArray enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
177 | BHBCustomBtn * btn = obj;
178 | CGFloat x = btn.frame.origin.x;
179 | CGFloat y = btn.frame.origin.y;
180 | CGFloat width = btn.frame.size.width;
181 | CGFloat height = btn.frame.size.height;
182 | dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)((self.visableBtnArray.count - idx) * 0.03 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
183 | [UIView animateWithDuration:.5 delay:0 usingSpringWithDamping:0.9 initialSpringVelocity:5 options:0 animations:^{
184 | btn.alpha = 0;
185 | btn.frame = CGRectMake(x, [UIScreen mainScreen].bounds.size.height - self.frame.origin.y + y, width, height);
186 | } completion:^(BOOL finished) {
187 | if ([btn isEqual:[self.visableBtnArray firstObject]]) {
188 | self.superview.superview.userInteractionEnabled = YES;
189 | }
190 | }];
191 | });
192 |
193 | }];
194 |
195 | }
196 |
197 | - (void)moveInAnimation{
198 |
199 | [self.visableBtnArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
200 | BHBCustomBtn * btn = obj;
201 | CGFloat x = btn.frame.origin.x;
202 | CGFloat y = btn.frame.origin.y;
203 | CGFloat width = btn.frame.size.width;
204 | CGFloat height = btn.frame.size.height;
205 | btn.frame = CGRectMake(x, [UIScreen mainScreen].bounds.size.height + y - self.frame.origin.y, width, height);
206 | btn.alpha = 0.0;
207 | dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(idx * 0.03 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
208 | [UIView animateWithDuration:0.25 delay:0 usingSpringWithDamping:0.75 initialSpringVelocity:25 options:UIViewAnimationOptionCurveEaseIn animations:^{
209 | btn.alpha = 1;
210 | btn.frame = CGRectMake(x, y, width, height);
211 | } completion:^(BOOL finished) {
212 | if ([btn isEqual:[self.visableBtnArray lastObject]]) {
213 | self.superview.superview.userInteractionEnabled = YES;
214 | }
215 | }];
216 | });
217 |
218 | }];
219 | }
220 |
221 | - (void)btnPositonAnimation:(BOOL)isDismis{
222 | if (self.visableBtnArray.count <= 0) {
223 | [self.homeBtns enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
224 | [self.visableBtnArray addObject:obj];
225 | }];
226 | }
227 | self.superview.superview.userInteractionEnabled = NO;
228 | if (isDismis) {
229 | [self removeAnimation];
230 | }else{
231 | [self moveInAnimation];
232 | }
233 |
234 | }
235 |
236 | - (void)dealloc{
237 | NSLog(@"BHBCenterView");
238 | }
239 |
240 | @end
241 |
--------------------------------------------------------------------------------