├── .DS_Store ├── .gitignore ├── HeartTrip.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ ├── xcshareddata │ │ └── IDEWorkspaceChecks.plist │ └── xcuserdata │ │ └── CoderBear.xcuserdatad │ │ └── UserInterfaceState.xcuserstate └── xcuserdata │ └── CoderBear.xcuserdatad │ └── xcschemes │ ├── HeartTrip.xcscheme │ └── xcschememanagement.plist ├── HeartTrip.xcworkspace ├── contents.xcworkspacedata └── xcshareddata │ └── IDEWorkspaceChecks.plist ├── HeartTrip ├── .DS_Store ├── Application │ ├── Assets.xcassets │ │ ├── .DS_Store │ │ ├── AppIcon.appiconset │ │ │ ├── AppIcon20x20@2x.png │ │ │ ├── AppIcon20x20@2x~ipad.png │ │ │ ├── AppIcon20x20@3x.png │ │ │ ├── AppIcon20x20~ipad.png │ │ │ ├── AppIcon29x29@2x.png │ │ │ ├── AppIcon29x29@2x~ipad.png │ │ │ ├── AppIcon29x29@3x.png │ │ │ ├── AppIcon29x29~ipad.png │ │ │ ├── AppIcon40x40@2x.png │ │ │ ├── AppIcon40x40@2x~ipad.png │ │ │ ├── AppIcon40x40@3x.png │ │ │ ├── AppIcon40x40~ipad.png │ │ │ ├── AppIcon60x60@2x.png │ │ │ ├── AppIcon60x60@3x.png │ │ │ ├── AppIcon76x76@2x~ipad.png │ │ │ ├── AppIcon76x76~ipad.png │ │ │ ├── AppIcon83.5x83.5@2x~ipad.png │ │ │ └── Contents.json │ │ ├── City │ │ │ ├── Contents.json │ │ │ ├── FindFeedPlaceholder.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── FindFeedPlaceholder@2x.png │ │ │ ├── VideoPlaceholder.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── VideoPlaceholder@2x.png │ │ │ ├── auth_avatar_placeholder_image_82x82_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── auth_avatar_placeholder_image_82x82_@1x.png │ │ │ │ └── auth_avatar_placeholder_image_82x82_@2x.png │ │ │ ├── avatar_placeholder.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── avatar_placeholder@1x.png │ │ │ │ ├── avatar_placeholder@2x.png │ │ │ │ └── avatar_placeholder@3x.png │ │ │ ├── avatar_placeholder_26_26x26_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── avatar_placeholder_26_26x26_@1x.png │ │ │ │ └── avatar_placeholder_26_26x26_@2x.png │ │ │ ├── breadTrip_logo.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── breadTrip_logo.png │ │ │ ├── btn_start_20x20_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── btn_start_20x20_@1x.png │ │ │ │ └── btn_start_20x20_@2x.png │ │ │ ├── discovery_comment_23x22_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── discovery_comment_23x22_@1x.png │ │ │ │ ├── discovery_comment_23x22_@2x.png │ │ │ │ └── discovery_comment_23x22_@3x.png │ │ │ ├── discovery_like_more_34x34_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── discovery_like_more_34x34_@1x.png │ │ │ │ ├── discovery_like_more_34x34_@2x.png │ │ │ │ └── discovery_like_more_34x34_@3x.png │ │ │ ├── feed_comment_more_26x26_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── feed_comment_more_26x26_@1x.png │ │ │ │ └── feed_comment_more_26x26_@2x.png │ │ │ ├── gallery_back_18x17_.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── gallery_back_18x17_@2x.png │ │ │ ├── gallery_back_19x18_.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── gallery_back_19x18_@3x.png │ │ │ ├── gallery_back_hl_18x17_.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── gallery_back_hl_18x17_@2x.png │ │ │ ├── gallery_back_hl_19x18_.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── gallery_back_hl_19x18_@3x.png │ │ │ ├── icon_nav_back_white_19x18_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── icon_nav_back_white_19x18_@1x.png │ │ │ │ ├── icon_nav_back_white_19x18_@2x.png │ │ │ │ └── icon_nav_back_white_19x18_@3x.png │ │ │ ├── icon_nav_back_white_hl_19x18_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── icon_nav_back_white_hl_19x18_@1x.png │ │ │ │ ├── icon_nav_back_white_hl_19x18_@2x.png │ │ │ │ └── icon_nav_back_white_hl_19x18_@3x.png │ │ │ ├── icon_nav_next_button_21x20_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── icon_nav_next_button_21x20_@1x.png │ │ │ │ └── icon_nav_next_button_21x20_@2x.png │ │ │ ├── icon_no_nav_back_button_19x18_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── icon_no_nav_back_button_19x18_@1x.png │ │ │ │ ├── icon_no_nav_back_button_19x18_@2x.png │ │ │ │ └── icon_no_nav_back_button_19x18_@3x.png │ │ │ ├── im_avatar_placeholder_46x46_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── im_avatar_placeholder_46x46_@1x.png │ │ │ │ ├── im_avatar_placeholder_46x46_@2x.png │ │ │ │ └── im_avatar_placeholder_46x46_@3x.png │ │ │ ├── navbar_back_19x18_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── navbar_back_19x18_@1x.png │ │ │ │ ├── navbar_back_19x18_@2x.png │ │ │ │ └── navbar_back_19x18_@3x.png │ │ │ ├── navbar_back_hl_19x18_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── navbar_back_hl_19x18_@1x.png │ │ │ │ ├── navbar_back_hl_19x18_@2x.png │ │ │ │ └── navbar_back_hl_19x18_@3x.png │ │ │ ├── navbar_blank64_3x64_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── navbar_blank64_3x64_@1x.png │ │ │ │ ├── navbar_blank64_3x64_@2x.png │ │ │ │ └── navbar_blank64_3x64_@3x.png │ │ │ ├── navbar_blank_213x22_.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── navbar_blank_213x22_@3x.png │ │ │ ├── navbar_blank_320x44_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── navbar_blank_320x44_@1x.png │ │ │ │ └── navbar_blank_320x44_@2x.png │ │ │ ├── navbar_blank_statusbar_213x10_.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── navbar_blank_statusbar_213x10_@3x.png │ │ │ ├── navbar_blank_statusbar_320x20_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── navbar_blank_statusbar_320x20_@1x.png │ │ │ │ └── navbar_blank_statusbar_320x20_@2x.png │ │ │ ├── photo_placeholder_140x105_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── photo_placeholder_140x105_.png │ │ │ │ ├── photo_placeholder_140x105_@2x.png │ │ │ │ └── photo_placeholder_140x105_@3x.png │ │ │ ├── poi_bg_placeholder.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── poi_bg_placeholder@2x.png │ │ │ ├── tabbar_user_button_image_22x22_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── tabbar_user_button_image_22x22_@1x.png │ │ │ │ └── tabbar_user_button_image_22x22_@2x.png │ │ │ ├── tabbar_user_button_image_hl_22x22_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── tabbar_user_button_image_hl_22x22_@1x.png │ │ │ │ └── tabbar_user_button_image_hl_22x22_@2x.png │ │ │ ├── trip_map_play_60x34_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── trip_map_play_60x34_@1x.png │ │ │ │ ├── trip_map_play_60x34_@2x.png │ │ │ │ └── trip_map_play_60x34_@3x.png │ │ │ ├── trip_map_shadow_3x80_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── trip_map_shadow_3x80_@1x.png │ │ │ │ ├── trip_map_shadow_3x80_@2x.png │ │ │ │ └── trip_map_shadow_3x80_@3x.png │ │ │ ├── trip_new_btn_back_18x18_.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── trip_new_btn_back_18x18_@3x.png │ │ │ ├── trip_new_btn_back_19x18_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── trip_new_btn_back_19x18_@1x.png │ │ │ │ └── trip_new_btn_back_19x18_@2x.png │ │ │ ├── trip_new_btn_back_hl_18x18_.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── trip_new_btn_back_hl_18x18_@3x.png │ │ │ ├── trip_new_btn_back_hl_19x18_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── trip_new_btn_back_hl_19x18_@1x.png │ │ │ │ └── trip_new_btn_back_hl_19x18_@2x.png │ │ │ ├── trip_new_comment_20x19_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── trip_new_comment_20x19_@1x.png │ │ │ │ ├── trip_new_comment_20x19_@2x.png │ │ │ │ └── trip_new_comment_20x19_@3x.png │ │ │ ├── trip_new_comment_hl_20x19_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── trip_new_comment_hl_20x19_@1x.png │ │ │ │ ├── trip_new_comment_hl_20x19_@2x.png │ │ │ │ └── trip_new_comment_hl_20x19_@3x.png │ │ │ ├── trip_new_download_24x18_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── trip_new_download_24x18_@1x.png │ │ │ │ ├── trip_new_download_24x18_@2x.png │ │ │ │ └── trip_new_download_24x18_@3x.png │ │ │ ├── trip_new_edit_18x18_.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── trip_new_edit_18x18_@3x.png │ │ │ ├── trip_new_edit_19x19_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── trip_new_edit_19x19_@1x.png │ │ │ │ └── trip_new_edit_19x19_@2x.png │ │ │ ├── trip_new_edit_hl_18x18_.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── trip_new_edit_hl_18x18_@3x.png │ │ │ ├── trip_new_edit_hl_19x19_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── trip_new_edit_hl_19x19_@1x.png │ │ │ │ └── trip_new_edit_hl_19x19_@2x.png │ │ │ ├── trip_new_share_18x18_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── trip_new_share_18x18_@1x.png │ │ │ │ ├── trip_new_share_18x18_@2x.png │ │ │ │ └── trip_new_share_18x18_@3x.png │ │ │ ├── trip_new_share_hl_18x18_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── trip_new_share_hl_18x18_@1x.png │ │ │ │ ├── trip_new_share_hl_18x18_@2x.png │ │ │ │ └── trip_new_share_hl_18x18_@3x.png │ │ │ ├── trip_waypoint_action_button_bg.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── trip_waypoint_action_button_bg@2x~ipad.png │ │ │ │ └── trip_waypoint_action_button_bg~ipad.png │ │ │ └── tripdisplay_photocell_placeholder.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── tripdisplay_photocell_placeholder@2x.png │ │ ├── Contents.json │ │ ├── Empty │ │ │ ├── Contents.json │ │ │ └── EmptyButtonBg.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── 按钮 (1).png │ │ ├── TabBar │ │ │ ├── Contents.json │ │ │ ├── root_tab_add_btn.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── root_tab_add_btn@2x.png │ │ │ │ └── root_tab_add_btn@3x.png │ │ │ ├── root_tab_add_btn_select.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── root_tab_add_btn_select@2x.png │ │ │ │ └── root_tab_add_btn_select@3x.png │ │ │ ├── root_tab_discover_25x25_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── root_tab_discover_25x25_.png │ │ │ │ ├── root_tab_discover_25x25_@2x.png │ │ │ │ └── root_tab_discover_25x25_@3x.png │ │ │ ├── root_tab_discover_hl_25x25_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── root_tab_discover_hl_25x25_.png │ │ │ │ ├── root_tab_discover_hl_25x25_@2x.png │ │ │ │ └── root_tab_discover_hl_25x25_@3x.png │ │ │ ├── root_tab_longtrip_btn.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── root_tab_longtrip_btn@2x.png │ │ │ │ └── root_tab_longtrip_btn@3x.png │ │ │ ├── root_tab_me_25x25_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── root_tab_me_25x25_.png │ │ │ │ ├── root_tab_me_25x25_@2x.png │ │ │ │ └── root_tab_me_25x25_@3x.png │ │ │ ├── root_tab_me_hl_25x25_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── root_tab_me_hl_25x25_.png │ │ │ │ ├── root_tab_me_hl_25x25_@2x.png │ │ │ │ └── root_tab_me_hl_25x25_@3x.png │ │ │ ├── root_tab_msg_25x25_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── root_tab_msg_25x25_.png │ │ │ │ ├── root_tab_msg_25x25_@2x.png │ │ │ │ └── root_tab_msg_25x25_@3x.png │ │ │ ├── root_tab_msg_hl_25x25_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── root_tab_msg_hl_25x25_.png │ │ │ │ ├── root_tab_msg_hl_25x25_@2x.png │ │ │ │ └── root_tab_msg_hl_25x25_@3x.png │ │ │ ├── root_tab_recommand_25x25_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── root_tab_recommand_25x25_.png │ │ │ │ ├── root_tab_recommand_25x25_@2x.png │ │ │ │ └── root_tab_recommand_25x25_@3x.png │ │ │ ├── root_tab_recommand_hl_25x25_.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── root_tab_recommand_hl_25x25_.png │ │ │ │ ├── root_tab_recommand_hl_25x25_@2x.png │ │ │ │ └── root_tab_recommand_hl_25x25_@3x.png │ │ │ └── root_tab_spot_btn.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── root_tab_spot_btn@2x.png │ │ │ │ └── root_tab_spot_btn@3x.png │ │ └── tabbarRec │ │ │ ├── Contents.json │ │ │ ├── active_dot.imageset │ │ │ ├── Contents.json │ │ │ ├── active_dot.png │ │ │ ├── active_dot@2x.png │ │ │ └── active_dot@3x.png │ │ │ ├── chats_icon.imageset │ │ │ ├── Contents.json │ │ │ ├── chats_icon.png │ │ │ ├── chats_icon@2x.png │ │ │ └── chats_icon@3x.png │ │ │ ├── circle.imageset │ │ │ ├── Contents.json │ │ │ ├── circle.png │ │ │ ├── circle@2x.png │ │ │ └── circle@3x.png │ │ │ ├── circle_left.imageset │ │ │ ├── Contents.json │ │ │ ├── circle_left.png │ │ │ ├── circle_left@2x.png │ │ │ └── circle_left@3x.png │ │ │ ├── circle_right.imageset │ │ │ ├── Contents.json │ │ │ ├── circle_right.png │ │ │ ├── circle_right@2x.png │ │ │ └── circle_right@3x.png │ │ │ ├── circle_square.imageset │ │ │ ├── Contents.json │ │ │ ├── circle_square.png │ │ │ ├── circle_square@2x.png │ │ │ └── circle_square@3x.png │ │ │ ├── edit_icon.imageset │ │ │ ├── Contents.json │ │ │ ├── edit_icon.png │ │ │ ├── edit_icon@2x.png │ │ │ └── edit_icon@3x.png │ │ │ ├── nearby_icon.imageset │ │ │ ├── Contents.json │ │ │ ├── nearby_icon.png │ │ │ ├── nearby_icon@2x.png │ │ │ └── nearby_icon@3x.png │ │ │ ├── new_chat_icon.imageset │ │ │ ├── Contents.json │ │ │ ├── new_chat_icon.png │ │ │ ├── new_chat_icon@2x.png │ │ │ └── new_chat_icon@3x.png │ │ │ ├── plus_icon.imageset │ │ │ ├── Contents.json │ │ │ ├── plus_icon.png │ │ │ ├── plus_icon@2x.png │ │ │ └── plus_icon@3x.png │ │ │ ├── profile_icon.imageset │ │ │ ├── Contents.json │ │ │ ├── profile_icon.png │ │ │ ├── profile_icon@2x.png │ │ │ └── profile_icon@3x.png │ │ │ ├── search_icon.imageset │ │ │ ├── Contents.json │ │ │ ├── search_icon.png │ │ │ ├── search_icon@2x.png │ │ │ └── search_icon@3x.png │ │ │ ├── settings_icon.imageset │ │ │ ├── Contents.json │ │ │ ├── settings_icon.png │ │ │ ├── settings_icon@2x.png │ │ │ └── settings_icon@3x.png │ │ │ └── side_button.imageset │ │ │ ├── Contents.json │ │ │ ├── side_button.png │ │ │ ├── side_button@2x.png │ │ │ └── side_button@3x.png │ ├── Base.lproj │ │ └── LaunchScreen.storyboard │ └── HeartTripPrefixHeader.pch ├── Classes │ ├── AppModules │ │ ├── HTApplicationService.h │ │ ├── HTApplicationService.m │ │ ├── HTUIWindowService.h │ │ └── HTUIWindowService.m │ ├── CityTravel │ │ ├── Controller │ │ │ ├── HTCityTravelDetailController.h │ │ │ ├── HTCityTravelDetailController.m │ │ │ ├── HTCityTravelNotesASDKController.h │ │ │ ├── HTCityTravelNotesASDKController.m │ │ │ ├── HTCityTravelNotesController.h │ │ │ └── HTCityTravelNotesController.m │ │ ├── Model │ │ │ ├── HTBannerModel.h │ │ │ ├── HTBannerModel.m │ │ │ ├── HTCityTravelItemModel.h │ │ │ └── HTCityTravelItemModel.m │ │ ├── View │ │ │ ├── HTBannerItemView.h │ │ │ ├── HTBannerItemView.m │ │ │ ├── HTCityTravelBannerView.h │ │ │ ├── HTCityTravelBannerView.m │ │ │ ├── HTCityTravelCell.h │ │ │ └── HTCityTravelCell.m │ │ └── ViewModel │ │ │ ├── HTCityTravelDetailViewModel.h │ │ │ ├── HTCityTravelDetailViewModel.m │ │ │ ├── HTCityTravelNotesViewModel.h │ │ │ └── HTCityTravelNotesViewModel.m │ ├── Find │ │ ├── Controller │ │ │ ├── HTFindASDKViewController.h │ │ │ ├── HTFindASDKViewController.m │ │ │ ├── HTFindViewController.h │ │ │ └── HTFindViewController.m │ │ ├── Model │ │ │ ├── HTFindFeedModel.h │ │ │ ├── HTFindFeedModel.m │ │ │ ├── HTFindVideosModel.h │ │ │ └── HTFindVideosModel.m │ │ ├── View │ │ │ ├── HTFindFeedCell.h │ │ │ ├── HTFindFeedCell.m │ │ │ ├── HTFindVideoItemView.h │ │ │ ├── HTFindVideoItemView.m │ │ │ ├── HTFindVideoView.h │ │ │ └── HTFindVideoView.m │ │ └── ViewModel │ │ │ ├── HTFindViewModel.h │ │ │ └── HTFindViewModel.m │ └── Main │ │ ├── HTFoldingTabBarControllerConfig.h │ │ ├── HTFoldingTabBarControllerConfig.m │ │ ├── HTNavigationController.h │ │ └── HTNavigationController.m ├── Info.plist ├── Resource │ └── LottieJson │ │ ├── Travel_Nodata.json │ │ └── loadingHUD.json ├── UIKitComponents │ ├── HTHUD │ │ ├── HTHUD+EmptyView.h │ │ ├── HTHUD+EmptyView.m │ │ ├── HTHUD.h │ │ └── HTHUD.m │ ├── HTTipsView │ │ ├── HTActionTipsView.h │ │ ├── HTActionTipsView.m │ │ ├── HTBaseBottomTipView.h │ │ ├── HTBaseBottomTipView.m │ │ ├── HTBaseCenterTipView.h │ │ ├── HTBaseCenterTipView.m │ │ ├── HTShowTipsView.h │ │ ├── HTShowTipsView.m │ │ └── HTTipsViewKit.h │ └── SwiftAdapter │ │ ├── HTDarkModeInit.swift │ │ ├── HTLottieView.swift │ │ └── HeartTrip-Bridging-Header.h ├── Util │ ├── .DS_Store │ ├── Category │ │ ├── HTCategory.h │ │ └── UIKit │ │ │ ├── UICollectionView+Refresh.h │ │ │ ├── UICollectionView+Refresh.m │ │ │ ├── UIImage+HTRoundImage.h │ │ │ ├── UIImage+HTRoundImage.m │ │ │ ├── UIImageView+HTRoundImage.h │ │ │ ├── UIImageView+HTRoundImage.m │ │ │ ├── UIScrollView+Refresh.h │ │ │ ├── UIScrollView+Refresh.m │ │ │ ├── UITableView+Refresh.h │ │ │ └── UITableView+Refresh.m │ ├── Configure │ │ ├── HTConfig.h │ │ ├── HTConst.h │ │ └── HTConst.m │ ├── Log │ │ ├── HTLogFormatter.h │ │ └── HTLogFormatter.m │ ├── Networking │ │ ├── HTRequestList.h │ │ ├── HTRequestList.m │ │ ├── RACCommand+Request.h │ │ ├── RACCommand+Request.m │ │ ├── RACSignal+Request.h │ │ └── RACSignal+Request.m │ ├── RouteMediator │ │ ├── .DS_Store │ │ ├── AppModule │ │ │ ├── AppModule │ │ │ │ ├── HTAppDelegate.h │ │ │ │ ├── HTAppDelegate.m │ │ │ │ ├── QTAppEvents.h │ │ │ │ ├── QTAppEvents.m │ │ │ │ ├── QTAppModule.h │ │ │ │ ├── QTAppModuleManager.h │ │ │ │ ├── QTAppModuleManager.m │ │ │ │ └── QTEventBus+AppModule.h │ │ │ └── Core │ │ │ │ ├── NSNotification+QTEvent.h │ │ │ │ ├── NSNotification+QTEvent.m │ │ │ │ ├── NSObject+QTEventBus.h │ │ │ │ ├── NSObject+QTEventBus.m │ │ │ │ ├── NSObject+QTEventBus_Private.h │ │ │ │ ├── NSObject+QTEventBus_Private.m │ │ │ │ ├── NSString+QTEevnt.h │ │ │ │ ├── NSString+QTEevnt.m │ │ │ │ ├── QTDisposeBag.h │ │ │ │ ├── QTDisposeBag.m │ │ │ │ ├── QTEventBus.h │ │ │ │ ├── QTEventBus.m │ │ │ │ ├── QTEventBusCollection.h │ │ │ │ ├── QTEventBusCollection.m │ │ │ │ ├── QTEventTypes.h │ │ │ │ ├── QTJsonEvent.h │ │ │ │ └── QTJsonEvent.m │ │ └── URLRouteMediator │ │ │ ├── .DS_Store │ │ │ ├── Base │ │ │ ├── HTBaseEnum.h │ │ │ ├── HTBaseModel.h │ │ │ ├── HTBaseModel.m │ │ │ ├── HTBaseViewController.h │ │ │ ├── HTBaseViewController.m │ │ │ ├── HTBaseViewModel.h │ │ │ ├── HTBaseViewModel.m │ │ │ ├── HTViewControllerProtocol.h │ │ │ └── HTViewModelProtocol.h │ │ │ ├── ModelParser │ │ │ ├── HTModelParserProtocol.h │ │ │ ├── NSObject+HTModelParser.h │ │ │ └── NSObject+HTModelParser.m │ │ │ ├── Route │ │ │ ├── HTViewControllerRouteProtocol.h │ │ │ ├── NSObject+HTRouteProtocol.h │ │ │ ├── NSObject+HTRouteProtocol.m │ │ │ ├── RACCommand+HTRoute.h │ │ │ ├── RACCommand+HTRoute.m │ │ │ ├── RACSignal+HTRoute.h │ │ │ └── RACSignal+HTRoute.m │ │ │ └── URLParser │ │ │ ├── HTURLRouteAction.h │ │ │ ├── HTURLRouteAction.m │ │ │ ├── HTURLRouteParser.h │ │ │ ├── HTURLRouteParser.m │ │ │ └── HTURLRouteParserProtocol.h │ └── Utils │ │ ├── HTUtilsMethod.h │ │ └── HTUtilsMethod.m ├── Vendor │ ├── FDFullscreenPopGesture │ │ ├── UINavigationController+FDFullscreenPopGesture.h │ │ └── UINavigationController+FDFullscreenPopGesture.m │ ├── MasonryExtentions │ │ ├── MASConstraintMaker+Forbearance.h │ │ ├── MASConstraintMaker+Forbearance.m │ │ ├── MASForbearance.h │ │ ├── MASForbearance.m │ │ ├── NSArray+Sudoku.h │ │ ├── NSArray+Sudoku.m │ │ ├── UIView+Forbearance.h │ │ └── UIView+Forbearance.m │ ├── NSObjectSafe │ │ ├── NSObjectSafe.h │ │ └── NSObjectSafe.m │ └── Reachability │ │ ├── Reachability.h │ │ └── Reachability.m └── main.m ├── Podfile ├── Podfile.lock ├── README.md └── ReadmeImage ├── .DS_Store ├── MVVM.png ├── city.png ├── find.png └── finddetail.png /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/.DS_Store -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 4 | 5 | ## Build generated 6 | build/ 7 | DerivedData/ 8 | 9 | ## Various settings 10 | *.pbxuser 11 | !default.pbxuser 12 | *.mode1v3 13 | !default.mode1v3 14 | *.mode2v3 15 | !default.mode2v3 16 | *.perspectivev3 17 | !default.perspectivev3 18 | xcuserdata/ 19 | 20 | ## Other 21 | *.moved-aside 22 | *.xcuserstate 23 | 24 | ## Obj-C/Swift specific 25 | *.hmap 26 | *.ipa 27 | *.dSYM.zip 28 | *.dSYM 29 | 30 | # CocoaPods 31 | # 32 | # We recommend against adding the Pods directory to your .gitignore. However 33 | # you should judge for yourself, the pros and cons are mentioned at: 34 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 35 | # 36 | Pods/ 37 | 38 | # Carthage 39 | # 40 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 41 | # Carthage/Checkouts 42 | 43 | Carthage/Build 44 | 45 | # fastlane 46 | # 47 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 48 | # screenshots whenever they are needed. 49 | # For more information about the recommended setup visit: 50 | # https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Gitignore.md 51 | 52 | fastlane/report.xml 53 | fastlane/screenshots 54 | 55 | #Code Injection 56 | # 57 | # After new code Injection tools there's a generated folder /iOSInjectionProject 58 | # https://github.com/johnno1962/injectionforxcode 59 | 60 | iOSInjectionProject/ 61 | -------------------------------------------------------------------------------- /HeartTrip.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /HeartTrip.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /HeartTrip.xcodeproj/project.xcworkspace/xcuserdata/CoderBear.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip.xcodeproj/project.xcworkspace/xcuserdata/CoderBear.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /HeartTrip.xcodeproj/xcuserdata/CoderBear.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | HeartTrip.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | CE30C49E1D82CA2E0028CB73 16 | 17 | primary 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /HeartTrip.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /HeartTrip.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /HeartTrip/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/.DS_Store -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/.DS_Store -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/AppIcon.appiconset/AppIcon20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/AppIcon.appiconset/AppIcon20x20@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/AppIcon.appiconset/AppIcon20x20@2x~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/AppIcon.appiconset/AppIcon20x20@2x~ipad.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/AppIcon.appiconset/AppIcon20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/AppIcon.appiconset/AppIcon20x20@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/AppIcon.appiconset/AppIcon20x20~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/AppIcon.appiconset/AppIcon20x20~ipad.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/AppIcon.appiconset/AppIcon29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/AppIcon.appiconset/AppIcon29x29@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/AppIcon.appiconset/AppIcon29x29@2x~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/AppIcon.appiconset/AppIcon29x29@2x~ipad.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/AppIcon.appiconset/AppIcon29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/AppIcon.appiconset/AppIcon29x29@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/AppIcon.appiconset/AppIcon29x29~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/AppIcon.appiconset/AppIcon29x29~ipad.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/AppIcon.appiconset/AppIcon40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/AppIcon.appiconset/AppIcon40x40@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/AppIcon.appiconset/AppIcon40x40@2x~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/AppIcon.appiconset/AppIcon40x40@2x~ipad.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/AppIcon.appiconset/AppIcon40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/AppIcon.appiconset/AppIcon40x40@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/AppIcon.appiconset/AppIcon40x40~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/AppIcon.appiconset/AppIcon40x40~ipad.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/AppIcon.appiconset/AppIcon60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/AppIcon.appiconset/AppIcon60x60@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/AppIcon.appiconset/AppIcon60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/AppIcon.appiconset/AppIcon60x60@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/AppIcon.appiconset/AppIcon76x76@2x~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/AppIcon.appiconset/AppIcon76x76@2x~ipad.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/AppIcon.appiconset/AppIcon76x76~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/AppIcon.appiconset/AppIcon76x76~ipad.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/AppIcon.appiconset/AppIcon83.5x83.5@2x~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/AppIcon.appiconset/AppIcon83.5x83.5@2x~ipad.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/FindFeedPlaceholder.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "FindFeedPlaceholder@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/FindFeedPlaceholder.imageset/FindFeedPlaceholder@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/FindFeedPlaceholder.imageset/FindFeedPlaceholder@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/VideoPlaceholder.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "VideoPlaceholder@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/VideoPlaceholder.imageset/VideoPlaceholder@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/VideoPlaceholder.imageset/VideoPlaceholder@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/auth_avatar_placeholder_image_82x82_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "auth_avatar_placeholder_image_82x82_@1x.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "auth_avatar_placeholder_image_82x82_@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/auth_avatar_placeholder_image_82x82_.imageset/auth_avatar_placeholder_image_82x82_@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/auth_avatar_placeholder_image_82x82_.imageset/auth_avatar_placeholder_image_82x82_@1x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/auth_avatar_placeholder_image_82x82_.imageset/auth_avatar_placeholder_image_82x82_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/auth_avatar_placeholder_image_82x82_.imageset/auth_avatar_placeholder_image_82x82_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/avatar_placeholder.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "avatar_placeholder@1x.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "avatar_placeholder@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "avatar_placeholder@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/avatar_placeholder.imageset/avatar_placeholder@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/avatar_placeholder.imageset/avatar_placeholder@1x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/avatar_placeholder.imageset/avatar_placeholder@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/avatar_placeholder.imageset/avatar_placeholder@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/avatar_placeholder.imageset/avatar_placeholder@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/avatar_placeholder.imageset/avatar_placeholder@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/avatar_placeholder_26_26x26_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "avatar_placeholder_26_26x26_@1x.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "avatar_placeholder_26_26x26_@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/avatar_placeholder_26_26x26_.imageset/avatar_placeholder_26_26x26_@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/avatar_placeholder_26_26x26_.imageset/avatar_placeholder_26_26x26_@1x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/avatar_placeholder_26_26x26_.imageset/avatar_placeholder_26_26x26_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/avatar_placeholder_26_26x26_.imageset/avatar_placeholder_26_26x26_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/breadTrip_logo.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "breadTrip_logo.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/breadTrip_logo.imageset/breadTrip_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/breadTrip_logo.imageset/breadTrip_logo.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/btn_start_20x20_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "btn_start_20x20_@1x.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "btn_start_20x20_@2x.png", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/btn_start_20x20_.imageset/btn_start_20x20_@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/btn_start_20x20_.imageset/btn_start_20x20_@1x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/btn_start_20x20_.imageset/btn_start_20x20_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/btn_start_20x20_.imageset/btn_start_20x20_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/discovery_comment_23x22_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "discovery_comment_23x22_@1x.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "discovery_comment_23x22_@2x.png", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "filename" : "discovery_comment_23x22_@3x.png", 15 | "idiom" : "universal", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "author" : "xcode", 21 | "version" : 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/discovery_comment_23x22_.imageset/discovery_comment_23x22_@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/discovery_comment_23x22_.imageset/discovery_comment_23x22_@1x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/discovery_comment_23x22_.imageset/discovery_comment_23x22_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/discovery_comment_23x22_.imageset/discovery_comment_23x22_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/discovery_comment_23x22_.imageset/discovery_comment_23x22_@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/discovery_comment_23x22_.imageset/discovery_comment_23x22_@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/discovery_like_more_34x34_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "discovery_like_more_34x34_@1x.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "discovery_like_more_34x34_@2x.png", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "filename" : "discovery_like_more_34x34_@3x.png", 15 | "idiom" : "universal", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "author" : "xcode", 21 | "version" : 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/discovery_like_more_34x34_.imageset/discovery_like_more_34x34_@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/discovery_like_more_34x34_.imageset/discovery_like_more_34x34_@1x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/discovery_like_more_34x34_.imageset/discovery_like_more_34x34_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/discovery_like_more_34x34_.imageset/discovery_like_more_34x34_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/discovery_like_more_34x34_.imageset/discovery_like_more_34x34_@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/discovery_like_more_34x34_.imageset/discovery_like_more_34x34_@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/feed_comment_more_26x26_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "feed_comment_more_26x26_@1x.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "feed_comment_more_26x26_@2x.png", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/feed_comment_more_26x26_.imageset/feed_comment_more_26x26_@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/feed_comment_more_26x26_.imageset/feed_comment_more_26x26_@1x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/feed_comment_more_26x26_.imageset/feed_comment_more_26x26_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/feed_comment_more_26x26_.imageset/feed_comment_more_26x26_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/gallery_back_18x17_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "gallery_back_18x17_@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 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/gallery_back_18x17_.imageset/gallery_back_18x17_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/gallery_back_18x17_.imageset/gallery_back_18x17_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/gallery_back_19x18_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x" 10 | }, 11 | { 12 | "idiom" : "universal", 13 | "filename" : "gallery_back_19x18_@3x.png", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/gallery_back_19x18_.imageset/gallery_back_19x18_@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/gallery_back_19x18_.imageset/gallery_back_19x18_@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/gallery_back_hl_18x17_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "gallery_back_hl_18x17_@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 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/gallery_back_hl_18x17_.imageset/gallery_back_hl_18x17_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/gallery_back_hl_18x17_.imageset/gallery_back_hl_18x17_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/gallery_back_hl_19x18_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x" 10 | }, 11 | { 12 | "idiom" : "universal", 13 | "filename" : "gallery_back_hl_19x18_@3x.png", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/gallery_back_hl_19x18_.imageset/gallery_back_hl_19x18_@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/gallery_back_hl_19x18_.imageset/gallery_back_hl_19x18_@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/icon_nav_back_white_19x18_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "icon_nav_back_white_19x18_@1x.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "icon_nav_back_white_19x18_@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "icon_nav_back_white_19x18_@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/icon_nav_back_white_19x18_.imageset/icon_nav_back_white_19x18_@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/icon_nav_back_white_19x18_.imageset/icon_nav_back_white_19x18_@1x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/icon_nav_back_white_19x18_.imageset/icon_nav_back_white_19x18_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/icon_nav_back_white_19x18_.imageset/icon_nav_back_white_19x18_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/icon_nav_back_white_19x18_.imageset/icon_nav_back_white_19x18_@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/icon_nav_back_white_19x18_.imageset/icon_nav_back_white_19x18_@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/icon_nav_back_white_hl_19x18_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "icon_nav_back_white_hl_19x18_@1x.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "icon_nav_back_white_hl_19x18_@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "icon_nav_back_white_hl_19x18_@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/icon_nav_back_white_hl_19x18_.imageset/icon_nav_back_white_hl_19x18_@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/icon_nav_back_white_hl_19x18_.imageset/icon_nav_back_white_hl_19x18_@1x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/icon_nav_back_white_hl_19x18_.imageset/icon_nav_back_white_hl_19x18_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/icon_nav_back_white_hl_19x18_.imageset/icon_nav_back_white_hl_19x18_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/icon_nav_back_white_hl_19x18_.imageset/icon_nav_back_white_hl_19x18_@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/icon_nav_back_white_hl_19x18_.imageset/icon_nav_back_white_hl_19x18_@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/icon_nav_next_button_21x20_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "icon_nav_next_button_21x20_@1x.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "icon_nav_next_button_21x20_@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/icon_nav_next_button_21x20_.imageset/icon_nav_next_button_21x20_@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/icon_nav_next_button_21x20_.imageset/icon_nav_next_button_21x20_@1x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/icon_nav_next_button_21x20_.imageset/icon_nav_next_button_21x20_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/icon_nav_next_button_21x20_.imageset/icon_nav_next_button_21x20_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/icon_no_nav_back_button_19x18_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "icon_no_nav_back_button_19x18_@1x.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "icon_no_nav_back_button_19x18_@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "icon_no_nav_back_button_19x18_@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/icon_no_nav_back_button_19x18_.imageset/icon_no_nav_back_button_19x18_@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/icon_no_nav_back_button_19x18_.imageset/icon_no_nav_back_button_19x18_@1x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/icon_no_nav_back_button_19x18_.imageset/icon_no_nav_back_button_19x18_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/icon_no_nav_back_button_19x18_.imageset/icon_no_nav_back_button_19x18_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/icon_no_nav_back_button_19x18_.imageset/icon_no_nav_back_button_19x18_@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/icon_no_nav_back_button_19x18_.imageset/icon_no_nav_back_button_19x18_@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/im_avatar_placeholder_46x46_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "im_avatar_placeholder_46x46_@1x.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "im_avatar_placeholder_46x46_@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "im_avatar_placeholder_46x46_@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/im_avatar_placeholder_46x46_.imageset/im_avatar_placeholder_46x46_@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/im_avatar_placeholder_46x46_.imageset/im_avatar_placeholder_46x46_@1x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/im_avatar_placeholder_46x46_.imageset/im_avatar_placeholder_46x46_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/im_avatar_placeholder_46x46_.imageset/im_avatar_placeholder_46x46_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/im_avatar_placeholder_46x46_.imageset/im_avatar_placeholder_46x46_@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/im_avatar_placeholder_46x46_.imageset/im_avatar_placeholder_46x46_@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/navbar_back_19x18_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "navbar_back_19x18_@1x.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "navbar_back_19x18_@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "navbar_back_19x18_@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/navbar_back_19x18_.imageset/navbar_back_19x18_@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/navbar_back_19x18_.imageset/navbar_back_19x18_@1x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/navbar_back_19x18_.imageset/navbar_back_19x18_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/navbar_back_19x18_.imageset/navbar_back_19x18_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/navbar_back_19x18_.imageset/navbar_back_19x18_@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/navbar_back_19x18_.imageset/navbar_back_19x18_@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/navbar_back_hl_19x18_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "navbar_back_hl_19x18_@1x.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "navbar_back_hl_19x18_@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "navbar_back_hl_19x18_@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/navbar_back_hl_19x18_.imageset/navbar_back_hl_19x18_@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/navbar_back_hl_19x18_.imageset/navbar_back_hl_19x18_@1x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/navbar_back_hl_19x18_.imageset/navbar_back_hl_19x18_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/navbar_back_hl_19x18_.imageset/navbar_back_hl_19x18_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/navbar_back_hl_19x18_.imageset/navbar_back_hl_19x18_@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/navbar_back_hl_19x18_.imageset/navbar_back_hl_19x18_@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/navbar_blank64_3x64_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "navbar_blank64_3x64_@1x.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "navbar_blank64_3x64_@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "navbar_blank64_3x64_@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/navbar_blank64_3x64_.imageset/navbar_blank64_3x64_@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/navbar_blank64_3x64_.imageset/navbar_blank64_3x64_@1x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/navbar_blank64_3x64_.imageset/navbar_blank64_3x64_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/navbar_blank64_3x64_.imageset/navbar_blank64_3x64_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/navbar_blank64_3x64_.imageset/navbar_blank64_3x64_@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/navbar_blank64_3x64_.imageset/navbar_blank64_3x64_@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/navbar_blank_213x22_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x" 10 | }, 11 | { 12 | "idiom" : "universal", 13 | "filename" : "navbar_blank_213x22_@3x.png", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/navbar_blank_213x22_.imageset/navbar_blank_213x22_@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/navbar_blank_213x22_.imageset/navbar_blank_213x22_@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/navbar_blank_320x44_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "navbar_blank_320x44_@1x.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "navbar_blank_320x44_@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/navbar_blank_320x44_.imageset/navbar_blank_320x44_@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/navbar_blank_320x44_.imageset/navbar_blank_320x44_@1x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/navbar_blank_320x44_.imageset/navbar_blank_320x44_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/navbar_blank_320x44_.imageset/navbar_blank_320x44_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/navbar_blank_statusbar_213x10_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x" 10 | }, 11 | { 12 | "idiom" : "universal", 13 | "filename" : "navbar_blank_statusbar_213x10_@3x.png", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/navbar_blank_statusbar_213x10_.imageset/navbar_blank_statusbar_213x10_@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/navbar_blank_statusbar_213x10_.imageset/navbar_blank_statusbar_213x10_@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/navbar_blank_statusbar_320x20_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "navbar_blank_statusbar_320x20_@1x.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "navbar_blank_statusbar_320x20_@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/navbar_blank_statusbar_320x20_.imageset/navbar_blank_statusbar_320x20_@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/navbar_blank_statusbar_320x20_.imageset/navbar_blank_statusbar_320x20_@1x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/navbar_blank_statusbar_320x20_.imageset/navbar_blank_statusbar_320x20_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/navbar_blank_statusbar_320x20_.imageset/navbar_blank_statusbar_320x20_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/photo_placeholder_140x105_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "photo_placeholder_140x105_.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "photo_placeholder_140x105_@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "photo_placeholder_140x105_@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/photo_placeholder_140x105_.imageset/photo_placeholder_140x105_.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/photo_placeholder_140x105_.imageset/photo_placeholder_140x105_.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/photo_placeholder_140x105_.imageset/photo_placeholder_140x105_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/photo_placeholder_140x105_.imageset/photo_placeholder_140x105_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/photo_placeholder_140x105_.imageset/photo_placeholder_140x105_@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/photo_placeholder_140x105_.imageset/photo_placeholder_140x105_@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/poi_bg_placeholder.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "poi_bg_placeholder@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 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/poi_bg_placeholder.imageset/poi_bg_placeholder@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/poi_bg_placeholder.imageset/poi_bg_placeholder@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/tabbar_user_button_image_22x22_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "tabbar_user_button_image_22x22_@1x.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "tabbar_user_button_image_22x22_@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/tabbar_user_button_image_22x22_.imageset/tabbar_user_button_image_22x22_@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/tabbar_user_button_image_22x22_.imageset/tabbar_user_button_image_22x22_@1x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/tabbar_user_button_image_22x22_.imageset/tabbar_user_button_image_22x22_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/tabbar_user_button_image_22x22_.imageset/tabbar_user_button_image_22x22_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/tabbar_user_button_image_hl_22x22_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "tabbar_user_button_image_hl_22x22_@1x.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "tabbar_user_button_image_hl_22x22_@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/tabbar_user_button_image_hl_22x22_.imageset/tabbar_user_button_image_hl_22x22_@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/tabbar_user_button_image_hl_22x22_.imageset/tabbar_user_button_image_hl_22x22_@1x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/tabbar_user_button_image_hl_22x22_.imageset/tabbar_user_button_image_hl_22x22_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/tabbar_user_button_image_hl_22x22_.imageset/tabbar_user_button_image_hl_22x22_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_map_play_60x34_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "trip_map_play_60x34_@1x.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "trip_map_play_60x34_@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "trip_map_play_60x34_@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_map_play_60x34_.imageset/trip_map_play_60x34_@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_map_play_60x34_.imageset/trip_map_play_60x34_@1x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_map_play_60x34_.imageset/trip_map_play_60x34_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_map_play_60x34_.imageset/trip_map_play_60x34_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_map_play_60x34_.imageset/trip_map_play_60x34_@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_map_play_60x34_.imageset/trip_map_play_60x34_@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_map_shadow_3x80_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "trip_map_shadow_3x80_@1x.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "trip_map_shadow_3x80_@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "trip_map_shadow_3x80_@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_map_shadow_3x80_.imageset/trip_map_shadow_3x80_@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_map_shadow_3x80_.imageset/trip_map_shadow_3x80_@1x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_map_shadow_3x80_.imageset/trip_map_shadow_3x80_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_map_shadow_3x80_.imageset/trip_map_shadow_3x80_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_map_shadow_3x80_.imageset/trip_map_shadow_3x80_@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_map_shadow_3x80_.imageset/trip_map_shadow_3x80_@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_btn_back_18x18_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x" 10 | }, 11 | { 12 | "idiom" : "universal", 13 | "filename" : "trip_new_btn_back_18x18_@3x.png", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_btn_back_18x18_.imageset/trip_new_btn_back_18x18_@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_new_btn_back_18x18_.imageset/trip_new_btn_back_18x18_@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_btn_back_19x18_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "trip_new_btn_back_19x18_@1x.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "trip_new_btn_back_19x18_@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_btn_back_19x18_.imageset/trip_new_btn_back_19x18_@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_new_btn_back_19x18_.imageset/trip_new_btn_back_19x18_@1x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_btn_back_19x18_.imageset/trip_new_btn_back_19x18_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_new_btn_back_19x18_.imageset/trip_new_btn_back_19x18_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_btn_back_hl_18x18_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x" 10 | }, 11 | { 12 | "idiom" : "universal", 13 | "filename" : "trip_new_btn_back_hl_18x18_@3x.png", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_btn_back_hl_18x18_.imageset/trip_new_btn_back_hl_18x18_@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_new_btn_back_hl_18x18_.imageset/trip_new_btn_back_hl_18x18_@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_btn_back_hl_19x18_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "trip_new_btn_back_hl_19x18_@1x.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "trip_new_btn_back_hl_19x18_@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_btn_back_hl_19x18_.imageset/trip_new_btn_back_hl_19x18_@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_new_btn_back_hl_19x18_.imageset/trip_new_btn_back_hl_19x18_@1x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_btn_back_hl_19x18_.imageset/trip_new_btn_back_hl_19x18_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_new_btn_back_hl_19x18_.imageset/trip_new_btn_back_hl_19x18_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_comment_20x19_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "trip_new_comment_20x19_@1x.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "trip_new_comment_20x19_@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "trip_new_comment_20x19_@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_comment_20x19_.imageset/trip_new_comment_20x19_@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_new_comment_20x19_.imageset/trip_new_comment_20x19_@1x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_comment_20x19_.imageset/trip_new_comment_20x19_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_new_comment_20x19_.imageset/trip_new_comment_20x19_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_comment_20x19_.imageset/trip_new_comment_20x19_@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_new_comment_20x19_.imageset/trip_new_comment_20x19_@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_comment_hl_20x19_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "trip_new_comment_hl_20x19_@1x.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "trip_new_comment_hl_20x19_@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "trip_new_comment_hl_20x19_@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_comment_hl_20x19_.imageset/trip_new_comment_hl_20x19_@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_new_comment_hl_20x19_.imageset/trip_new_comment_hl_20x19_@1x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_comment_hl_20x19_.imageset/trip_new_comment_hl_20x19_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_new_comment_hl_20x19_.imageset/trip_new_comment_hl_20x19_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_comment_hl_20x19_.imageset/trip_new_comment_hl_20x19_@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_new_comment_hl_20x19_.imageset/trip_new_comment_hl_20x19_@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_download_24x18_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "trip_new_download_24x18_@1x.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "trip_new_download_24x18_@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "trip_new_download_24x18_@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_download_24x18_.imageset/trip_new_download_24x18_@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_new_download_24x18_.imageset/trip_new_download_24x18_@1x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_download_24x18_.imageset/trip_new_download_24x18_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_new_download_24x18_.imageset/trip_new_download_24x18_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_download_24x18_.imageset/trip_new_download_24x18_@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_new_download_24x18_.imageset/trip_new_download_24x18_@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_edit_18x18_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x" 10 | }, 11 | { 12 | "idiom" : "universal", 13 | "filename" : "trip_new_edit_18x18_@3x.png", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_edit_18x18_.imageset/trip_new_edit_18x18_@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_new_edit_18x18_.imageset/trip_new_edit_18x18_@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_edit_19x19_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "trip_new_edit_19x19_@1x.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "trip_new_edit_19x19_@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_edit_19x19_.imageset/trip_new_edit_19x19_@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_new_edit_19x19_.imageset/trip_new_edit_19x19_@1x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_edit_19x19_.imageset/trip_new_edit_19x19_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_new_edit_19x19_.imageset/trip_new_edit_19x19_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_edit_hl_18x18_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x" 10 | }, 11 | { 12 | "idiom" : "universal", 13 | "filename" : "trip_new_edit_hl_18x18_@3x.png", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_edit_hl_18x18_.imageset/trip_new_edit_hl_18x18_@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_new_edit_hl_18x18_.imageset/trip_new_edit_hl_18x18_@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_edit_hl_19x19_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "trip_new_edit_hl_19x19_@1x.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "trip_new_edit_hl_19x19_@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_edit_hl_19x19_.imageset/trip_new_edit_hl_19x19_@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_new_edit_hl_19x19_.imageset/trip_new_edit_hl_19x19_@1x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_edit_hl_19x19_.imageset/trip_new_edit_hl_19x19_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_new_edit_hl_19x19_.imageset/trip_new_edit_hl_19x19_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_share_18x18_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "trip_new_share_18x18_@1x.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "trip_new_share_18x18_@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "trip_new_share_18x18_@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_share_18x18_.imageset/trip_new_share_18x18_@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_new_share_18x18_.imageset/trip_new_share_18x18_@1x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_share_18x18_.imageset/trip_new_share_18x18_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_new_share_18x18_.imageset/trip_new_share_18x18_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_share_18x18_.imageset/trip_new_share_18x18_@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_new_share_18x18_.imageset/trip_new_share_18x18_@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_share_hl_18x18_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "trip_new_share_hl_18x18_@1x.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "trip_new_share_hl_18x18_@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "trip_new_share_hl_18x18_@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_share_hl_18x18_.imageset/trip_new_share_hl_18x18_@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_new_share_hl_18x18_.imageset/trip_new_share_hl_18x18_@1x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_share_hl_18x18_.imageset/trip_new_share_hl_18x18_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_new_share_hl_18x18_.imageset/trip_new_share_hl_18x18_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_new_share_hl_18x18_.imageset/trip_new_share_hl_18x18_@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_new_share_hl_18x18_.imageset/trip_new_share_hl_18x18_@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_waypoint_action_button_bg.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "ipad", 5 | "filename" : "trip_waypoint_action_button_bg~ipad.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "ipad", 10 | "filename" : "trip_waypoint_action_button_bg@2x~ipad.png", 11 | "scale" : "2x" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_waypoint_action_button_bg.imageset/trip_waypoint_action_button_bg@2x~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_waypoint_action_button_bg.imageset/trip_waypoint_action_button_bg@2x~ipad.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/trip_waypoint_action_button_bg.imageset/trip_waypoint_action_button_bg~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/trip_waypoint_action_button_bg.imageset/trip_waypoint_action_button_bg~ipad.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/tripdisplay_photocell_placeholder.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "tripdisplay_photocell_placeholder@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 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/City/tripdisplay_photocell_placeholder.imageset/tripdisplay_photocell_placeholder@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/City/tripdisplay_photocell_placeholder.imageset/tripdisplay_photocell_placeholder@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/Empty/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/Empty/EmptyButtonBg.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "按钮 (1).png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/Empty/EmptyButtonBg.imageset/按钮 (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/Empty/EmptyButtonBg.imageset/按钮 (1).png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_add_btn.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "root_tab_add_btn@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "root_tab_add_btn@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_add_btn.imageset/root_tab_add_btn@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/TabBar/root_tab_add_btn.imageset/root_tab_add_btn@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_add_btn.imageset/root_tab_add_btn@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/TabBar/root_tab_add_btn.imageset/root_tab_add_btn@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_add_btn_select.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "root_tab_add_btn_select@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "root_tab_add_btn_select@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_add_btn_select.imageset/root_tab_add_btn_select@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/TabBar/root_tab_add_btn_select.imageset/root_tab_add_btn_select@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_add_btn_select.imageset/root_tab_add_btn_select@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/TabBar/root_tab_add_btn_select.imageset/root_tab_add_btn_select@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_discover_25x25_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "root_tab_discover_25x25_.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "root_tab_discover_25x25_@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "root_tab_discover_25x25_@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_discover_25x25_.imageset/root_tab_discover_25x25_.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/TabBar/root_tab_discover_25x25_.imageset/root_tab_discover_25x25_.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_discover_25x25_.imageset/root_tab_discover_25x25_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/TabBar/root_tab_discover_25x25_.imageset/root_tab_discover_25x25_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_discover_25x25_.imageset/root_tab_discover_25x25_@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/TabBar/root_tab_discover_25x25_.imageset/root_tab_discover_25x25_@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_discover_hl_25x25_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "root_tab_discover_hl_25x25_.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "root_tab_discover_hl_25x25_@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "root_tab_discover_hl_25x25_@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_discover_hl_25x25_.imageset/root_tab_discover_hl_25x25_.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/TabBar/root_tab_discover_hl_25x25_.imageset/root_tab_discover_hl_25x25_.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_discover_hl_25x25_.imageset/root_tab_discover_hl_25x25_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/TabBar/root_tab_discover_hl_25x25_.imageset/root_tab_discover_hl_25x25_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_discover_hl_25x25_.imageset/root_tab_discover_hl_25x25_@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/TabBar/root_tab_discover_hl_25x25_.imageset/root_tab_discover_hl_25x25_@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_longtrip_btn.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "root_tab_longtrip_btn@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "root_tab_longtrip_btn@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_longtrip_btn.imageset/root_tab_longtrip_btn@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/TabBar/root_tab_longtrip_btn.imageset/root_tab_longtrip_btn@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_longtrip_btn.imageset/root_tab_longtrip_btn@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/TabBar/root_tab_longtrip_btn.imageset/root_tab_longtrip_btn@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_me_25x25_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "root_tab_me_25x25_.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "root_tab_me_25x25_@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "root_tab_me_25x25_@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_me_25x25_.imageset/root_tab_me_25x25_.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/TabBar/root_tab_me_25x25_.imageset/root_tab_me_25x25_.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_me_25x25_.imageset/root_tab_me_25x25_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/TabBar/root_tab_me_25x25_.imageset/root_tab_me_25x25_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_me_25x25_.imageset/root_tab_me_25x25_@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/TabBar/root_tab_me_25x25_.imageset/root_tab_me_25x25_@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_me_hl_25x25_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "root_tab_me_hl_25x25_.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "root_tab_me_hl_25x25_@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "root_tab_me_hl_25x25_@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_me_hl_25x25_.imageset/root_tab_me_hl_25x25_.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/TabBar/root_tab_me_hl_25x25_.imageset/root_tab_me_hl_25x25_.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_me_hl_25x25_.imageset/root_tab_me_hl_25x25_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/TabBar/root_tab_me_hl_25x25_.imageset/root_tab_me_hl_25x25_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_me_hl_25x25_.imageset/root_tab_me_hl_25x25_@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/TabBar/root_tab_me_hl_25x25_.imageset/root_tab_me_hl_25x25_@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_msg_25x25_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "root_tab_msg_25x25_.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "root_tab_msg_25x25_@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "root_tab_msg_25x25_@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_msg_25x25_.imageset/root_tab_msg_25x25_.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/TabBar/root_tab_msg_25x25_.imageset/root_tab_msg_25x25_.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_msg_25x25_.imageset/root_tab_msg_25x25_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/TabBar/root_tab_msg_25x25_.imageset/root_tab_msg_25x25_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_msg_25x25_.imageset/root_tab_msg_25x25_@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/TabBar/root_tab_msg_25x25_.imageset/root_tab_msg_25x25_@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_msg_hl_25x25_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "root_tab_msg_hl_25x25_.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "root_tab_msg_hl_25x25_@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "root_tab_msg_hl_25x25_@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_msg_hl_25x25_.imageset/root_tab_msg_hl_25x25_.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/TabBar/root_tab_msg_hl_25x25_.imageset/root_tab_msg_hl_25x25_.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_msg_hl_25x25_.imageset/root_tab_msg_hl_25x25_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/TabBar/root_tab_msg_hl_25x25_.imageset/root_tab_msg_hl_25x25_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_msg_hl_25x25_.imageset/root_tab_msg_hl_25x25_@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/TabBar/root_tab_msg_hl_25x25_.imageset/root_tab_msg_hl_25x25_@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_recommand_25x25_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "root_tab_recommand_25x25_.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "root_tab_recommand_25x25_@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "root_tab_recommand_25x25_@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_recommand_25x25_.imageset/root_tab_recommand_25x25_.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/TabBar/root_tab_recommand_25x25_.imageset/root_tab_recommand_25x25_.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_recommand_25x25_.imageset/root_tab_recommand_25x25_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/TabBar/root_tab_recommand_25x25_.imageset/root_tab_recommand_25x25_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_recommand_25x25_.imageset/root_tab_recommand_25x25_@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/TabBar/root_tab_recommand_25x25_.imageset/root_tab_recommand_25x25_@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_recommand_hl_25x25_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "root_tab_recommand_hl_25x25_.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "root_tab_recommand_hl_25x25_@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "root_tab_recommand_hl_25x25_@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_recommand_hl_25x25_.imageset/root_tab_recommand_hl_25x25_.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/TabBar/root_tab_recommand_hl_25x25_.imageset/root_tab_recommand_hl_25x25_.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_recommand_hl_25x25_.imageset/root_tab_recommand_hl_25x25_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/TabBar/root_tab_recommand_hl_25x25_.imageset/root_tab_recommand_hl_25x25_@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_recommand_hl_25x25_.imageset/root_tab_recommand_hl_25x25_@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/TabBar/root_tab_recommand_hl_25x25_.imageset/root_tab_recommand_hl_25x25_@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_spot_btn.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "root_tab_spot_btn@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "root_tab_spot_btn@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_spot_btn.imageset/root_tab_spot_btn@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/TabBar/root_tab_spot_btn.imageset/root_tab_spot_btn@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/TabBar/root_tab_spot_btn.imageset/root_tab_spot_btn@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/TabBar/root_tab_spot_btn.imageset/root_tab_spot_btn@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/active_dot.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "active_dot.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "active_dot@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "active_dot@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/active_dot.imageset/active_dot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/active_dot.imageset/active_dot.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/active_dot.imageset/active_dot@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/active_dot.imageset/active_dot@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/active_dot.imageset/active_dot@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/active_dot.imageset/active_dot@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/chats_icon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "chats_icon.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "chats_icon@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "chats_icon@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/chats_icon.imageset/chats_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/chats_icon.imageset/chats_icon.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/chats_icon.imageset/chats_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/chats_icon.imageset/chats_icon@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/chats_icon.imageset/chats_icon@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/chats_icon.imageset/chats_icon@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/circle.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "circle.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "circle@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "circle@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/circle.imageset/circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/circle.imageset/circle.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/circle.imageset/circle@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/circle.imageset/circle@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/circle.imageset/circle@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/circle.imageset/circle@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/circle_left.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "circle_left.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "circle_left@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "circle_left@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/circle_left.imageset/circle_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/circle_left.imageset/circle_left.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/circle_left.imageset/circle_left@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/circle_left.imageset/circle_left@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/circle_left.imageset/circle_left@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/circle_left.imageset/circle_left@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/circle_right.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "circle_right.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "circle_right@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "circle_right@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/circle_right.imageset/circle_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/circle_right.imageset/circle_right.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/circle_right.imageset/circle_right@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/circle_right.imageset/circle_right@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/circle_right.imageset/circle_right@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/circle_right.imageset/circle_right@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/circle_square.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "circle_square.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "circle_square@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "circle_square@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/circle_square.imageset/circle_square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/circle_square.imageset/circle_square.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/circle_square.imageset/circle_square@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/circle_square.imageset/circle_square@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/circle_square.imageset/circle_square@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/circle_square.imageset/circle_square@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/edit_icon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "edit_icon.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "edit_icon@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "edit_icon@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/edit_icon.imageset/edit_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/edit_icon.imageset/edit_icon.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/edit_icon.imageset/edit_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/edit_icon.imageset/edit_icon@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/edit_icon.imageset/edit_icon@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/edit_icon.imageset/edit_icon@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/nearby_icon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "nearby_icon.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "nearby_icon@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "nearby_icon@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/nearby_icon.imageset/nearby_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/nearby_icon.imageset/nearby_icon.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/nearby_icon.imageset/nearby_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/nearby_icon.imageset/nearby_icon@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/nearby_icon.imageset/nearby_icon@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/nearby_icon.imageset/nearby_icon@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/new_chat_icon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "new_chat_icon.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "new_chat_icon@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "new_chat_icon@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/new_chat_icon.imageset/new_chat_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/new_chat_icon.imageset/new_chat_icon.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/new_chat_icon.imageset/new_chat_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/new_chat_icon.imageset/new_chat_icon@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/new_chat_icon.imageset/new_chat_icon@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/new_chat_icon.imageset/new_chat_icon@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/plus_icon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "plus_icon.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "plus_icon@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "plus_icon@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/plus_icon.imageset/plus_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/plus_icon.imageset/plus_icon.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/plus_icon.imageset/plus_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/plus_icon.imageset/plus_icon@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/plus_icon.imageset/plus_icon@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/plus_icon.imageset/plus_icon@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/profile_icon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "profile_icon.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "profile_icon@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "profile_icon@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/profile_icon.imageset/profile_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/profile_icon.imageset/profile_icon.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/profile_icon.imageset/profile_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/profile_icon.imageset/profile_icon@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/profile_icon.imageset/profile_icon@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/profile_icon.imageset/profile_icon@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/search_icon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "search_icon.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "search_icon@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "search_icon@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/search_icon.imageset/search_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/search_icon.imageset/search_icon.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/search_icon.imageset/search_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/search_icon.imageset/search_icon@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/search_icon.imageset/search_icon@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/search_icon.imageset/search_icon@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/settings_icon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "settings_icon.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "settings_icon@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "settings_icon@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/settings_icon.imageset/settings_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/settings_icon.imageset/settings_icon.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/settings_icon.imageset/settings_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/settings_icon.imageset/settings_icon@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/settings_icon.imageset/settings_icon@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/settings_icon.imageset/settings_icon@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/side_button.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "side_button.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "side_button@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "side_button@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/side_button.imageset/side_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/side_button.imageset/side_button.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/side_button.imageset/side_button@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/side_button.imageset/side_button@2x.png -------------------------------------------------------------------------------- /HeartTrip/Application/Assets.xcassets/tabbarRec/side_button.imageset/side_button@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Application/Assets.xcassets/tabbarRec/side_button.imageset/side_button@3x.png -------------------------------------------------------------------------------- /HeartTrip/Application/HeartTripPrefixHeader.pch: -------------------------------------------------------------------------------- 1 | // 2 | // HeartTripPrefixHeader.pch 3 | // HeartTrip 4 | // 5 | // Created by 熊彬 on 16/9/12. 6 | // Copyright © 2016年 BinBear. All rights reserved. 7 | // 8 | 9 | #ifndef HeartTripPrefixHeader_pch 10 | #define HeartTripPrefixHeader_pch 11 | 12 | // 基础组件 13 | #import 14 | #import 15 | #import 16 | #import 17 | #import 18 | #import 19 | #import 20 | #import 21 | #import 22 | #import 23 | 24 | 25 | 26 | // 三方库 27 | #import 28 | #import 29 | #import 30 | #import 31 | #import 32 | #import 33 | #import 34 | #import 35 | #import "QTEventBus+AppModule.h" 36 | 37 | 38 | 39 | // 本地文件 40 | #import "HTAppdelegate.h" 41 | #import "HTApplicationService.h" 42 | #import "HTCategory.h" 43 | #import "HTConfig.h" 44 | #import "HTConst.h" 45 | #import "RACCommand+Request.h" 46 | #import "RACCommand+HTRoute.h" 47 | #import 48 | #import "HTUtilsMethod.h" 49 | #import "HTTipsViewKit.h" 50 | #import "HTHUD+EmptyView.h" 51 | 52 | #endif /* HeartTripPrefixHeader_pch */ 53 | -------------------------------------------------------------------------------- /HeartTrip/Classes/AppModules/HTApplicationService.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTApplicationService.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2020/11/12. 6 | // Copyright © 2020 BinBear. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "Reachability.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | /// 启动时候需要初始化的配置服务,优先级比较高 15 | @interface HTApplicationService : NSObject 16 | 17 | /// 网络状态 18 | @property (nonatomic, assign, readonly) NetworkStatus networkStatus; 19 | 20 | /// 获取Data实例 21 | + (instancetype)sharedData; 22 | 23 | @end 24 | 25 | NS_ASSUME_NONNULL_END 26 | -------------------------------------------------------------------------------- /HeartTrip/Classes/AppModules/HTUIWindowService.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTUIWindowService.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2020/11/12. 6 | // Copyright © 2020 BinBear. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | /// 启动时候需要初始化的根控制器服务,优先级比较低 14 | @interface HTUIWindowService : UIResponder 15 | 16 | // 获取Data实例 17 | + (instancetype)sharedData; 18 | 19 | @end 20 | 21 | NS_ASSUME_NONNULL_END 22 | -------------------------------------------------------------------------------- /HeartTrip/Classes/AppModules/HTUIWindowService.m: -------------------------------------------------------------------------------- 1 | // 2 | // HTUIWindowService.m 3 | // HeartTrip 4 | // 5 | // Created by vin on 2020/11/12. 6 | // Copyright © 2020 BinBear. All rights reserved. 7 | // 8 | 9 | #import "HTUIWindowService.h" 10 | #import "HTFoldingTabBarControllerConfig.h" 11 | 12 | QTAppModuleRegister(HTUIWindowService, QTAppEventPriorityDefault) 13 | 14 | @interface HTUIWindowService () 15 | @end 16 | 17 | 18 | @implementation HTUIWindowService 19 | #pragma mark - QTAppModule 20 | + (instancetype)sharedData{ 21 | static HTUIWindowService *_shared = nil; 22 | static dispatch_once_t onceToken; 23 | dispatch_once(&onceToken, ^{ 24 | _shared = [[HTUIWindowService alloc] init]; 25 | [_shared initConfig]; 26 | }); 27 | return _shared; 28 | } 29 | + (id)moduleInstance{ 30 | return [HTUIWindowService sharedData]; 31 | } 32 | 33 | - (void)appDidFinishLaunch:(QTAppDidLaunchEvent *)event{ 34 | // 配置Window 35 | [self configBaseWindow:event]; 36 | // 设置跟控制器 37 | [self setRootViewController:event]; 38 | } 39 | #pragma mark - Config 40 | - (void)initConfig{ 41 | 42 | } 43 | - (void)configBaseWindow:(QTAppDidLaunchEvent *)event{ 44 | 45 | HT_APPDelegate.window = [[UIWindow alloc] init]; 46 | HT_APPDelegate.window.frame = [UIScreen mainScreen].bounds; 47 | [HT_APPDelegate.window makeKeyAndVisible]; 48 | } 49 | 50 | - (void)setRootViewController:(QTAppDidLaunchEvent *)event{ 51 | 52 | HTFoldingTabBarControllerConfig *tabBarControllerConfig = [[HTFoldingTabBarControllerConfig alloc] init]; 53 | [HT_APPDelegate.window setRootViewController:tabBarControllerConfig.flodingTabBarController]; 54 | } 55 | @end 56 | -------------------------------------------------------------------------------- /HeartTrip/Classes/CityTravel/Controller/HTCityTravelDetailController.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTCityTravelDetailController.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/6/21. 6 | // Copyright © 2021 Vin. All rights reserved. 7 | // 8 | 9 | #import "HTBaseViewController.h" 10 | #import "HTCityTravelDetailViewModel.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface HTCityTravelDetailController : HTBaseViewController 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /HeartTrip/Classes/CityTravel/Controller/HTCityTravelDetailController.m: -------------------------------------------------------------------------------- 1 | // 2 | // HTCityTravelDetailController.m 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/6/21. 6 | // Copyright © 2021 Vin. All rights reserved. 7 | // 8 | 9 | #import "HTCityTravelDetailController.h" 10 | 11 | @interface HTCityTravelDetailController () 12 | 13 | @end 14 | 15 | @implementation HTCityTravelDetailController 16 | 17 | #pragma mark - Life Cycle 18 | - (void)viewDidLoad { 19 | [super viewDidLoad]; 20 | 21 | [self configBase]; 22 | } 23 | 24 | #pragma mark - Bind 25 | - (void)bindViewModelDidLoad{ 26 | DDLogDebug(@"%@",self.viewModel.listItem); 27 | } 28 | 29 | #pragma mark - Config 30 | - (void)configBase{ 31 | 32 | } 33 | 34 | #pragma mark - Getter 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /HeartTrip/Classes/CityTravel/Controller/HTCityTravelNotesASDKController.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTCityTravelNotesASDKController.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/5/21. 6 | // Copyright © 2021 Vin. All rights reserved. 7 | // 8 | 9 | #import "HTBaseViewController.h" 10 | #import "HTCityTravelNotesViewModel.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface HTCityTravelNotesASDKController : HTBaseViewController 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /HeartTrip/Classes/CityTravel/Controller/HTCityTravelNotesASDKController.m: -------------------------------------------------------------------------------- 1 | // 2 | // HTCityTravelNotesASDKController.m 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/5/21. 6 | // Copyright © 2021 Vin. All rights reserved. 7 | // 8 | 9 | #import "HTCityTravelNotesASDKController.h" 10 | 11 | @interface HTCityTravelNotesASDKController () 12 | 13 | @end 14 | 15 | @implementation HTCityTravelNotesASDKController 16 | 17 | #pragma mark - Life Cycle 18 | - (void)viewDidLoad { 19 | [super viewDidLoad]; 20 | 21 | [self configBase]; 22 | } 23 | 24 | #pragma mark - Bind 25 | - (void)bindViewModelDidLoad{ 26 | 27 | } 28 | 29 | #pragma mark - Config 30 | - (void)configBase{ 31 | UIImageView *logo = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 45, 30)]; 32 | logo.image = UIImageMake(@"breadTrip_logo"); 33 | self.navigationItem.titleView = logo; 34 | } 35 | 36 | #pragma mark - Getter 37 | @end 38 | -------------------------------------------------------------------------------- /HeartTrip/Classes/CityTravel/Controller/HTCityTravelNotesController.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTCityTravelNotesController.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/4/18. 6 | // Copyright © 2021 BinBear. All rights reserved. 7 | // 8 | 9 | #import "HTBaseViewController.h" 10 | #import "HTCityTravelNotesViewModel.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface HTCityTravelNotesController : HTBaseViewController 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /HeartTrip/Classes/CityTravel/Model/HTBannerModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTBannerModel.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/5/20. 6 | // Copyright © 2021 BinBear. All rights reserved. 7 | // 8 | 9 | #import "HTBaseModel.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface HTBannerModel : HTBaseModel 14 | /// banner跳转地址 15 | @property (copy, nonatomic) NSString *html_url; 16 | /// banner图地址 17 | @property (copy, nonatomic) NSString *image_url; 18 | @end 19 | 20 | NS_ASSUME_NONNULL_END 21 | -------------------------------------------------------------------------------- /HeartTrip/Classes/CityTravel/Model/HTBannerModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // HTBannerModel.m 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/5/20. 6 | // Copyright © 2021 BinBear. All rights reserved. 7 | // 8 | 9 | #import "HTBannerModel.h" 10 | 11 | @implementation HTBannerModel 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /HeartTrip/Classes/CityTravel/Model/HTCityTravelItemModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTCityTravelItemModel.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/5/20. 6 | // Copyright © 2021 BinBear. All rights reserved. 7 | // 8 | 9 | #import "HTBaseModel.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface HTUserModel : HTBaseModel 14 | 15 | /// 用户头像 16 | @property (copy, nonatomic) NSString *avatar_m; 17 | /// 用户名 18 | @property (copy, nonatomic) NSString *name; 19 | /// 用户id 20 | @property (strong, nonatomic) NSNumber *userID; 21 | 22 | @end 23 | 24 | @interface HTCityTravelItemModel : HTBaseModel 25 | 26 | /// 游记类别 27 | @property (assign, nonatomic) NSInteger type; 28 | /// item背景 29 | @property (copy, nonatomic) NSString *cover_image; 30 | /// 游记标题 31 | @property (copy, nonatomic) NSString *name; 32 | /// 创建时间 33 | @property (copy, nonatomic) NSString *first_day; 34 | /// 游记地点 35 | @property (copy, nonatomic) NSString *popular_place_str; 36 | /// 游记天数 37 | @property (copy, nonatomic) NSString *day_count; 38 | /// 故事数 39 | @property (copy, nonatomic) NSString *spot_count; 40 | /// 浏览人数 41 | @property (copy, nonatomic) NSString *view_count; 42 | /// 游记id 43 | @property (strong, nonatomic) NSNumber *travelID; 44 | /// 用户model 45 | @property (strong, nonatomic) HTUserModel *user; 46 | 47 | @end 48 | 49 | NS_ASSUME_NONNULL_END 50 | -------------------------------------------------------------------------------- /HeartTrip/Classes/CityTravel/Model/HTCityTravelItemModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // HTCityTravelItemModel.m 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/5/20. 6 | // Copyright © 2021 BinBear. All rights reserved. 7 | // 8 | 9 | #import "HTCityTravelItemModel.h" 10 | 11 | @implementation HTUserModel 12 | + (NSDictionary *)modelCustomPropertyMapper { 13 | return @{@"userID" : @"id"}; 14 | } 15 | @end 16 | 17 | @implementation HTCityTravelItemModel 18 | + (NSDictionary *)modelCustomPropertyMapper { 19 | return @{@"travelID" : @"id"}; 20 | } 21 | @end 22 | -------------------------------------------------------------------------------- /HeartTrip/Classes/CityTravel/View/HTBannerItemView.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTBannerItemView.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/5/21. 6 | // Copyright © 2021 Vin. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface HTBannerItemView : UIView 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /HeartTrip/Classes/CityTravel/View/HTBannerItemView.m: -------------------------------------------------------------------------------- 1 | // 2 | // HTBannerItemView.m 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/5/21. 6 | // Copyright © 2021 Vin. All rights reserved. 7 | // 8 | 9 | #import "HTBannerItemView.h" 10 | 11 | @interface HTBannerItemView () 12 | /// icon 13 | @property (strong, nonatomic) SDAnimatedImageView *iconImage; 14 | @end 15 | 16 | @implementation HTBannerItemView 17 | 18 | - (instancetype)initWithFrame:(CGRect)frame{ 19 | if (self = [super initWithFrame:frame]) { 20 | self.backgroundColor = UIColorClear; 21 | [self addSubview:self.iconImage]; 22 | } 23 | return self; 24 | } 25 | 26 | - (void)layoutSubviews{ 27 | [super layoutSubviews]; 28 | 29 | [self.iconImage mas_makeConstraints:^(MASConstraintMaker *make) { 30 | make.edges.mas_equalTo(UIEdgeInsetsMake(15, 15, 15, 15)); 31 | }]; 32 | } 33 | 34 | - (void)cycleViewReloadDataAtIndex:(NSInteger)index parameter:(id)parameter { 35 | 36 | [self.iconImage sd_setImageWithURL:[NSURL URLWithString:parameter] placeholderImage:UIImageMake(@"tripdisplay_photocell_placeholder")]; 37 | } 38 | #pragma mark - Getter 39 | - (SDAnimatedImageView *)iconImage{ 40 | return HT_LAZY(_iconImage, ({ 41 | SDAnimatedImageView *view = [SDAnimatedImageView new]; 42 | view.layer.cornerRadius = 8; 43 | view.layer.masksToBounds = true; 44 | view.contentMode = UIViewContentModeScaleAspectFill; 45 | view; 46 | })); 47 | } 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /HeartTrip/Classes/CityTravel/View/HTCityTravelBannerView.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTCityTravelBannerView.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/5/21. 6 | // Copyright © 2021 Vin. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface HTCityTravelBannerView : UIView 14 | 15 | + (instancetype)bindViewWithViewModel:(id)viewModel; 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /HeartTrip/Classes/CityTravel/View/HTCityTravelCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTCityTravelCell.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/5/20. 6 | // Copyright © 2021 BinBear. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface HTCityTravelCell : UITableViewCell 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /HeartTrip/Classes/CityTravel/ViewModel/HTCityTravelDetailViewModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTCityTravelDetailViewModel.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/6/21. 6 | // Copyright © 2021 Vin. All rights reserved. 7 | // 8 | 9 | #import "HTBaseViewModel.h" 10 | #import "HTCityTravelItemModel.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface HTCityTravelDetailViewModel : HTBaseViewModel 15 | /// 相应游记信息 16 | @property (strong, nonatomic) HTCityTravelItemModel *listItem; 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /HeartTrip/Classes/CityTravel/ViewModel/HTCityTravelDetailViewModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // HTCityTravelDetailViewModel.m 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/6/21. 6 | // Copyright © 2021 Vin. All rights reserved. 7 | // 8 | 9 | #import "HTCityTravelDetailViewModel.h" 10 | 11 | @implementation HTCityTravelDetailViewModel 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /HeartTrip/Classes/CityTravel/ViewModel/HTCityTravelNotesViewModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTCityTravelNotesViewModel.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/4/18. 6 | // Copyright © 2021 BinBear. All rights reserved. 7 | // 8 | 9 | #import "HTBaseViewModel.h" 10 | #import "HTBannerModel.h" 11 | #import "HTCityTravelItemModel.h" 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface HTCityTravelNotesViewModel : HTBaseViewModel 16 | 17 | /// banner数据 18 | @property (strong, nonatomic) NSMutableArray *bannerData; 19 | /// 列表数据 20 | @property (strong, nonatomic) NSMutableArray *listData; 21 | 22 | @end 23 | 24 | NS_ASSUME_NONNULL_END 25 | -------------------------------------------------------------------------------- /HeartTrip/Classes/Find/Controller/HTFindASDKViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTFindASDKViewController.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/5/21. 6 | // Copyright © 2021 Vin. All rights reserved. 7 | // 8 | 9 | #import "HTBaseViewController.h" 10 | #import "HTFindViewModel.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface HTFindASDKViewController : HTBaseViewController 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /HeartTrip/Classes/Find/Controller/HTFindASDKViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // HTFindASDKViewController.m 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/5/21. 6 | // Copyright © 2021 Vin. All rights reserved. 7 | // 8 | 9 | #import "HTFindASDKViewController.h" 10 | 11 | @interface HTFindASDKViewController () 12 | 13 | @end 14 | 15 | @implementation HTFindASDKViewController 16 | 17 | #pragma mark - Life Cycle 18 | - (void)viewDidLoad { 19 | [super viewDidLoad]; 20 | 21 | [self configBase]; 22 | } 23 | 24 | #pragma mark - Bind 25 | - (void)bindViewModelDidLoad{ 26 | 27 | } 28 | 29 | #pragma mark - Config 30 | - (void)configBase{ 31 | 32 | } 33 | 34 | #pragma mark - Getter 35 | @end 36 | -------------------------------------------------------------------------------- /HeartTrip/Classes/Find/Controller/HTFindViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTFindViewController.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/4/18. 6 | // Copyright © 2021 BinBear. All rights reserved. 7 | // 8 | 9 | #import "HTBaseViewController.h" 10 | #import "HTFindViewModel.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface HTFindViewController : HTBaseViewController 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /HeartTrip/Classes/Find/Model/HTFindFeedModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // HTFindFeedModel.m 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/5/24. 6 | // Copyright © 2021 Vin. All rights reserved. 7 | // 8 | 9 | #import "HTFindFeedModel.h" 10 | 11 | @implementation HTFindUserModel 12 | + (NSDictionary *)modelCustomPropertyMapper { 13 | return @{@"ID" : @"id"}; 14 | } 15 | @end 16 | 17 | @implementation HTFindProductModel 18 | + (NSDictionary *)modelCustomPropertyMapper { 19 | return @{@"ID" : @"id"}; 20 | } 21 | @end 22 | 23 | @implementation HTFindFeedModel 24 | + (NSDictionary *)modelContainerPropertyGenericClass { 25 | return @{@"liked_users" : [HTFindUserModel class]}; 26 | } 27 | @end 28 | -------------------------------------------------------------------------------- /HeartTrip/Classes/Find/Model/HTFindVideosModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTFindVideosModel.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/5/24. 6 | // Copyright © 2021 Vin. All rights reserved. 7 | // 8 | 9 | #import "HTBaseModel.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface HTFindVideosModel : HTBaseModel 14 | 15 | /// 视频拍摄地址 16 | @property (copy, nonatomic) NSString *address; 17 | /// 背景图片地址 18 | @property (copy, nonatomic) NSString *cover; 19 | /// 喜欢人数 20 | @property (copy, nonatomic) NSString *liked_count; 21 | /// 价格 22 | @property (copy, nonatomic) NSString *price; 23 | /// 活动id 24 | @property (copy, nonatomic) NSString *product_id; 25 | /// 活动标题 26 | @property (copy, nonatomic) NSString *product_title; 27 | /// 视频地址 28 | @property (copy, nonatomic) NSString *show_url; 29 | /// 观看人数 30 | @property (copy, nonatomic) NSString *views; 31 | /// 距离 32 | @property (copy, nonatomic) NSString *distance; 33 | 34 | @end 35 | 36 | NS_ASSUME_NONNULL_END 37 | -------------------------------------------------------------------------------- /HeartTrip/Classes/Find/Model/HTFindVideosModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // HTFindVideosModel.m 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/5/24. 6 | // Copyright © 2021 Vin. All rights reserved. 7 | // 8 | 9 | #import "HTFindVideosModel.h" 10 | 11 | @implementation HTFindVideosModel 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /HeartTrip/Classes/Find/View/HTFindFeedCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTFindFeedCell.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/5/24. 6 | // Copyright © 2021 Vin. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface HTFindFeedCell : UITableViewCell 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /HeartTrip/Classes/Find/View/HTFindVideoItemView.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTFindVideoItemView.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/5/24. 6 | // Copyright © 2021 Vin. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface HTFindVideoItemView : UIView 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /HeartTrip/Classes/Find/View/HTFindVideoView.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTFindVideoView.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/5/24. 6 | // Copyright © 2021 Vin. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface HTFindVideoView : UIView 14 | 15 | + (instancetype)bindViewWithViewModel:(id)viewModel; 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /HeartTrip/Classes/Find/ViewModel/HTFindViewModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTFindViewModel.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/4/18. 6 | // Copyright © 2021 BinBear. All rights reserved. 7 | // 8 | 9 | #import "HTBaseViewModel.h" 10 | #import "HTFindFeedModel.h" 11 | #import "HTFindVideosModel.h" 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface HTFindViewModel : HTBaseViewModel 16 | 17 | /// feed 18 | @property (strong, nonatomic) NSMutableArray *feedData; 19 | /// video 20 | @property (strong, nonatomic) NSMutableArray *videoData; 21 | 22 | /// 列表 23 | @property (strong, nonatomic) RACCommand *listCommand; 24 | @end 25 | 26 | NS_ASSUME_NONNULL_END 27 | -------------------------------------------------------------------------------- /HeartTrip/Classes/Main/HTFoldingTabBarControllerConfig.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTFoldingTabBarControllerConfig.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/4/19. 6 | // Copyright © 2021 BinBear. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface HTFoldingTabBarControllerConfig : NSObject 16 | 17 | @property (strong, nonatomic,readonly) YALFoldingTabBarController *flodingTabBarController; 18 | 19 | @end 20 | 21 | NS_ASSUME_NONNULL_END 22 | -------------------------------------------------------------------------------- /HeartTrip/Classes/Main/HTNavigationController.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTNavigationController.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/4/18. 6 | // Copyright © 2021 BinBear. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface HTNavigationController : QMUINavigationController 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /HeartTrip/Classes/Main/HTNavigationController.m: -------------------------------------------------------------------------------- 1 | // 2 | // HTNavigationController.m 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/4/18. 6 | // Copyright © 2021 BinBear. All rights reserved. 7 | // 8 | 9 | #import "HTNavigationController.h" 10 | 11 | @interface HTNavigationController () 12 | 13 | @end 14 | 15 | @implementation HTNavigationController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | } 20 | 21 | #pragma mark - Public Method 22 | - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated { 23 | 24 | [self setUpNavigationBarAppearance]; 25 | 26 | if (self.viewControllers.count > 0) { 27 | viewController.hidesBottomBarWhenPushed = true; 28 | } 29 | [super pushViewController:viewController animated:true]; 30 | } 31 | 32 | #pragma mark - 设置全局的导航栏属性 33 | - (void)setUpNavigationBarAppearance { 34 | 35 | UINavigationBar *navigationBarAppearance = [UINavigationBar appearance]; 36 | 37 | NSDictionary *textAttributes = @{NSFontAttributeName:textFontPingFangRegularFont(18), 38 | NSForegroundColorAttributeName: UIColorWhite}; 39 | 40 | [navigationBarAppearance setTitleTextAttributes:textAttributes]; 41 | navigationBarAppearance.tintColor = UIColorWhite; 42 | navigationBarAppearance.barTintColor = UIColorMake(80, 189, 203); 43 | navigationBarAppearance.translucent = true; 44 | } 45 | @end 46 | -------------------------------------------------------------------------------- /HeartTrip/UIKitComponents/HTHUD/HTHUD.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTHUD.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/2/22. 6 | // Copyright © 2021 BinBear. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface HTHUD : NSObject 14 | 15 | /// 展示在Window上 16 | + (void)loadingViewInKeyWindow; 17 | /// 移除Window上的HUD 18 | + (void)dismiss; 19 | 20 | /// 展示在相应view上 21 | + (void)loadingViewInView:(UIView * _Nullable)view; 22 | /// 移除相应view上的HUD 23 | + (void)dismissWithView:(UIView * _Nullable)view; 24 | 25 | @end 26 | 27 | NS_ASSUME_NONNULL_END 28 | -------------------------------------------------------------------------------- /HeartTrip/UIKitComponents/HTTipsView/HTBaseBottomTipView.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTBaseBottomTipView.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/2/22. 6 | // Copyright © 2021 BinBear. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "HTBaseCenterTipView.h" 11 | 12 | @interface HTBaseBottomTipView : UIView 13 | 14 | + (void)showTipViewToView:(UIView *)view 15 | size:(CGSize)size 16 | contentView:(UIView *)contentView // view 17 | tipViewStatusCallback:(void (^)(HTBaseTipViewShowStatus showStatus))tipViewStatusCallback; 18 | 19 | 20 | + (void)showTipViewToView:(UIView *)view 21 | size:(CGSize)size 22 | contentViewClass:(Class)contentViewClass // Class 23 | tipViewStatusCallback:(void (^)(HTBaseTipViewShowStatus showStatus))tipViewStatusCallback; 24 | 25 | 26 | + (void)showTipViewToView:(UIView *)view 27 | size:(CGSize)size 28 | contentViewNibName:(NSString *)contentViewNibName // // Xib 29 | tipViewStatusCallback:(void (^)(HTBaseTipViewShowStatus showStatus))tipViewStatusCallback; 30 | 31 | + (instancetype)getInstanceWithInView:(UIView *)view; 32 | 33 | + (void)showHUD; 34 | + (void)dismissHUD; 35 | 36 | + (void)showHudForView:(UIView *)view; 37 | + (void)dismissHudForView:(UIView *)view; 38 | 39 | + (void)dismissWithCompletion:(void(^)(void))completion; 40 | + (void)dismissForView:(UIView *)view completion:(void(^)(void))completion; 41 | 42 | + (void)resetBlackAlpha:(CGFloat)alpha inView:(UIView *)inView; 43 | 44 | @end 45 | 46 | 47 | -------------------------------------------------------------------------------- /HeartTrip/UIKitComponents/HTTipsView/HTShowTipsView.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTShowTipsView.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2020/11/19. 6 | // Copyright © 2020 BinBear. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface HTShowTipsView : NSObject 14 | 15 | /** 16 | * 展示提示信息 17 | * 18 | * @param message 信息内容 19 | */ 20 | + (void)showTips:(NSString *)message; 21 | + (RACSignal *(^)(NSString *message))signal; 22 | + (RACCommand *(^)(NSString *message))command; 23 | 24 | 25 | /** 26 | * 展示提示信息 27 | * 28 | * @param message 信息内容 29 | * @param position 展示的位置 30 | * @param point 偏移位置 31 | */ 32 | + (void)showTips:(NSString *)message withPosition:(QMUIToastViewPosition)position withOffset:(CGPoint)point; 33 | + (RACSignal *(^)(NSString *message,QMUIToastViewPosition,CGPoint))signalPosition; 34 | + (RACCommand *(^)(NSString *message,QMUIToastViewPosition,CGPoint))commandPosition; 35 | 36 | @end 37 | 38 | NS_ASSUME_NONNULL_END 39 | -------------------------------------------------------------------------------- /HeartTrip/UIKitComponents/HTTipsView/HTTipsViewKit.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTTipsViewKit.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/2/22. 6 | // Copyright © 2021 BinBear. All rights reserved. 7 | // 8 | #ifndef HTTipsViewKit_h 9 | #define HTTipsViewKit_h 10 | 11 | #import "HTBaseCenterTipView.h" 12 | #import "HTActionTipsView.h" 13 | #import "HTShowTipsView.h" 14 | 15 | #endif /* HCTipsViewKit_h */ 16 | -------------------------------------------------------------------------------- /HeartTrip/UIKitComponents/SwiftAdapter/HTDarkModeInit.swift: -------------------------------------------------------------------------------- 1 | // 2 | // HTDarkModeInit.swift 3 | // HeartTrip 4 | // 5 | // Created by vin on 2020/11/23. 6 | // Copyright © 2020 BinBear. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import FluentDarkModeKit 11 | 12 | @objcMembers class HTDarkModeInit: NSObject { 13 | func toInit() { 14 | let configuration = DMEnvironmentConfiguration() 15 | configuration.themeChangeHandler = { 16 | print("theme changed") 17 | } 18 | if #available(iOS 13.0, *) { 19 | configuration.windowThemeChangeHandler = { window in 20 | print("\(window) theme changed") 21 | } 22 | } 23 | DarkModeManager.setup(with: configuration) 24 | DarkModeManager.register(with: UIApplication.shared) 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /HeartTrip/UIKitComponents/SwiftAdapter/HeartTrip-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | // 2 | // Use this file to import your target's public headers that you would like to expose to Swift. 3 | // 4 | 5 | @import UIKit; 6 | @import Foundation; 7 | -------------------------------------------------------------------------------- /HeartTrip/Util/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Util/.DS_Store -------------------------------------------------------------------------------- /HeartTrip/Util/Category/HTCategory.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTCategory.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2020/11/12. 6 | // Copyright © 2020 BinBear. All rights reserved. 7 | // 8 | 9 | #ifndef HTCategory_h 10 | #define HTCategory_h 11 | 12 | 13 | // RAC 14 | #import "RACSubject+Extension.h" 15 | #import "NSObject+RACExtension.h" 16 | 17 | 18 | // UIView 19 | 20 | 21 | // UIScrollView 22 | #import "UIScrollView+Refresh.h" 23 | 24 | // UITableView 25 | #import "UITableView+Refresh.h" 26 | 27 | // UICollectionView 28 | #import "UICollectionView+Refresh.h" 29 | 30 | // UILabel 31 | 32 | 33 | // UIImage 34 | #import "UIImage+HTRoundImage.h" 35 | 36 | 37 | // UIButton 38 | 39 | 40 | // UIImageView 41 | #import "UIImageView+HTRoundImage.h" 42 | 43 | 44 | // UIBarButtonItem 45 | 46 | 47 | // UINavigationController 48 | 49 | 50 | // NSObject 51 | 52 | 53 | // NSString 54 | 55 | 56 | // NSArray 57 | #import "NSArray+Sudoku.h" 58 | 59 | // NSDictionary 60 | 61 | 62 | // NSDecimalNumber 63 | 64 | 65 | // NSBundle 66 | 67 | 68 | // NSDate 69 | 70 | 71 | // Other 72 | 73 | 74 | #endif /* HTCategory_h */ 75 | -------------------------------------------------------------------------------- /HeartTrip/Util/Category/UIKit/UICollectionView+Refresh.h: -------------------------------------------------------------------------------- 1 | // 2 | // UICollectionView+Refresh.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2020/11/20. 6 | // Copyright © 2020 BinBear. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UICollectionView (Refresh) 12 | 13 | /// 给UICollectionView增加上下拉刷新 (KK) 14 | /// @param headerRefreshBlock 头部进入刷新的时候会调用的方法 如果传空,则头部不添加 15 | /// @param footerRefreshBlock 尾部进入刷新的时候会调用的方法 如果传空,则尾部不添加 16 | - (void)addRefreshWithKaKaHeaderBlock:(void(^)(void))headerRefreshBlock 17 | withKaKaFooterBlock:(void(^)(void))footerRefreshBlock; 18 | 19 | /// 停止刷新 20 | - (void)endRefresh; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /HeartTrip/Util/Category/UIKit/UICollectionView+Refresh.m: -------------------------------------------------------------------------------- 1 | // 2 | // UICollectionView+Refresh.m 3 | // HeartTrip 4 | // 5 | // Created by vin on 2020/11/20. 6 | // Copyright © 2020 BinBear. All rights reserved. 7 | // 8 | 9 | #import "UICollectionView+Refresh.h" 10 | 11 | @implementation UICollectionView (Refresh) 12 | 13 | #pragma mark - KakaRefesh 14 | - (void)addRefreshWithKaKaHeaderBlock:(void (^)(void))headerRefreshBlock 15 | withKaKaFooterBlock:(void (^)(void))footerRefreshBlock { 16 | if (headerRefreshBlock) { 17 | [self bindHeadRefreshHandler:^{ 18 | dispatch_main_async_safe(^{ 19 | headerRefreshBlock(); 20 | }); 21 | } 22 | themeColor:UIColorMakeWithHex(@"#62BCCC") 23 | refreshStyle:KafkaRefreshStyleReplicatorCircle]; 24 | self.headRefreshControl.backgroundColor = UIColorClear; 25 | } 26 | 27 | if (footerRefreshBlock) { 28 | [self bindFootRefreshHandler:^{ 29 | dispatch_main_async_safe(^{ 30 | footerRefreshBlock(); 31 | }); 32 | } 33 | themeColor:UIColorMakeWithHex(@"#62BCCC") 34 | refreshStyle:KafkaRefreshStyleReplicatorAllen]; 35 | // self.footRefreshControl.hidden = YES; 36 | } 37 | } 38 | 39 | - (void)endRefresh { 40 | [self.headRefreshControl endRefreshing]; 41 | [self.footRefreshControl endRefreshing]; 42 | } 43 | @end 44 | -------------------------------------------------------------------------------- /HeartTrip/Util/Category/UIKit/UIImageView+HTRoundImage.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImageView+HTRoundImage.h 3 | // HeartTrip 4 | // 5 | // Created by 熊彬 on 16/10/9. 6 | // Copyright © 2016年 BinBear. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "UIImage+HTRoundImage.h" 11 | 12 | @interface UIImageView (HTRoundImage) 13 | 14 | - (void)HT_setImageWithCornerRadius:(CGFloat)radius 15 | imageURL:(NSURL *)imageURL 16 | placeholder:(NSString *)placeholder 17 | size:(CGSize)size; 18 | 19 | - (void)HT_setImageWithCornerRadius:(CGFloat)radius 20 | imageURL:(NSURL *)imageURL 21 | placeholder:(NSString *)placeholder 22 | contentMode:(UIViewContentMode)contentMode 23 | size:(CGSize)size; 24 | 25 | - (void)HT_setImageWithHTRadius:(HTRadius)radius 26 | imageURL:(NSURL *)imageURL 27 | placeholder:(NSString *)placeholder 28 | contentMode:(UIViewContentMode)contentMode 29 | size:(CGSize)size; 30 | 31 | - (void)HT_setImageWithHTRadius:(HTRadius)radius 32 | imageURL:(NSURL *)imageURL 33 | placeholder:(NSString *)placeholder 34 | borderColor:(UIColor *)borderColor 35 | borderWidth:(CGFloat)borderWidth 36 | backgroundColor:(UIColor *)backgroundColor 37 | contentMode:(UIViewContentMode)contentMode 38 | size:(CGSize)size; 39 | @end 40 | -------------------------------------------------------------------------------- /HeartTrip/Util/Category/UIKit/UIScrollView+Refresh.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIScrollView+Refresh.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2020/11/20. 6 | // Copyright © 2020 BinBear. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIScrollView (Refresh) 12 | 13 | /// 给UIScrollView增加上下拉刷新 (KK) 14 | /// @param headerRefreshBlock 头部进入刷新的时候会调用的方法 如果传空,则头部不添加 15 | /// @param footerRefreshBlock 尾部进入刷新的时候会调用的方法 如果传空,则尾部不添加 16 | - (void)addRefreshWithKaKaHeaderBlock:(void (^)(void))headerRefreshBlock 17 | withKaKaFooterBlock:(void (^)(void))footerRefreshBlock; 18 | 19 | /// 停止刷新 20 | - (void)endRefresh; 21 | @end 22 | -------------------------------------------------------------------------------- /HeartTrip/Util/Category/UIKit/UIScrollView+Refresh.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIScrollView+Refresh.m 3 | // HeartTrip 4 | // 5 | // Created by vin on 2020/11/20. 6 | // Copyright © 2020 BinBear. All rights reserved. 7 | // 8 | 9 | #import "UIScrollView+Refresh.h" 10 | 11 | @implementation UIScrollView (Refresh) 12 | #pragma mark - KakaRefesh 13 | - (void)addRefreshWithKaKaHeaderBlock:(void (^)(void))headerRefreshBlock 14 | withKaKaFooterBlock:(void (^)(void))footerRefreshBlock { 15 | if (headerRefreshBlock) { 16 | [self bindHeadRefreshHandler:^{ 17 | dispatch_main_async_safe(^{ 18 | headerRefreshBlock(); 19 | }); 20 | } 21 | themeColor:UIColorMakeWithHex(@"#62BCCC") 22 | refreshStyle:KafkaRefreshStyleReplicatorCircle]; 23 | self.headRefreshControl.backgroundColor = UIColorClear; 24 | } 25 | 26 | if (footerRefreshBlock) { 27 | [self bindFootRefreshHandler:^{ 28 | dispatch_main_async_safe(^{ 29 | footerRefreshBlock(); 30 | }); 31 | } 32 | themeColor:UIColorMakeWithHex(@"#62BCCC") 33 | refreshStyle:KafkaRefreshStyleReplicatorAllen]; 34 | // self.footRefreshControl.hidden = YES; 35 | } 36 | } 37 | 38 | - (void)endRefresh { 39 | [self.headRefreshControl endRefreshing]; 40 | [self.footRefreshControl endRefreshing]; 41 | } 42 | @end 43 | -------------------------------------------------------------------------------- /HeartTrip/Util/Category/UIKit/UITableView+Refresh.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITableView+Refresh.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2020/11/20. 6 | // Copyright © 2020 BinBear. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UITableView (Refresh) 12 | 13 | /// 给UITableView增加上下拉刷新 (KK) 14 | /// @param headerRefreshBlock 头部进入刷新的时候会调用的方法 如果传空,则头部不添加 15 | /// @param footerRefreshBlock 尾部进入刷新的时候会调用的方法 如果传空,则尾部不添加 16 | - (void)addRefreshWithKaKaHeaderBlock:(void (^)(void))headerRefreshBlock 17 | withKaKaFooterBlock:(void (^)(void))footerRefreshBlock; 18 | 19 | /// 停止刷新 20 | - (void)endRefresh; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /HeartTrip/Util/Category/UIKit/UITableView+Refresh.m: -------------------------------------------------------------------------------- 1 | // 2 | // UITableView+Refresh.m 3 | // HeartTrip 4 | // 5 | // Created by vin on 2020/11/20. 6 | // Copyright © 2020 BinBear. All rights reserved. 7 | // 8 | 9 | #import "UITableView+Refresh.h" 10 | 11 | 12 | @implementation UITableView (Refresh) 13 | 14 | #pragma mark 15 | #pragma mark - KakaRefesh 16 | - (void)addRefreshWithKaKaHeaderBlock:(void (^)(void))headerRefreshBlock 17 | withKaKaFooterBlock:(void (^)(void))footerRefreshBlock { 18 | 19 | if (headerRefreshBlock) { 20 | [self bindHeadRefreshHandler:^{ 21 | dispatch_main_async_safe(^{ 22 | headerRefreshBlock(); 23 | }); 24 | } 25 | themeColor:UIColorMakeWithHex(@"#62BCCC") 26 | refreshStyle:KafkaRefreshStyleReplicatorCircle]; 27 | self.headRefreshControl.backgroundColor = UIColorClear; 28 | } 29 | 30 | if (footerRefreshBlock) { 31 | [self bindFootRefreshHandler:^{ 32 | dispatch_main_async_safe(^{ 33 | footerRefreshBlock(); 34 | }); 35 | } 36 | themeColor:UIColorMakeWithHex(@"#62BCCC") 37 | refreshStyle:KafkaRefreshStyleReplicatorAllen]; 38 | // self.footRefreshControl.hidden = YES; 39 | } 40 | } 41 | 42 | - (void)endRefresh { 43 | [self.headRefreshControl endRefreshing]; 44 | [self.footRefreshControl endRefreshing]; 45 | } 46 | @end 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /HeartTrip/Util/Configure/HTConst.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTConst.h 3 | // HeartTrip 4 | // 5 | // Created by 熊彬 on 16/9/13. 6 | // Copyright © 2016年 BinBear. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | /********** Project Key ***********/ 13 | 14 | /// 返回数据结果中data字段key 15 | FOUNDATION_EXTERN NSString *const HT_Data; 16 | /// Bugly的key 17 | FOUNDATION_EXTERN NSString *const BuglyAppKey; 18 | 19 | 20 | // 首页banner数据key 21 | FOUNDATION_EXTERN NSString *const BannerDatakey; 22 | // 首页热门游记数据key 23 | FOUNDATION_EXTERN NSString *const TravelDatakey; 24 | // 发现视频数据key 25 | FOUNDATION_EXTERN NSString *const FindVideoDatakey; 26 | // 发现feed数据key 27 | FOUNDATION_EXTERN NSString *const FindFeedDatakey; 28 | // 经度key 29 | FOUNDATION_EXTERN NSString *const Longitudekey; 30 | // 纬度key 31 | FOUNDATION_EXTERN NSString *const Latitudekey; 32 | // 城市名key 33 | FOUNDATION_EXTERN NSString *const CityNamekey; 34 | // 网页标题key 35 | FOUNDATION_EXTERN NSString *const ViewTitlekey; 36 | // 网页请求地址key 37 | FOUNDATION_EXTERN NSString *const RequestURLkey; 38 | // WebViewNav的导航类型key 39 | FOUNDATION_EXTERN NSString *const NavBarStyleTypekey; 40 | // 网络状态类型key 41 | FOUNDATION_EXTERN NSString *const NetWorkStatusTypekey; 42 | // Web页面key 43 | FOUNDATION_EXTERN NSString *const WebViewTypekey; 44 | // model下标key 45 | FOUNDATION_EXTERN NSString *const DataIndex; 46 | 47 | 48 | /********** 网络请求地址 ***********/ 49 | 50 | // 首页 51 | FOUNDATION_EXTERN NSString *const CityTravel_URL; 52 | 53 | // 发现 54 | FOUNDATION_EXTERN NSString *const Find_URL; 55 | // 更多视频 56 | FOUNDATION_EXTERN NSString *const ExploreMore_URL; 57 | -------------------------------------------------------------------------------- /HeartTrip/Util/Configure/HTConst.m: -------------------------------------------------------------------------------- 1 | // 2 | // HTConst.m 3 | // HeartTrip 4 | // 5 | // Created by 熊彬 on 16/9/13. 6 | // Copyright © 2016年 BinBear. All rights reserved. 7 | // 8 | 9 | #import "HTConst.h" 10 | 11 | /********** Project Key ***********/ 12 | 13 | /// 返回数据结果中data字段key 14 | NSString *const HT_Data = @"data"; 15 | /// Bugly的key 16 | NSString *const BuglyAppKey = @"2742de84d1"; 17 | 18 | // 首页banner数据key 19 | NSString *const BannerDatakey = @"BannerDatakey"; 20 | // 首页热门游记数据key 21 | NSString *const TravelDatakey = @"TravelDatakey"; 22 | // 发现视频数据key 23 | NSString *const FindVideoDatakey = @"FindVideoDatakey"; 24 | // 发现feed数据key 25 | NSString *const FindFeedDatakey = @"FindFeedDatakey"; 26 | // 经度key 27 | NSString *const Longitudekey = @"Longitudekey"; 28 | // 纬度key 29 | NSString *const Latitudekey = @"Latitudekey"; 30 | // 城市名key 31 | NSString *const CityNamekey = @"CityNamekey"; 32 | // 网页标题key 33 | NSString *const ViewTitlekey = @"ViewTitlekey"; 34 | // 数据请求地址key 35 | NSString *const RequestURLkey = @"RequestURLkey"; 36 | // ViewNav的导航类型key 37 | NSString *const NavBarStyleTypekey = @"NavBarStyleTypekey"; 38 | // ViewNav的导航类型key 39 | NSString *const NetWorkStatusTypekey = @"NetWorkStatusTypekey"; 40 | // Web页面key 41 | NSString *const WebViewTypekey = @"WebViewTypekey"; 42 | // model下标key 43 | NSString *const DataIndex = @"DataIndex"; 44 | 45 | 46 | /********** 网络请求地址 ***********/ 47 | 48 | // 首页 49 | NSString *const CityTravel_URL = @"/v2/index/"; 50 | 51 | // 发现 52 | NSString *const Find_URL = @"/hunter/feeds/"; 53 | // 更多视频 54 | NSString *const ExploreMore_URL = @"/hunter/videos/"; 55 | 56 | -------------------------------------------------------------------------------- /HeartTrip/Util/Log/HTLogFormatter.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTLogFormatter.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2020/11/12. 6 | // Copyright © 2020 BinBear. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface HTLogFormatter : NSObject 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /HeartTrip/Util/Networking/HTRequestList.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTRequestList.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2020/11/20. 6 | // Copyright © 2020 BinBear. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | /// 请求服务 16 | #define HTRequestServer_Check(make) \ 17 | make(HTRequestServer_Main, = 1, api.breadtrip.com) \ 18 | 19 | DECLARE_ENUM(HTRequestServer, HTRequestServer_Check) 20 | 21 | typedef void(^HTRequestConfigure)(HTRequestListConfigure *configure); 22 | 23 | @interface HTRequestList : NSObject 24 | 25 | /** 26 | post请求 27 | 28 | @param url 请求地址 29 | @param params 参数 30 | @param configure 其他配置 31 | @param success 成功回调 32 | @param fail 失败回调 33 | @return task 34 | */ 35 | + (HTURLSessionTask *)requestPost:(NSString * _Nullable)url 36 | params:(id _Nullable)params 37 | configure:(HTRequestConfigure _Nullable)configure 38 | success:(HTResponseSuccess _Nullable)success 39 | fail:(HTResponseFail _Nullable)fail; 40 | 41 | /** 42 | get请求 43 | 44 | @param url 请求地址 45 | @param params 参数 46 | @param configure 其他配置 47 | @param success 成功回调 48 | @param fail 失败回调 49 | @return task 50 | */ 51 | + (HTURLSessionTask *)requestGet:(NSString * _Nullable)url 52 | params:(id _Nullable)params 53 | configure:(HTRequestConfigure _Nullable)configure 54 | success:(HTResponseSuccess _Nullable)success 55 | fail:(HTResponseFail _Nullable)fail; 56 | 57 | @end 58 | 59 | NS_ASSUME_NONNULL_END 60 | -------------------------------------------------------------------------------- /HeartTrip/Util/Networking/RACSignal+Request.h: -------------------------------------------------------------------------------- 1 | // 2 | // RACSignal+Request.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2020/11/20. 6 | // Copyright © 2020 BinBear. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "HTRequestList.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | typedef void (^requestSignalBlock)(id response, id subscriber); 15 | 16 | @interface RACSignal (Request) 17 | 18 | /** 19 | signal的get请求,可配置请求体 20 | 21 | @param url 请求地址 22 | @param params 参数 23 | @param configure 其他配置 24 | @param handleSignal 自己处理处理信号发送,传入nil 默认处理 25 | @return Signal 26 | */ 27 | + (instancetype)signalGetAuth:(NSString * _Nullable)url 28 | params:(id _Nullable)params 29 | configure:(HTRequestConfigure _Nullable)configure 30 | handleSignal:(requestSignalBlock _Nullable)handleSignal; 31 | 32 | /** 33 | signal的post请求 34 | 35 | @param url 请求地址 36 | @param params 参数 37 | @param configure 其他配置 38 | @param handleSignal 自己处理处理信号发送,传入nil 默认处理 39 | @return Signal 40 | */ 41 | + (instancetype)signalPostAuth:(NSString * _Nullable)url 42 | params:(id _Nullable)params 43 | configure:(HTRequestConfigure _Nullable)configure 44 | handleSignal:(requestSignalBlock _Nullable)handleSignal; 45 | 46 | @end 47 | 48 | NS_ASSUME_NONNULL_END 49 | -------------------------------------------------------------------------------- /HeartTrip/Util/RouteMediator/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Util/RouteMediator/.DS_Store -------------------------------------------------------------------------------- /HeartTrip/Util/RouteMediator/AppModule/AppModule/HTAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTAppDelegate.h 3 | // HeartTrip 4 | // 5 | // Created by 熊彬 on 16/9/18. 6 | // Copyright © 2016年 BinBear. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface HTAppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | /// 默认在debug模式下打印所有的模块方法调用和耗时 16 | - (BOOL)shouldModuleMetrics; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /HeartTrip/Util/RouteMediator/AppModule/AppModule/QTAppModuleManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // QTModuleManager.h 3 | // QTEventBus 4 | // 5 | // Created by Leo on 2018/7/26. 6 | // Copyright © 2018年 Leo Huang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "QTAppModule.h" 11 | 12 | /// 结构体,用于编译期注册 13 | struct QTAppModuleInfo{ 14 | char const * className; 15 | long priority; 16 | }; 17 | 18 | #define QTAppEventPriorityHigh LONG_MAX 19 | #define QTAppEventPriorityDefault 0 20 | #define QTAppEventPriorityLow LONG_MIN 21 | 22 | 23 | /// 注册一个应用生命周期事件监听者 24 | #define QTAppModuleRegister(_class_,_priority_)\ 25 | __attribute__((used)) static struct QTAppModuleInfo QTAppModule##_class_ \ 26 | __attribute__ ((used, section ("__DATA,__QTEventBus"))) =\ 27 | {\ 28 | .className = #_class_,\ 29 | .priority = _priority_,\ 30 | }; 31 | 32 | /// 非线程安全,需要在主线程调用 33 | @interface QTAppModuleManager : NSObject 34 | 35 | - (instancetype)init NS_UNAVAILABLE; 36 | 37 | /// 单例 38 | + (instancetype)shared; 39 | 40 | /// 迭代 41 | - (void)enumerateModulesUsingBlock:(void(^)(Class module))block; 42 | 43 | /// 注册 44 | - (void)registerAppModule:(Class)module priority:(long)priority; 45 | 46 | /// 删除注册 47 | - (void)removeAppModule:(Class)module; 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /HeartTrip/Util/RouteMediator/AppModule/AppModule/QTEventBus+AppModule.h: -------------------------------------------------------------------------------- 1 | // 2 | // QTEventBus+AppModule.h 3 | // QTEventBus 4 | // 5 | // Created by Leo on 2018/8/9. 6 | // Copyright © 2018年 Leo Huang. All rights reserved. 7 | // 8 | 9 | #ifndef QTEventBus_UIApplication_h 10 | #define QTEventBus_UIApplication_h 11 | 12 | #import "QTAppModule.h" 13 | #import "QTAppEvents.h" 14 | #import "QTAppModuleManager.h" 15 | #import "QTEventBus.h" 16 | 17 | #endif /* QTEventBus_UIApplication_h */ 18 | -------------------------------------------------------------------------------- /HeartTrip/Util/RouteMediator/AppModule/Core/NSNotification+QTEvent.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSNotification+QTEvent.h 3 | // QTEventBus 4 | // 5 | // Created by Leo on 2018/6/1. 6 | // Copyright © 2018年 Leo Huang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "QTEventTypes.h" 11 | 12 | @interface NSNotification (QTEvent) 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /HeartTrip/Util/RouteMediator/AppModule/Core/NSNotification+QTEvent.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSNotification+QTEvent.m 3 | // QTEventBus 4 | // 5 | // Created by Leo on 2018/6/1. 6 | // Copyright © 2018年 Leo Huang. All rights reserved. 7 | // 8 | 9 | #import "NSNotification+QTEvent.h" 10 | 11 | @implementation NSNotification (QTEvent) 12 | 13 | + (Class)eventClass{ 14 | return [NSNotification class]; 15 | } 16 | 17 | - (NSString *)eventSubType{ 18 | return self.name; 19 | } 20 | 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /HeartTrip/Util/RouteMediator/AppModule/Core/NSObject+QTEventBus_Private.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+QTEventBus_Private.h 3 | // Demo 4 | // 5 | // Created by Leo on 2018/11/18. 6 | // Copyright © 2018 Leo Huang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "QTDisposeBag.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface NSObject (QTEventBus_Private) 15 | 16 | /// 释放池 17 | @property (strong, nonatomic, readonly) QTDisposeBag *eb_disposeBag; 18 | 19 | @end 20 | 21 | NS_ASSUME_NONNULL_END 22 | -------------------------------------------------------------------------------- /HeartTrip/Util/RouteMediator/AppModule/Core/NSObject+QTEventBus_Private.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+QTEventBus_Private.m 3 | // Demo 4 | // 5 | // Created by Leo on 2018/11/18. 6 | // Copyright © 2018 Leo Huang. All rights reserved. 7 | // 8 | 9 | #import "NSObject+QTEventBus_Private.h" 10 | #import 11 | 12 | static const char event_bus_disposeContext; 13 | 14 | @implementation NSObject (QTEventBus_Private) 15 | 16 | - (QTDisposeBag *)eb_disposeBag{ 17 | QTDisposeBag * bag = objc_getAssociatedObject(self, &event_bus_disposeContext); 18 | if (!bag) { 19 | bag = [[QTDisposeBag alloc] init]; 20 | objc_setAssociatedObject(self, &event_bus_disposeContext, bag, OBJC_ASSOCIATION_RETAIN); 21 | } 22 | return bag; 23 | } 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /HeartTrip/Util/RouteMediator/AppModule/Core/NSString+QTEevnt.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+QTEevnt.h 3 | // QTEventBus 4 | // 5 | // Created by Leo on 2018/11/9. 6 | // Copyright © 2018 Leo Huang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "QTEventTypes.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface NSString (QTEevnt) 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /HeartTrip/Util/RouteMediator/AppModule/Core/NSString+QTEevnt.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+QTEevnt.m 3 | // QTEventBus 4 | // 5 | // Created by Leo on 2018/11/9. 6 | // Copyright © 2018 Leo Huang. All rights reserved. 7 | // 8 | 9 | #import "NSString+QTEevnt.h" 10 | 11 | @implementation NSString (QTEevnt) 12 | 13 | - (NSString *)eventSubType{ 14 | return [self copy]; 15 | } 16 | 17 | + (Class)eventClass{ 18 | return [NSString class]; 19 | } 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /HeartTrip/Util/RouteMediator/AppModule/Core/QTDisposeBag.h: -------------------------------------------------------------------------------- 1 | // 2 | // QTDisposeBag.h 3 | // QTEventBus 4 | // 5 | // Created by Leo on 2018/6/4. 6 | // Copyright © 2018年 Leo Huang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "QTEventTypes.h" 11 | 12 | @interface QTDisposeBag : NSObject 13 | 14 | 15 | /// 增加一个需要释放的token 16 | /// @param token 释放的token 17 | - (void)addToken:(id)token; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /HeartTrip/Util/RouteMediator/AppModule/Core/QTDisposeBag.m: -------------------------------------------------------------------------------- 1 | // 2 | // QTDisposeBag.m 3 | // QTEventBus 4 | // 5 | // Created by Leo on 2018/6/4. 6 | // Copyright © 2018年 Leo Huang. All rights reserved. 7 | // 8 | 9 | #import "QTDisposeBag.h" 10 | #import 11 | 12 | @interface QTDisposeBag() 13 | 14 | @property (strong, nonatomic) NSMutableArray> * tokens; 15 | @property (assign, nonatomic) os_unfair_lock taskLock; 16 | 17 | @end 18 | 19 | @implementation QTDisposeBag 20 | 21 | - (NSMutableArray> *)tokens{ 22 | if (!_tokens) { 23 | _tokens = [[NSMutableArray alloc] init]; 24 | _taskLock = OS_UNFAIR_LOCK_INIT; 25 | } 26 | return _tokens; 27 | } 28 | 29 | - (void)addToken:(id)token{ 30 | os_unfair_lock_lock(&_taskLock); 31 | if (token && [token conformsToProtocol:@protocol(QTEventToken)]) { 32 | [self.tokens addObject:token]; 33 | } 34 | os_unfair_lock_unlock(&_taskLock); 35 | } 36 | 37 | - (void)dealloc{ 38 | os_unfair_lock_lock(&_taskLock); 39 | for (id token in self.tokens) { 40 | if ([token respondsToSelector:@selector(dispose)]) { 41 | [token dispose]; 42 | } 43 | } 44 | os_unfair_lock_unlock(&_taskLock); 45 | } 46 | 47 | @end 48 | -------------------------------------------------------------------------------- /HeartTrip/Util/RouteMediator/AppModule/Core/QTEventBusCollection.h: -------------------------------------------------------------------------------- 1 | // 2 | // QTEventBusCollection.h 3 | // QTRadio 4 | // 5 | // Created by Leo on 2018/2/7. 6 | // Copyright © 2018年 Leo Huang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @protocol QTEventBusContainerValue 12 | 13 | /// 值的唯一标识符 14 | - (NSString *)valueUniqueId; 15 | 16 | @end 17 | 18 | /// 保存监听者的容器,key映射到一个数组,线程安全, 插入,删除 O(1) 19 | @interface QTEventBusCollection> : NSObject 20 | 21 | /// 在key对应的集合中,增加一个对象 22 | /// @param object 插入对象 23 | /// @param key key 24 | - (void)addObject:(ValueType)object forKey:(NSString *)key; 25 | 26 | /** 27 | 删除key对应集合中的一个唯一对象,返回这个key对应的是否为空 28 | */ 29 | 30 | /// 删除key对应集合中的一个唯一对象,返回这个key对应的是否为空 31 | /// @param uniqueId 删除对象 32 | /// @param key key 33 | - (BOOL)removeUniqueId:(NSString *)uniqueId ofKey:(NSString *)key; 34 | 35 | /// 返回一组值,注意返回的是指针的浅拷贝 36 | /// @param key key 37 | - (NSArray *)objectsForKey:(NSString *)key; 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /HeartTrip/Util/RouteMediator/AppModule/Core/QTEventTypes.h: -------------------------------------------------------------------------------- 1 | // 2 | // QTEventTypes.h 3 | // QTEventBus 4 | // 5 | // Created by Leo on 2018/6/1. 6 | // Copyright © 2018年 Leo Huang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @protocol QTEvent 12 | 13 | @optional 14 | 15 | /// 事件的名称 @note: 有些类在运行时是子类,用这个强制返回父类 16 | + (Class)eventClass; 17 | 18 | /// 事件的二级类型 19 | - (NSString *)eventSubType; 20 | 21 | @end 22 | 23 | @protocol QTEventToken 24 | 25 | /// 释放当前的监听 26 | - (void)dispose; 27 | 28 | @end 29 | 30 | /// 提供一套DSL监听 31 | @interface QTEventSubscriberMaker : NSObject 32 | 33 | typedef void (^QTEventNextBlock)(Value event) NS_SWIFT_UNAVAILABLE(""); 34 | 35 | /// 事件触发的回调 36 | /// @param hander 回调Block 37 | - (id)next:(QTEventNextBlock)hander; 38 | 39 | /// 监听的队列,设置了监听队列后,副作用事件的监听会变成异步 40 | /// @param queue 队列 41 | - (QTEventSubscriberMaker *)atQueue:(dispatch_queue_t)queue; 42 | 43 | /// 在对象释放的时候,释放监听 44 | /// @param object 释放对象 45 | - (QTEventSubscriberMaker *)freeWith:(id)object; 46 | 47 | /// 二级事件,这个操作符可以多次使用 48 | /// 举个例子:[QTEventBus shared].on(QTJsonEvent.class).ofSubType(@"Login").ofSubType(@"Logout") 49 | /// 表示同时监听QTJsonEvent下面的id为Login和Logout事件 50 | /// @param subType 操作符 51 | - (QTEventSubscriberMaker *)ofSubType:(NSString *)subType; 52 | 53 | 54 | #pragma mark - 点语法扩展 55 | 56 | @property (readonly, nonatomic) QTEventSubscriberMaker *(^atQueue)(dispatch_queue_t); 57 | 58 | @property (readonly, nonatomic) QTEventSubscriberMaker *(^ofSubType)(NSString *); 59 | 60 | @property (readonly, nonatomic) QTEventSubscriberMaker *(^freeWith)(id); 61 | 62 | 63 | @end 64 | 65 | -------------------------------------------------------------------------------- /HeartTrip/Util/RouteMediator/AppModule/Core/QTJsonEvent.h: -------------------------------------------------------------------------------- 1 | // 2 | // QTJsonEvent.h 3 | // QTEventBus 4 | // 5 | // Created by Leo on 2018/7/5. 6 | // Copyright © 2018年 Leo Huang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "QTEventTypes.h" 11 | 12 | /// 通用的JSON Event,用于松耦合事件传递。 13 | @interface QTJsonEvent : NSObject 14 | 15 | - (instancetype)init NS_UNAVAILABLE; 16 | 17 | 18 | /// 事件的唯一id 19 | @property (readonly) NSString * uniqueId; 20 | 21 | 22 | /// 事件的数据,只可能为NSDictionary或者NSArray 23 | @property (readonly) id data; 24 | 25 | 26 | /// 字典初始化 27 | /// @param uniqueId 事件ID 28 | /// @param data 初始化数据 29 | + (instancetype)eventWithId:(NSString *)uniqueId jsonObject:(NSDictionary *)data; 30 | 31 | /// 数组初始化 32 | /// @param uniqueId 事件ID 33 | /// @param data 初始化数据 34 | + (instancetype)eventWithId:(NSString *)uniqueId jsonArray:(NSArray *)data; 35 | 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /HeartTrip/Util/RouteMediator/AppModule/Core/QTJsonEvent.m: -------------------------------------------------------------------------------- 1 | // 2 | // QTJsonEvent.m 3 | // QTEventBus 4 | // 5 | // Created by Leo on 2018/7/5. 6 | // Copyright © 2018年 Leo Huang. All rights reserved. 7 | // 8 | 9 | #import "QTJsonEvent.h" 10 | 11 | @interface QTJsonEvent() 12 | 13 | @property (nonatomic, copy) NSString * uniqueId; 14 | 15 | @property (nonatomic, strong) id data; 16 | 17 | 18 | @end 19 | 20 | @implementation QTJsonEvent 21 | 22 | - (instancetype)initWithId:(NSString *)unqiueId data:(id)data{ 23 | if (self = [super init]) { 24 | _data = data; 25 | _uniqueId = unqiueId; 26 | } 27 | return self; 28 | } 29 | 30 | + (instancetype)eventWithId:(NSString *)uniqueId jsonArray:(NSArray *)data{ 31 | NSAssert([data isKindOfClass:[NSArray class]], @"Data must be NSArray"); 32 | return [[self alloc] initWithId:uniqueId data:data]; 33 | } 34 | 35 | + (instancetype)eventWithId:(NSString *)uniqueId jsonObject:(NSDictionary *)data{ 36 | NSAssert([data isKindOfClass:[NSDictionary class]], @"Data must be NSDictionary"); 37 | return [[self alloc] initWithId:uniqueId data:data]; 38 | } 39 | 40 | - (NSString *)eventSubType{ 41 | return self.uniqueId; 42 | } 43 | 44 | @end 45 | -------------------------------------------------------------------------------- /HeartTrip/Util/RouteMediator/URLRouteMediator/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/HeartTrip/Util/RouteMediator/URLRouteMediator/.DS_Store -------------------------------------------------------------------------------- /HeartTrip/Util/RouteMediator/URLRouteMediator/Base/HTBaseEnum.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTBaseEnum.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/5/20. 6 | // Copyright © 2021 BinBear. All rights reserved. 7 | // 8 | 9 | #ifndef HTBaseEnum_h 10 | #define HTBaseEnum_h 11 | 12 | /// TableView上下拉刷新类型 13 | typedef NS_ENUM(NSUInteger, HTRefreshActionType) { 14 | HTRefreshActionType_First = 0, // 首次加载 15 | HTRefreshActionType_Refresh, // 下拉刷新 16 | HTRefreshActionType_LoadMore, // 加载更多 17 | }; 18 | 19 | /// Tableview数据占位图类型 20 | typedef NS_ENUM(NSUInteger, HTEmptyType) { 21 | HTEmptyType_NoStatus = 1U << 0, // 无状态,还未请求接口 22 | HTEmptyType_NoData = 1U << 1, // 暂无数据 23 | HTEmptyType_NetworkError = 1U << 2, // 网络连接异常,请稍后再试 24 | HTEmptyType_OneAction = 1U << 3, // 单个按钮 25 | HTEmptyType_TwoAction = 1U << 4, // 两个按钮 26 | HTEmptyType_Success = 1U << 5 // 请求成功 27 | }; 28 | 29 | typedef NS_ENUM(NSUInteger, HCURLRouteActionType) { 30 | HCURLRouteActionType_Push = 0, // Push跳转 31 | HCURLRouteActionType_Present, // Present跳转 32 | HCURLRouteActionType_Pop, // Pop跳转 33 | HCURLRouteActionType_Dismiss, // Dismiss跳转 34 | }; 35 | 36 | #endif /* HTBaseEnum_h */ 37 | -------------------------------------------------------------------------------- /HeartTrip/Util/RouteMediator/URLRouteMediator/Base/HTBaseModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTBaseModel.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/4/18. 6 | // Copyright © 2021 BinBear. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface HTBaseModel : NSObject 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /HeartTrip/Util/RouteMediator/URLRouteMediator/Base/HTBaseModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // HTBaseModel.m 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/4/18. 6 | // Copyright © 2021 BinBear. All rights reserved. 7 | // 8 | 9 | #import "HTBaseModel.h" 10 | 11 | @implementation HTBaseModel 12 | 13 | - (void)encodeWithCoder:(NSCoder *)aCoder { 14 | [self yy_modelEncodeWithCoder:aCoder]; 15 | } 16 | - (id)initWithCoder:(NSCoder *)aDecoder { 17 | self = [super init]; 18 | return [self yy_modelInitWithCoder:aDecoder]; 19 | } 20 | - (id)copyWithZone:(NSZone *)zone { 21 | return [self yy_modelCopy]; 22 | } 23 | - (NSUInteger)hash { 24 | return [self yy_modelHash]; 25 | } 26 | - (BOOL)isEqual:(id)object { 27 | return [self yy_modelIsEqual:object]; 28 | } 29 | - (NSString *)description { 30 | return [self yy_modelDescription]; 31 | } 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /HeartTrip/Util/RouteMediator/URLRouteMediator/Base/HTBaseViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTBaseViewController.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/5/26. 6 | // Copyright © 2021 Vin. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "HTBaseViewModel.h" 11 | #import "HTViewControllerProtocol.h" 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface HTBaseViewController<__covariant viewModelType: HTBaseViewModel *> : UIViewController 16 | 17 | /// viewModel 18 | @property (nonatomic,strong,readonly) viewModelType viewModel; 19 | 20 | @end 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /HeartTrip/Util/RouteMediator/URLRouteMediator/Base/HTBaseViewModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTBaseViewModel.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/5/26. 6 | // Copyright © 2021 Vin. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "HTViewModelProtocol.h" 11 | #import "HTBaseEnum.h" 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | #define isKey(_key) [key isEqualToString:_key] 16 | 17 | @interface HTBaseViewModel : NSObject 18 | 19 | /// 空占位图类型 20 | @property (nonatomic,assign) HTEmptyType emptyType; 21 | 22 | /// 根据key,配置相应的Command 23 | /// @param key key 24 | - (RACCommand *)commandForKey:(NSString * _Nullable)key; 25 | 26 | /// 根据key,配置相应的EnabledSignal 27 | /// @param key key 28 | - (RACSignal *)commandEnabledSignalForKey:(NSString * _Nullable)key; 29 | 30 | /// 根据key,配置Command的执行Signal 31 | /// @param input Command的input 32 | /// @param key key 33 | - (RACSignal *)commandSignalWithInput:(id _Nullable)input forKey:(NSString * _Nullable)key; 34 | 35 | 36 | @end 37 | 38 | NS_ASSUME_NONNULL_END 39 | -------------------------------------------------------------------------------- /HeartTrip/Util/RouteMediator/URLRouteMediator/Base/HTViewControllerProtocol.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTViewControllerProtocol.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/5/26. 6 | // Copyright © 2021 Vin. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @protocol HTViewModelProtocol; 14 | @protocol HTViewControllerProtocol 15 | 16 | @optional 17 | 18 | /// 路由向下传递的数据 19 | @property (nonatomic,strong,readonly) id parameter; 20 | /// 路由向下传递的viewModel 21 | @property (nonatomic,strong,readonly) id viewModel; 22 | 23 | /// 初始化Controller,并赋值viewModel 24 | /// @param viewModelName viewModel名称 25 | /// @param parameter viewModel参数 26 | + (instancetype)viewControllerWithViewModelName:(NSString * _Nullable)viewModelName 27 | parameter:(id _Nullable)parameter; 28 | 29 | /// viewModel正在初始化,子类实现 30 | - (void)bindViewModelWillLoad; 31 | /// viewModel已初始化,子类实现 32 | - (void)bindViewModelDidLoad; 33 | 34 | /// 栈底的控制器pop时,需要往栈顶的控制器传数据,实现此方法 35 | /// @param name 栈底pop的控制器 36 | /// @param parameter 传输的数据 37 | - (void)popFromViewController:(NSString * _Nullable)name 38 | parameter:(id _Nullable)parameter; 39 | 40 | /// 栈顶的控制器dismiss时,需要往栈底的控制器传数据,实现此方法 41 | /// @param name 栈顶dismiss的控制器 42 | /// @param parameter 传输的数据 43 | - (void)dismissFromViewController:(NSString *)name 44 | parameter:(NSDictionary *)parameter; 45 | 46 | @end 47 | 48 | NS_ASSUME_NONNULL_END 49 | -------------------------------------------------------------------------------- /HeartTrip/Util/RouteMediator/URLRouteMediator/Base/HTViewModelProtocol.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTViewModelProtocol.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/5/26. 6 | // Copyright © 2021 Vin. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @protocol HTViewControllerProtocol; 14 | @protocol HTViewModelProtocol 15 | 16 | @optional 17 | 18 | /// 路由向下传递的数据 19 | @property (nonatomic,strong,readonly) id parameter; 20 | /// 当前viewModel所在控制器的导航控制器 21 | @property (nonatomic,weak, readonly) UINavigationController *viewModelNavigationController; 22 | /// 当前viewModel所在控制器 23 | @property (nonatomic,weak, readonly) UIViewController *viewModelController; 24 | /// 根据key配置相应的Command 25 | @property (nonatomic,copy, readonly) RACCommand *(^requestCommand)(NSString *_Nullable key); 26 | /// 根据key配置相应的刷新Signal 27 | @property (nonatomic,copy, readonly) RACSubject *(^refreshSignal)(NSString *_Nullable key); 28 | 29 | /// 初始化一个viewModel,并且赋值viewModel的相应属性 30 | /// @param parameter viewModel参数 31 | + (instancetype)viewModelWithParameter:(id _Nullable)parameter; 32 | 33 | /// viewModel已初始化,子类实现 34 | - (void)viewModelLoad; 35 | 36 | @end 37 | 38 | NS_ASSUME_NONNULL_END 39 | -------------------------------------------------------------------------------- /HeartTrip/Util/RouteMediator/URLRouteMediator/ModelParser/HTModelParserProtocol.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTModelParserProtocol.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/5/26. 6 | // Copyright © 2021 Vin. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @protocol HTModelParserProtocol 14 | 15 | + (nullable instancetype)ht_modelWithJSON:(id)json; 16 | + (NSArray *)ht_modelArrayWithJSON:(id)json; 17 | - (void)ht_modelSetWithJSON:(id)json; 18 | 19 | - (nullable id)ht_modelToJSONObject; 20 | - (nullable NSData *)ht_modelToJSONData; 21 | - (nullable NSString *)ht_modelToJSONString; 22 | 23 | 24 | + (nullable NSArray *)ht_modelPropertyBlacklist; 25 | + (nullable NSArray *)ht_modelPropertyWhitelist; 26 | + (nullable NSDictionary *)ht_modelCustomPropertyMapper; 27 | + (nullable NSDictionary *)ht_modelContainerPropertyGenericClass; 28 | - (void)ht_modelDidParsedWithDictionary:(NSDictionary *)dictionary; 29 | 30 | @end 31 | 32 | NS_ASSUME_NONNULL_END 33 | -------------------------------------------------------------------------------- /HeartTrip/Util/RouteMediator/URLRouteMediator/ModelParser/NSObject+HTModelParser.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+HTModelParser.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/5/26. 6 | // Copyright © 2021 Vin. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "HTModelParserProtocol.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface NSObject (HTModelParser) 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /HeartTrip/Util/RouteMediator/URLRouteMediator/Route/NSObject+HTRouteProtocol.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+HTRouteProtocol.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/5/26. 6 | // Copyright © 2021 Vin. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "HTViewControllerRouteProtocol.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface NSObject (HTRouteProtocol) 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /HeartTrip/Util/RouteMediator/URLRouteMediator/Route/RACCommand+HTRoute.m: -------------------------------------------------------------------------------- 1 | // 2 | // RACCommand+HTRoute.m 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/5/26. 6 | // Copyright © 2021 Vin. All rights reserved. 7 | // 8 | 9 | #import "RACCommand+HTRoute.h" 10 | 11 | @implementation RACCommand (HTRoute) 12 | 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /HeartTrip/Util/RouteMediator/URLRouteMediator/Route/RACSignal+HTRoute.m: -------------------------------------------------------------------------------- 1 | // 2 | // RACSignal+HTRoute.m 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/5/26. 6 | // Copyright © 2021 Vin. All rights reserved. 7 | // 8 | 9 | #import "RACSignal+HTRoute.h" 10 | 11 | @implementation RACSignal (HTRoute) 12 | 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /HeartTrip/Util/RouteMediator/URLRouteMediator/URLParser/HTURLRouteParser.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTURLRouteParser.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/6/19. 6 | // Copyright © 2021 Vin. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "HTURLRouteParserProtocol.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface HTURLRouteParser : NSObject 15 | 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /HeartTrip/Util/RouteMediator/URLRouteMediator/URLParser/HTURLRouteParserProtocol.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTURLRouteParserProtocol.h 3 | // HeartTrip 4 | // 5 | // Created by vin on 2021/6/19. 6 | // Copyright © 2021 Vin. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "HTBaseEnum.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @protocol HTURLRouteParserProtocol 15 | 16 | @optional 17 | 18 | /// 路由URL中控制器名称 19 | @property (copy, nonatomic,readonly) NSString *ctrName; 20 | /// 路由URL中viewModel名称 21 | @property (copy, nonatomic,readonly) NSString *vmName; 22 | /// 路由URL中参数 23 | @property (strong,nonatomic,readonly) id parameter; 24 | /// 路由URL中跳转类型 25 | @property (assign,nonatomic,readonly) HCURLRouteActionType actionType; 26 | /// 是否标准的路由 27 | @property (assign,nonatomic,readonly) BOOL isRouteURL; 28 | 29 | 30 | /// 初始化一个路由解析实例 31 | /// @param url 路由 32 | + (instancetype)urlRoutePaeserWithURL:(NSString *)url; 33 | 34 | /// 解析URL 35 | - (void)parseURL; 36 | 37 | @end 38 | 39 | NS_ASSUME_NONNULL_END 40 | -------------------------------------------------------------------------------- /HeartTrip/Util/Utils/HTUtilsMethod.h: -------------------------------------------------------------------------------- 1 | // 2 | // HTUtilsMethod.h 3 | // HeartTrip 4 | // 5 | // Created by 熊彬 on 16/11/24. 6 | // Copyright © 2016年 BinBear. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface HTUtilsMethod : NSObject 12 | 13 | /// 切割字符串 14 | NSMutableArray *componentsSeparatByString (NSString *numStr, NSString *separatStr); 15 | 16 | /// 删除小数点后面的0 17 | NSString *changeFloat(NSString *stringFloat); 18 | 19 | /// 根据精度格式化字符串,是否加逗号 num: 格式化数字 precision: 精度 isSeparate: 是否加逗号 20 | NSString *stringFormatterCommaWithNumber(id num, NSInteger precision, BOOL isSeparate); 21 | 22 | /// 解决服务器返回数据精度丢失问题 23 | NSString *precisionControl(NSNumber *balance); 24 | 25 | /// 获取小数位数精度 26 | NSInteger getNumberDecimalDigits(double number); 27 | 28 | /// 给数字加逗号 29 | NSString *separateNumberUseCommaWith(NSString *number); 30 | 31 | /// 数量小数位处理,超过10000则以 万 为单位 32 | NSString *countTextCharsForNumber(id number, NSInteger digit); 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /HeartTrip/Vendor/MasonryExtentions/MASConstraintMaker+Forbearance.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASConstraintMaker+Forbearance.h 3 | // Star 4 | // 5 | // Created by 星星 on 16/7/5. 6 | // Copyright © 2016年 Star.China All rights reserved. 7 | // 8 | 9 | #import "MASConstraintMaker.h" 10 | #import "MASForbearance.h" 11 | 12 | @interface MASConstraintMaker (Forbearance) 13 | 14 | @property (nonatomic, strong, readonly) MASForbearance *hugging; 15 | @property (nonatomic, strong, readonly) MASForbearance *compression; 16 | @property (nonatomic, strong, readonly) MASForbearance *compressionResistance; 17 | 18 | @property (nonatomic, strong, readonly) MASForbearance *horizontal; 19 | @property (nonatomic, strong, readonly) MASForbearance *vertical; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /HeartTrip/Vendor/MasonryExtentions/MASForbearance.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASForbearance.h 3 | // Star 4 | // 5 | // Created by 星星 on 16/7/5. 6 | // Copyright © 2016年 Star.China All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | typedef NS_OPTIONS(NSUInteger, MASForbearanceRule) { 13 | MASForbearanceRuleHorizontal = 0x01 << 0, 14 | MASForbearanceRuleVertical = 0x01 << 1, 15 | MASForbearanceRuleHugging = 0x01 << 2, 16 | MASForbearanceRuleCompression = 0x01 << 3 17 | }; 18 | 19 | 20 | @class MASForbearance; 21 | 22 | @protocol MASForbearanceDelegate 23 | 24 | - (MASForbearance *)forbearance:(MASForbearance *)forbearance addForbearanceRule:(MASForbearanceRule)forbearanceRule; 25 | 26 | - (MASForbearance *)forbearance:(MASForbearance *)forbearance priority:(MASLayoutPriority)priority; 27 | 28 | @end 29 | 30 | @interface MASForbearance : NSObject 31 | 32 | @property (nonatomic, weak) id delegate; 33 | 34 | // Action 35 | - (MASForbearance *)hugging; 36 | - (MASForbearance *)compression; 37 | - (MASForbearance *)compressionResistance; 38 | 39 | // Axis 40 | - (MASForbearance *)horizontal; 41 | - (MASForbearance *)vertical; 42 | 43 | // Priority 44 | - (MASForbearance *(^)(MASLayoutPriority priority))priority; 45 | - (MASForbearance *(^)(void))priorityRequired; 46 | - (MASForbearance *(^)(void))priorityHigh; 47 | - (MASForbearance *(^)(void))priorityMedium; 48 | - (MASForbearance *(^)(void))priorityLow; 49 | - (MASForbearance *(^)(void))priorityFittingSizeLevel; 50 | 51 | @end 52 | -------------------------------------------------------------------------------- /HeartTrip/Vendor/MasonryExtentions/UIView+Forbearance.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+Forbearance.h 3 | // WexWeiCaiFu 4 | // 5 | // Created by 星星 on 16/8/9. 6 | // Copyright © 2016年 SinaPay. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIView (Forbearance) 12 | 13 | @property (nonatomic, assign) UILayoutPriority horizontalHuggingPriority; 14 | @property (nonatomic, assign) UILayoutPriority horizontalCompressionResistancePriority; 15 | @property (nonatomic, assign) UILayoutPriority verticalHuggingPriority; 16 | @property (nonatomic, assign) UILayoutPriority verticalCompressionResistancePriority; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /HeartTrip/Vendor/NSObjectSafe/NSObjectSafe.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObjectSafe.h 3 | // NSObjectSafe 4 | // 5 | // Created by jasenhuang on 15/12/29. 6 | // Copyright © 2015年 tencent. All rights reserved. 7 | // 8 | 9 | 10 | /** 11 | * Warn: NSObjectSafe must used in MRC, otherwise it will cause 12 | * strange release error: [UIKeyboardLayoutStar release]: message sent to deallocated instance 13 | */ 14 | 15 | #import "TargetConditionals.h" 16 | #if TARGET_OS_IPHONE 17 | #import 18 | #elif TARGET_OS_MAC 19 | #import 20 | #endif 21 | 22 | //! Project version number for NSObjectSafe. 23 | FOUNDATION_EXPORT double NSObjectSafeVersionNumber; 24 | 25 | //! Project version string for NSObjectSafe. 26 | FOUNDATION_EXPORT const unsigned char NSObjectSafeVersionString[]; 27 | 28 | // In this header, you should import all the public headers of your framework using statements like #import 29 | 30 | FOUNDATION_EXPORT NSString *const NSSafeNotification; 31 | 32 | @interface NSObject(Swizzle) 33 | + (void)swizzleClassMethod:(SEL)origSelector withMethod:(SEL)newSelector; 34 | - (void)swizzleInstanceMethod:(SEL)origSelector withMethod:(SEL)newSelector; 35 | @end 36 | 37 | -------------------------------------------------------------------------------- /HeartTrip/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // HeartTrip 4 | // 5 | // Created by 熊彬 on 16/9/9. 6 | // Copyright © 2016年 BinBear. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "HTAppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | NSString * appDelegateClassName; 14 | @autoreleasepool { 15 | appDelegateClassName = NSStringFromClass([HTAppDelegate class]); 16 | } 17 | return UIApplicationMain(argc, argv, nil, appDelegateClassName); 18 | } 19 | -------------------------------------------------------------------------------- /Podfile: -------------------------------------------------------------------------------- 1 | source 'https://cdn.cocoapods.org/' 2 | 3 | install! 'cocoapods', 4 | :generate_multiple_pod_projects => true 5 | 6 | deployment_target = '11.0' 7 | platform :ios, deployment_target 8 | 9 | inhibit_all_warnings! 10 | use_frameworks! 11 | 12 | 13 | def hearttrip_services 14 | # 基础组件 15 | pod 'VinBaseComponents', :git => 'https://github.com/BinBear/VinBaseComponents.git' 16 | pod 'FoldingTabBar', :git => 'https://github.com/BinBear/FoldingTabBar.iOS.git' 17 | end 18 | 19 | 20 | target 'HeartTrip' do 21 | 22 | # 服务组件 23 | hearttrip_services 24 | 25 | # 三方组件 26 | pod 'CocoaLumberjack' 27 | pod 'QMUIKit' 28 | pod 'KafkaRefresh' 29 | pod 'Masonry' 30 | pod 'IQKeyboardManager' 31 | pod 'SDWebImage' 32 | pod 'lottie-ios' 33 | pod 'Texture' 34 | pod 'YYModel' 35 | pod 'YYCategories' 36 | pod 'LBXPermission' 37 | pod 'Bugly' 38 | pod 'FluentDarkModeKit' 39 | pod 'LookinServer', :configurations => ['Debug'] 40 | pod 'DoraemonKit/Core', :configurations => ['Debug'] 41 | 42 | end 43 | 44 | post_install do |installer| 45 | installer.generated_projects.each do |project| 46 | project.targets.each do |target| 47 | target.build_configurations.each do |config| 48 | config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = deployment_target 49 | end 50 | end 51 | project.build_configurations.each do |bc| 52 | bc.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = deployment_target 53 | end 54 | end 55 | end 56 | -------------------------------------------------------------------------------- /ReadmeImage/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/ReadmeImage/.DS_Store -------------------------------------------------------------------------------- /ReadmeImage/MVVM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/ReadmeImage/MVVM.png -------------------------------------------------------------------------------- /ReadmeImage/city.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/ReadmeImage/city.png -------------------------------------------------------------------------------- /ReadmeImage/find.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/ReadmeImage/find.png -------------------------------------------------------------------------------- /ReadmeImage/finddetail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BinBear/breadtrip-ReactiveCocoa-MVVM-/3c1978ca9fc8b7aba70edbe762603c1b7ac68493/ReadmeImage/finddetail.png --------------------------------------------------------------------------------