├── .gitignore ├── Class ├── Base │ ├── TSCBaseHandler.h │ ├── TSCBaseHandler.m │ ├── TSCBaseNavViewController.h │ ├── TSCBaseNavViewController.m │ ├── TSCBaseViewController.h │ ├── TSCBaseViewController.m │ ├── TSCRefreshHeader.h │ ├── TSCRefreshHeader.m │ ├── TSCTabBar.h │ ├── TSCTabBar.m │ ├── TSCTabBarViewController.h │ └── TSCTabBarViewController.m ├── Common │ ├── Handler │ │ ├── TSCCommonHandler.h │ │ └── TSCCommonHandler.m │ ├── Model │ │ └── advertising │ │ │ ├── TSCAdvertisingData.h │ │ │ ├── TSCAdvertisingData.m │ │ │ ├── TSCAdvertisingRecord.h │ │ │ └── TSCAdvertisingRecord.m │ ├── View │ │ ├── TSCMainTopView.h │ │ ├── TSCMainTopView.m │ │ └── advertise │ │ │ ├── TSCAdvertiseView.h │ │ │ ├── TSCAdvertiseView.m │ │ │ └── TSCAdvertiseView.xib │ └── ViewController │ │ ├── TSCLoginViewController.h │ │ ├── TSCLoginViewController.m │ │ ├── TSCLoginViewController.xib │ │ ├── TSCMainViewController.h │ │ ├── TSCMainViewController.m │ │ └── TSCMainViewController.xib ├── Components │ ├── Bullet │ │ ├── TSCBulletManager.h │ │ ├── TSCBulletManager.m │ │ ├── TSCBulletView.h │ │ └── TSCBulletView.m │ └── New Group │ │ ├── TSCSwitch.h │ │ └── TSCSwitch.m ├── Helper │ ├── Category │ │ ├── NSString+CachePath.h │ │ ├── NSString+CachePath.m │ │ ├── UIView+TSCAlert.h │ │ └── UIView+TSCAlert.m │ └── Tools │ │ ├── TSCCacheHelper.h │ │ ├── TSCCacheHelper.m │ │ ├── TSCCollectionViewFlowLayout.h │ │ ├── TSCCollectionViewFlowLayout.m │ │ ├── TSCLocationManager.h │ │ └── TSCLocationManager.m ├── Live │ ├── View │ │ ├── LFLivePreview.h │ │ └── LFLivePreview.m │ └── ViewController │ │ ├── TSCLaunchViewController.h │ │ ├── TSCLaunchViewController.m │ │ └── TSCLaunchViewController.xib ├── Me │ └── ViewController │ │ ├── TSCMeViewController.h │ │ ├── TSCMeViewController.m │ │ └── TSCMeViewController.xib ├── NetWork │ ├── APIConfig.h │ ├── TSCHttpTool.h │ ├── TSCHttpTool.m │ ├── UIImageView+SDWebImage.h │ └── UIImageView+SDWebImage.m ├── Other │ ├── AppDelegate+TSCUMeung.h │ ├── AppDelegate+TSCUMeung.m │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── MJExtensionConfig.h │ ├── MJExtensionConfig.m │ ├── TSCCommonUtils.h │ ├── TSCCommonUtils.m │ ├── TSCMacros.h │ ├── ViewController.h │ ├── ViewController.m │ ├── property.plist │ └── yingke.pch └── Show │ ├── Handler │ ├── TSCLiveHandler.h │ └── TSCLiveHandler.m │ ├── Model │ ├── TSCActInfo.h │ ├── TSCActInfo.m │ ├── TSCCards.h │ ├── TSCCards.m │ ├── TSCCover.h │ ├── TSCCover.m │ ├── TSCCoverElements.h │ ├── TSCCoverElements.m │ ├── TSCCreator.h │ ├── TSCCreator.m │ ├── TSCData.h │ ├── TSCData.m │ ├── TSCExtra.h │ ├── TSCExtra.m │ ├── TSCFlow.h │ ├── TSCFlow.m │ ├── TSCLabel.h │ ├── TSCLabel.m │ ├── TSCLive.h │ ├── TSCLive.m │ ├── gift │ │ ├── TSCGiftExtra.h │ │ ├── TSCGiftExtra.m │ │ ├── TSCGifts.h │ │ ├── TSCGifts.m │ │ ├── TSCLevelInfo.h │ │ ├── TSCLevelInfo.m │ │ ├── TSCResource.h │ │ ├── TSCResource.m │ │ ├── TSCResourceExtra.h │ │ └── TSCResourceExtra.m │ ├── hotSpecial │ │ ├── TSCHotSpecialCard.h │ │ ├── TSCHotSpecialCard.m │ │ ├── TSCHotSpecialData.h │ │ ├── TSCHotSpecialData.m │ │ ├── TSCTicker.h │ │ └── TSCTicker.m │ ├── liveSwiper │ │ ├── TSCLiveSwiperCard.h │ │ ├── TSCLiveSwiperCard.m │ │ ├── TSCLiveSwiperChannel.h │ │ ├── TSCLiveSwiperChannel.m │ │ ├── TSCLiveSwiperChannelResource.h │ │ ├── TSCLiveSwiperChannelResource.m │ │ ├── TSCLiveSwiperData.h │ │ ├── TSCLiveSwiperData.m │ │ ├── TSCLiveSwiperExtra.h │ │ └── TSCLiveSwiperExtra.m │ └── playChat │ │ ├── TSCChatModel.h │ │ └── TSCChatModel.m │ ├── View │ ├── TSCLiveCellTableViewCell.h │ ├── TSCLiveCellTableViewCell.m │ ├── TSCLiveCellTableViewCell.xib │ ├── TSCNearLiveCell.h │ ├── TSCNearLiveCell.m │ ├── TSCNearLiveCell.xib │ ├── hotNew │ │ ├── TSCBannerImageCell.h │ │ ├── TSCBannerImageCell.m │ │ ├── TSCBannerImageCell.xib │ │ ├── TSCHotBannerCell.h │ │ ├── TSCHotBannerCell.m │ │ ├── TSCHotBannerCell.xib │ │ ├── TSCHotGameCell.h │ │ ├── TSCHotGameCell.m │ │ ├── TSCHotGameCell.xib │ │ ├── TSCHotLiveCell.h │ │ ├── TSCHotLiveCell.m │ │ ├── TSCHotLiveCell.xib │ │ ├── TSCHotSwiperLiveCell.h │ │ ├── TSCHotSwiperLiveCell.m │ │ └── TSCHotSwiperLiveCell.xib │ └── play │ │ ├── TSCChatViewCell.h │ │ ├── TSCChatViewCell.m │ │ ├── TSCChatViewCell.xib │ │ ├── TSCGiftCell.h │ │ ├── TSCGiftCell.m │ │ ├── TSCGiftCell.xib │ │ ├── TSCSystemMsgCell.h │ │ ├── TSCSystemMsgCell.m │ │ └── TSCSystemMsgCell.xib │ └── ViewController │ ├── TSCFocusViewController.h │ ├── TSCFocusViewController.m │ ├── TSCFocusViewController.xib │ ├── TSCHotViewController.h │ ├── TSCHotViewController.m │ ├── TSCHotViewController.xib │ ├── TSCHotViewControllerNew.h │ ├── TSCHotViewControllerNew.m │ ├── TSCHotViewControllerNew.xib │ ├── TSCNearViewController.h │ ├── TSCNearViewController.m │ ├── TSCNearViewController.xib │ └── livePlayer │ ├── TSCGiftViewController.h │ ├── TSCGiftViewController.m │ ├── TSCGiftViewController.xib │ ├── TSCLiveChatViewController.h │ ├── TSCLiveChatViewController.m │ ├── TSCLiveChatViewController.xib │ ├── TSCPlayerViewController.h │ └── TSCPlayerViewController.m ├── Podfile ├── Podfile.lock ├── README.md ├── Test-inke.xcodeproj ├── project.pbxproj └── xcuserdata │ └── tangsicheng.xcuserdatad │ └── xcschemes │ └── xcschememanagement.plist ├── Test-inke ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ ├── AppIcon29x29@2x.png │ │ ├── AppIcon29x29@3x.png │ │ ├── AppIcon40x40@2x.png │ │ ├── AppIcon40x40@3x.png │ │ ├── AppIcon60x60@2x.png │ │ ├── AppIcon60x60@3x.png │ │ └── Contents.json │ ├── Contents.json │ ├── Home │ │ ├── Contents.json │ │ ├── default_room.imageset │ │ │ ├── Contents.json │ │ │ └── default_room.png │ │ ├── home_page_portrait_mask.imageset │ │ │ ├── Contents.json │ │ │ └── home_page_portrait_mask.png │ │ ├── home_rec_bottom_shadow.imageset │ │ │ ├── Contents.json │ │ │ └── home_rec_bottom_shadow.png │ │ └── live_tag_live.imageset │ │ │ ├── Contents.json │ │ │ ├── live_tag_live@2x.png │ │ │ └── live_tag_live@3x.png │ ├── LaunchImage.launchimage │ │ ├── Contents.json │ │ ├── LaunchImage-700-568h@2x.png │ │ ├── LaunchImage-700@2x.png │ │ ├── LaunchImage-800-667h@2x.png │ │ ├── LaunchImage-800-Landscape-736h@3x.png │ │ └── LaunchImage-800-Portrait-736h@3x.png │ ├── LaunchLive │ │ ├── Contents.json │ │ ├── bg_zbfx.imageset │ │ │ ├── Contents.json │ │ │ └── bg_zbfx@3x.png │ │ ├── launch_close.imageset │ │ │ ├── Contents.json │ │ │ ├── launch_close@2x.png │ │ │ └── launch_close@3x.png │ │ ├── launch_map_off.imageset │ │ │ ├── Contents.json │ │ │ ├── launch_map_off@2x.png │ │ │ └── launch_map_off@3x.png │ │ ├── launch_map_on.imageset │ │ │ ├── Contents.json │ │ │ ├── launch_map_on@2x.png │ │ │ └── launch_map_on@3x.png │ │ └── room_button.imageset │ │ │ ├── Contents.json │ │ │ ├── room_button@2x.png │ │ │ └── room_button@3x.png │ ├── Navbar │ │ ├── Contents.json │ │ ├── global_back.imageset │ │ │ ├── Contents.json │ │ │ ├── global_back@2x.png │ │ │ └── global_back@3x.png │ │ ├── global_search.imageset │ │ │ ├── Contents.json │ │ │ ├── global_search@2x.png │ │ │ └── global_search@3x.png │ │ ├── global_tittle_bg.imageset │ │ │ ├── Contents.json │ │ │ ├── global_tittle_bg@2x.png │ │ │ └── global_tittle_bg@3x.png │ │ └── title_button_more.imageset │ │ │ ├── Contents.json │ │ │ ├── title_button_more@2x.png │ │ │ └── title_button_more@3x.png │ ├── Player │ │ ├── Contents.json │ │ ├── heart_1.imageset │ │ │ ├── Contents.json │ │ │ └── heart_1.png │ │ ├── heart_2.imageset │ │ │ ├── Contents.json │ │ │ └── heart_2.png │ │ ├── heart_3.imageset │ │ │ ├── Contents.json │ │ │ └── heart_3.png │ │ ├── heart_4.imageset │ │ │ ├── Contents.json │ │ │ └── heart_4.png │ │ ├── heart_5.imageset │ │ │ ├── Contents.json │ │ │ └── heart_5.png │ │ ├── mg_room_btn_fenxiang_h.imageset │ │ │ ├── Contents.json │ │ │ ├── mg_room_btn_fenxiang_h@2x.png │ │ │ └── mg_room_btn_fenxiang_h@3x.png │ │ ├── mg_room_btn_guan_h.imageset │ │ │ ├── Contents.json │ │ │ ├── mg_room_btn_guan_h@2x.png │ │ │ └── mg_room_btn_guan_h@3x.png │ │ ├── mg_room_btn_liao_h.imageset │ │ │ ├── Contents.json │ │ │ ├── mg_room_btn_liao_h@2x.png │ │ │ └── mg_room_btn_liao_h@3x.png │ │ ├── mg_room_btn_liwu_h.imageset │ │ │ ├── Contents.json │ │ │ ├── mg_room_btn_liwu_h@2x.png │ │ │ └── mg_room_btn_liwu_h@3x.png │ │ ├── mg_room_btn_xinxi_h.imageset │ │ │ ├── Contents.json │ │ │ ├── mg_room_btn_xinxi_h@2x.png │ │ │ └── mg_room_btn_xinxi_h@3x.png │ │ ├── mg_room_touxiang.imageset │ │ │ ├── Contents.json │ │ │ ├── mg_room_touxiang@2x.png │ │ │ └── mg_room_touxiang@3x.png │ │ ├── mg_room_yinpiao_bottom.imageset │ │ │ ├── Contents.json │ │ │ ├── mg_room_yinpiao_bottom@2x.png │ │ │ └── mg_room_yinpiao_bottom@3x.png │ │ └── room_jianbian_all.imageset │ │ │ ├── Contents.json │ │ │ └── room_jianbian_all.png │ ├── Tabbar │ │ ├── Contents.json │ │ ├── global_tab_bg.imageset │ │ │ ├── Contents.json │ │ │ ├── global_tab_bg@2x.png │ │ │ └── global_tab_bg@3x.png │ │ ├── tab_launch.imageset │ │ │ ├── Contents.json │ │ │ ├── tab_launch@2x.png │ │ │ └── tab_launch@3x.png │ │ ├── tab_live.imageset │ │ │ ├── Contents.json │ │ │ ├── tab_live@2x.png │ │ │ └── tab_live@3x.png │ │ ├── tab_live_p.imageset │ │ │ ├── Contents.json │ │ │ ├── tab_live_p@2x.png │ │ │ └── tab_live_p@3x.png │ │ ├── tab_me.imageset │ │ │ ├── Contents.json │ │ │ ├── tab_me@2x.png │ │ │ └── tab_me@3x.png │ │ └── tab_me_p.imageset │ │ │ ├── Contents.json │ │ │ ├── tab_me_p@2x.png │ │ │ └── tab_me_p@3x.png │ ├── gift │ │ ├── Contents.json │ │ ├── bangbangtang.imageset │ │ │ ├── Contents.json │ │ │ └── MTUwMjQ0MjY4MTA0MyM0MTAjanBn.jpg │ │ ├── first_charge_icon.imageset │ │ │ ├── Contents.json │ │ │ └── first_charge_icon.png │ │ ├── first_charge_reward_diamond.imageset │ │ │ ├── Contents.json │ │ │ └── first_charge_reward_diamond.png │ │ ├── first_charge_reward_star.imageset │ │ │ ├── Contents.json │ │ │ └── first_charge_reward_star.png │ │ ├── gift_fireworks_1.imageset │ │ │ ├── Contents.json │ │ │ └── gift_fireworks_1.png │ │ ├── gift_fireworks_2.imageset │ │ │ ├── Contents.json │ │ │ └── gift_fireworks_2.png │ │ ├── gift_type_icon.imageset │ │ │ ├── Contents.json │ │ │ └── gift_type_icon.png │ │ └── pay_arrow.imageset │ │ │ ├── Contents.json │ │ │ └── pay_arrow.png │ ├── liveImage │ │ ├── Contents.json │ │ ├── camra_beauty.imageset │ │ │ ├── Contents.json │ │ │ ├── camra_beauty@2x.png │ │ │ └── camra_beauty@3x.png │ │ ├── camra_beauty_close.imageset │ │ │ ├── Contents.json │ │ │ ├── camra_beauty_close@2x.png │ │ │ └── camra_beauty_close@3x.png │ │ ├── camra_preview.imageset │ │ │ ├── Contents.json │ │ │ ├── camra_preview@2x.png │ │ │ └── camra_preview@3x.png │ │ ├── close_preview.imageset │ │ │ ├── Contents.json │ │ │ ├── close_preview@2x.png │ │ │ └── close_preview@3x.png │ │ └── ios-29x29.imageset │ │ │ ├── Contents.json │ │ │ └── ios-29x29.png │ ├── login │ │ ├── Contents.json │ │ ├── bg_login2.imageset │ │ │ ├── Contents.json │ │ │ └── bg_login2.png │ │ ├── login_icon_phone.imageset │ │ │ ├── Contents.json │ │ │ └── login_icon_phone.png │ │ ├── login_icon_qq.imageset │ │ │ ├── Contents.json │ │ │ └── login_icon_qq.png │ │ ├── login_icon_weibo.imageset │ │ │ ├── Contents.json │ │ │ └── login_icon_weibo.png │ │ ├── login_icon_wx.imageset │ │ │ ├── Contents.json │ │ │ └── login_icon_wx.png │ │ └── login_logo.imageset │ │ │ ├── Contents.json │ │ │ └── login_logo.png │ ├── refresh │ │ ├── Contents.json │ │ ├── refresh_fly_0011.imageset │ │ │ ├── Contents.json │ │ │ └── refresh_fly_0011.png │ │ ├── refresh_fly_0012.imageset │ │ │ ├── Contents.json │ │ │ └── refresh_fly_0012.png │ │ ├── refresh_fly_0013.imageset │ │ │ ├── Contents.json │ │ │ └── refresh_fly_0013.png │ │ ├── refresh_fly_0014.imageset │ │ │ ├── Contents.json │ │ │ └── refresh_fly_0014.png │ │ ├── refresh_fly_0015.imageset │ │ │ ├── Contents.json │ │ │ └── refresh_fly_0015.png │ │ ├── refresh_fly_0016.imageset │ │ │ ├── Contents.json │ │ │ └── refresh_fly_0016.png │ │ ├── refresh_fly_0017.imageset │ │ │ ├── Contents.json │ │ │ └── refresh_fly_0017.png │ │ ├── refresh_fly_0018.imageset │ │ │ ├── Contents.json │ │ │ └── refresh_fly_0018.png │ │ ├── refresh_fly_0019.imageset │ │ │ ├── Contents.json │ │ │ └── refresh_fly_0019.png │ │ ├── refresh_fly_0020.imageset │ │ │ ├── Contents.json │ │ │ └── refresh_fly_0020.png │ │ ├── refresh_fly_0021.imageset │ │ │ ├── Contents.json │ │ │ └── refresh_fly_0021.png │ │ ├── refresh_fly_0022.imageset │ │ │ ├── Contents.json │ │ │ └── refresh_fly_0022.png │ │ ├── refresh_fly_0023.imageset │ │ │ ├── Contents.json │ │ │ └── refresh_fly_0023.png │ │ ├── refresh_fly_0024.imageset │ │ │ ├── Contents.json │ │ │ └── refresh_fly_0024.png │ │ ├── refresh_fly_0025.imageset │ │ │ ├── Contents.json │ │ │ └── refresh_fly_0025.png │ │ ├── refresh_fly_0026.imageset │ │ │ ├── Contents.json │ │ │ └── refresh_fly_0026.png │ │ ├── refresh_fly_0027.imageset │ │ │ ├── Contents.json │ │ │ └── refresh_fly_0027.png │ │ ├── refresh_fly_0028.imageset │ │ │ ├── Contents.json │ │ │ └── refresh_fly_0028.png │ │ └── refresh_fly_0029.imageset │ │ │ ├── Contents.json │ │ │ └── refresh_fly_0029.png │ └── test │ │ └── Contents.json ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard ├── Info.plist ├── loginVideo.mp4 └── main.m └── gif ├── live-page.gif ├── live-page1.gif ├── login-page.gif └── main-page.gif /.gitignore: -------------------------------------------------------------------------------- 1 | Pods/ 2 | *.xcworkspace 3 | *.framework -------------------------------------------------------------------------------- /Class/Base/TSCBaseHandler.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCBaseHandler.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/11/19. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | //处理完成事件 11 | typedef void(^CompleteBlock)(void); 12 | 13 | 14 | /** 15 | 处理事件成功 16 | 17 | @param obj 返回数据 18 | */ 19 | typedef void(^SuccessBlock)(id obj); 20 | 21 | 22 | /** 23 | 处理事件失败 24 | 25 | @param obj 错误信息 26 | */ 27 | typedef void(^FailedBlock)(id obj); 28 | @interface TSCBaseHandler : NSObject 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /Class/Base/TSCBaseHandler.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCBaseHandler.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/11/19. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCBaseHandler.h" 10 | @implementation TSCBaseHandler 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /Class/Base/TSCBaseNavViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCBaseNavViewController.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/10/22. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TSCBaseNavViewController : UINavigationController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Base/TSCBaseNavViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCBaseNavViewController.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/10/22. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCBaseNavViewController.h" 10 | 11 | @interface TSCBaseNavViewController () 12 | 13 | @end 14 | 15 | @implementation TSCBaseNavViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | // Do any additional setup after loading the view. 20 | self.navigationBar.barTintColor = RGB(0, 216, 201); 21 | self.navigationBar.tintColor = [UIColor whiteColor]; 22 | } 23 | 24 | - (void)didReceiveMemoryWarning { 25 | [super didReceiveMemoryWarning]; 26 | // Dispose of any resources that can be recreated. 27 | } 28 | 29 | /** 30 | 当被push进来的时候 31 | 32 | @param viewController viewController description 33 | 34 | @param animated animated description 35 | */ 36 | -(void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{ 37 | if(self.viewControllers.count){ 38 | viewController.hidesBottomBarWhenPushed =YES; 39 | } 40 | [super pushViewController:viewController animated:animated]; 41 | } 42 | /* 43 | #pragma mark - Navigation 44 | 45 | // In a storyboard-based application, you will often want to do a little preparation before navigation 46 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 47 | // Get the new view controller using [segue destinationViewController]. 48 | // Pass the selected object to the new view controller. 49 | } 50 | */ 51 | 52 | @end 53 | -------------------------------------------------------------------------------- /Class/Base/TSCBaseViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCBaseViewController.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/10/22. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TSCBaseViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Base/TSCBaseViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCBaseViewController.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/10/22. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCBaseViewController.h" 10 | 11 | @interface TSCBaseViewController () 12 | 13 | @end 14 | 15 | @implementation TSCBaseViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | // Do any additional setup after loading the view. 20 | } 21 | 22 | - (void)didReceiveMemoryWarning { 23 | [super didReceiveMemoryWarning]; 24 | // Dispose of any resources that can be recreated. 25 | } 26 | 27 | /* 28 | #pragma mark - Navigation 29 | 30 | // In a storyboard-based application, you will often want to do a little preparation before navigation 31 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 32 | // Get the new view controller using [segue destinationViewController]. 33 | // Pass the selected object to the new view controller. 34 | } 35 | */ 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /Class/Base/TSCRefreshHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCRefreshHeader.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/6. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TSCRefreshHeader : MJRefreshGifHeader 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Base/TSCRefreshHeader.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCRefreshHeader.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/6. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCRefreshHeader.h" 10 | 11 | @implementation TSCRefreshHeader 12 | 13 | #pragma mark - 重写方法 14 | #pragma mark 基本设置 15 | -(void)prepare{ 16 | [super prepare]; 17 | NSMutableArray *refreshImages = [NSMutableArray array]; 18 | //NSUInteger 是无符号型的整形 19 | for(NSUInteger i=11 ; i<=29 ; i++){ 20 | UIImage * image = [UIImage imageNamed:[NSString stringWithFormat:@"refresh_fly_00%zd",i]]; 21 | [refreshImages addObject:[image imageByResizeToSize:CGSizeMake(50, 50)]]; 22 | 23 | 24 | } 25 | //设置普通状态的动画图片 26 | [self setImages:refreshImages forState:MJRefreshStateIdle]; 27 | //设置即将刷新状态的动画图片 (一松开就会刷新的状态) 28 | [self setImages:refreshImages forState:MJRefreshStatePulling]; 29 | //设置正在刷新状态的动画图片 30 | [self setImages:refreshImages duration:.8 forState:MJRefreshStateRefreshing]; 31 | } 32 | 33 | /* 34 | // Only override drawRect: if you perform custom drawing. 35 | // An empty implementation adversely affects performance during animation. 36 | - (void)drawRect:(CGRect)rect { 37 | // Drawing code 38 | } 39 | */ 40 | @end 41 | -------------------------------------------------------------------------------- /Class/Base/TSCTabBar.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCTabBar.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/10/22. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | typedef NS_ENUM(NSUInteger, TSCItemType) { 11 | TSCItemTypeLaunch = 10,//启动直播 12 | TSCItemTypeLive = 100,//展示直播 13 | TSCItemTypeMe,//我的 14 | }; 15 | 16 | @class TSCTabBar; 17 | 18 | typedef void(^TabBlock)(TSCTabBar * tabbar,TSCItemType idx); 19 | //这里有个比较有意思的http://blog.csdn.net/mccand1234/article/details/52278616 20 | @protocol TSCTabbarDelegate 21 | 22 | - (void) tabbar:(TSCTabBar *)tabbar clickButton:(TSCItemType) idx; 23 | 24 | @end 25 | 26 | @interface TSCTabBar : UIView 27 | 28 | @property (nonatomic,weak) id delegate; 29 | 30 | @property (nonatomic,copy) TabBlock block; 31 | 32 | - (UIButton *) camearButton; 33 | @end 34 | -------------------------------------------------------------------------------- /Class/Base/TSCTabBarViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCTabBarViewController.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/10/22. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "TSCTabBar.h" 11 | @interface TSCTabBarViewController : UITabBarController 12 | 13 | -(TSCTabBar *)tscTabbar; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Class/Base/TSCTabBarViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCTabBarViewController.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/10/22. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCTabBarViewController.h" 10 | 11 | #import "TSCBaseNavViewController.h" 12 | #import "TSCLaunchViewController.h" 13 | 14 | 15 | @interface TSCTabBarViewController () 16 | 17 | @property (nonatomic,strong)TSCTabBar * tscTabbar; 18 | 19 | @end 20 | 21 | @implementation TSCTabBarViewController 22 | 23 | -(TSCTabBar *)tscTabbar{ 24 | if(!_tscTabbar){ 25 | _tscTabbar = [[TSCTabBar alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 49)]; 26 | _tscTabbar.delegate = self; 27 | } 28 | return _tscTabbar; 29 | } 30 | 31 | -(void)tabbar:(TSCTabBar *)tabbar clickButton:(TSCItemType)idx{ 32 | if(idx != TSCItemTypeLaunch){ 33 | self.selectedIndex = idx - TSCItemTypeLive; 34 | return; 35 | } 36 | TSCLaunchViewController * launchVC = [[TSCLaunchViewController alloc] init]; 37 | [self presentViewController:launchVC animated:YES completion:nil]; 38 | } 39 | 40 | -(void)viewDidLoad{ 41 | [super viewDidLoad]; 42 | [self configViewController]; 43 | 44 | [self.tabBar addSubview:self.tscTabbar]; 45 | //解决tabbar阴影线 46 | [[UITabBar appearance] setShadowImage:[UIImage new]]; 47 | [[UITabBar appearance] setBackgroundImage:[UIImage new]]; 48 | 49 | } 50 | 51 | -(void) configViewController { 52 | NSMutableArray * array = [NSMutableArray arrayWithArray:@[@"TSCMainViewController",@"TSCMeViewController"]]; 53 | for (NSInteger i =0; i 10 | #import "TSCAdvertisingRecord.h" 11 | 12 | @interface TSCAdvertisingData : NSObject 13 | @property (nonatomic, strong) NSString * md5; 14 | @property (nonatomic, strong) NSArray * record; 15 | @end 16 | -------------------------------------------------------------------------------- /Class/Common/Model/advertising/TSCAdvertisingData.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCAdvertisingData.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/14. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCAdvertisingData.h" 10 | 11 | @implementation TSCAdvertisingData 12 | 13 | -(void)setRecord:(NSArray *)record{ 14 | _record = [TSCAdvertisingRecord mj_objectArrayWithKeyValuesArray:record]; 15 | } 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Class/Common/Model/advertising/TSCAdvertisingRecord.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCAdvertisingRecord.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/14. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TSCAdvertisingRecord : NSObject 12 | @property (nonatomic, assign) NSInteger dEnd; 13 | @property (nonatomic, assign) NSInteger dStart; 14 | @property (nonatomic, strong) NSString * delay; 15 | @property (nonatomic, strong) NSString * img; 16 | @property (nonatomic, assign) BOOL skip; 17 | @property (nonatomic, assign) NSInteger type; 18 | @property (nonatomic, strong) NSString * url; 19 | @property (nonatomic, strong) NSString * video; 20 | @end 21 | -------------------------------------------------------------------------------- /Class/Common/Model/advertising/TSCAdvertisingRecord.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCAdvertisingRecord.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/14. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCAdvertisingRecord.h" 10 | 11 | @implementation TSCAdvertisingRecord 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Common/View/TSCMainTopView.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCMainTopView.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/11/11. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | /* 11 | 1. typedef类型定义https://www.jianshu.com/p/b932b339da8d 12 | 作用:给类型起别名(给已知的类型起别名)。常用于简化复杂类型,变量类型意义化等。 13 | 14 | typedef double NSTimeInterval; //给double取别名为NSTimeInterval(变量类型意义化) 15 | typedef NSTimeInterval MyTime; //给NSTimeInterval取别名为MyTime 16 | typedef char * MyString; //给char *取别名为MyString 17 | 18 | typedef struct Person 19 | { 20 | char *name 21 | }MyPerson; //给Person结构体取别名为MyPerson。使用:MyPerson p = {"jack"}; 22 | 23 | typedef enum Gender 24 | { 25 | Man, 26 | Woman 27 | }MyGender; //给Gender枚举取别名为MyGender。使用:MyGender g = Man; 28 | 29 | typedef void(^MyBlock) (int a,int b); //给block取别名MyBlock 30 | typedef int(*MyFunction) (int a,int b); //给指向函数的指针取别名MyFunction 31 | 32 | */ 33 | // block声明语法:返回值(^block名字)(入参类型 入参名称); 34 | typedef void(^MainTopBlock)(NSInteger tag); 35 | 36 | @interface TSCMainTopView : UIView 37 | //设置一个回调block 38 | @property (nonatomic,strong) MainTopBlock block; 39 | 40 | - (void) scrolling:(NSInteger)tag; 41 | - (instancetype)initWithFrame:(CGRect)frame titleNames:(NSArray *)titles; 42 | 43 | @end 44 | -------------------------------------------------------------------------------- /Class/Common/View/advertise/TSCAdvertiseView.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCAdvertiseView.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/14. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TSCAdvertiseView : UIView 12 | 13 | +(instancetype) loadAdvertiseView; 14 | @end 15 | -------------------------------------------------------------------------------- /Class/Common/View/advertise/TSCAdvertiseView.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /Class/Common/ViewController/TSCLoginViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCLoginViewController.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/23. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCBaseViewController.h" 10 | 11 | @interface TSCLoginViewController : TSCBaseViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Common/ViewController/TSCLoginViewController.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /Class/Common/ViewController/TSCMainViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCMainViewController.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/10/22. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCBaseViewController.h" 10 | 11 | @interface TSCMainViewController : TSCBaseViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Components/Bullet/TSCBulletManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCBulletManager.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2018/1/9. 6 | // Copyright © 2018年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "TSCBulletView.h" 11 | #import "TSCChatModel.h" 12 | @interface TSCBulletManager : NSObject 13 | //弹幕的数据来源 14 | @property (nonatomic,strong) NSMutableArray *datasource; 15 | /* 16 | 为什么通常block是用copy来修饰的https://www.jianshu.com/p/acb7c470de63 17 | 18 | */ 19 | @property (nonatomic,copy)void (^generateViewblock)(TSCBulletView *view); 20 | //弹幕开始执行 21 | -(void) start; 22 | //弹幕停止执行 23 | -(void) end; 24 | 25 | -(void) refresh:(NSString *)content; 26 | @end 27 | -------------------------------------------------------------------------------- /Class/Components/Bullet/TSCBulletView.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCBulletView.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2018/1/9. 6 | // Copyright © 2018年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | typedef NS_ENUM(NSInteger,MoveStatus) { 11 | Start, 12 | Enter, 13 | End 14 | }; 15 | @interface TSCBulletView : UIView 16 | 17 | @property (nonatomic, assign) int trajectory;//弹道 18 | @property (nonatomic, copy) void(^moveStatusBlock)(MoveStatus status);//弹幕状态的回调 19 | 20 | -(instancetype) initWithContent:(NSString *)content; 21 | 22 | -(void) startAnimation; 23 | 24 | -(void) stopAnimation; 25 | @end 26 | -------------------------------------------------------------------------------- /Class/Components/New Group/TSCSwitch.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCSwitch.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2018/1/13. 6 | // Copyright © 2018年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | /** 12 | * 开关的设计思路: 13 | * 14 | * 开关左边为关闭状态,右边为打开状态. 15 | * 开关的size不可改变. 16 | * 开关的视图结构:(底部 --> 上层) 17 | * 1.最底部是本身,承载点击事件. 18 | * 2.开关打开下的显示视图. 19 | * 3.开关关闭下的显示视图. 20 | * 4.开关切换的按钮(小圆). 21 | * 开关的动画实现思路: 22 | * 1.小圆使用UIView的spring动画做x坐标的平移. 23 | * 2.开关打开与关闭下的显示视图使用UIView动画做backgroundColor的渐变. 24 | * 后续还可改进的地方: 25 | * 1.可添加一点阴影效果. 26 | * 2.还可添加一些有趣的动画. 27 | * 3.xib添加. 28 | */ 29 | 30 | @interface TSCSwitch : UIView 31 | 32 | 33 | //http://blog.csdn.net/zcube/article/details/51657417 34 | //Objective-C 中主要通过NS_DESIGNATED_INITIALIZER宏来实现指定构造器的。这里之所以要用这个宏,往往是想告诉调用者要用这个方法去初始化(构造)类对象。 35 | - (instancetype)initWithFrame:(CGRect)frame NS_DESIGNATED_INITIALIZER; 36 | - (instancetype)initWithCoder:(NSCoder *)aDecoder NS_DESIGNATED_INITIALIZER; 37 | 38 | @property (nonatomic,readonly, assign) BOOL isOn; 39 | 40 | /** 41 | * 当开关关闭时的颜色 42 | */ 43 | @property (nonatomic,strong) UIColor *tintColor; 44 | 45 | /** 46 | * 当开关打开时的颜色 47 | */ 48 | @property (nonatomic,strong) UIColor *onTintColor; 49 | 50 | /** 51 | * 小圈圈的颜色 52 | */ 53 | @property (nonatomic,strong) UIColor *thumbTintColor; 54 | 55 | @property (nonatomic,copy) NSString *tumbText; 56 | 57 | /** 58 | * 按钮将要切换时的回调 59 | */ 60 | - (void)switchWillStartSwicth:(void(^)(BOOL isOn)) startBlock; 61 | 62 | /** 63 | * 按钮已完成切换时的回调 64 | */ 65 | - (void)switchDidEndSwitch:(void(^)(BOOL isOn)) endBlock; 66 | @end 67 | -------------------------------------------------------------------------------- /Class/Helper/Category/NSString+CachePath.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+CachePath.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/18. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSString (CachePath) 12 | 13 | -(NSString *) cacheWithPath; 14 | @end 15 | -------------------------------------------------------------------------------- /Class/Helper/Category/NSString+CachePath.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+CachePath.m 3 | // Test-inke 4 | // 委托nsstirng 5 | // Created by 唐嗣成 on 2017/12/18. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "NSString+CachePath.h" 10 | 11 | @implementation NSString (CachePath) 12 | -(NSString *) cacheWithPath{ 13 | NSString * sandbox = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];//??? 14 | return [sandbox stringByAppendingPathComponent:self]; 15 | } 16 | @end 17 | -------------------------------------------------------------------------------- /Class/Helper/Category/UIView+TSCAlert.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+TSCAlert.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2018/1/2. 6 | // Copyright © 2018年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIView (TSCAlert) 12 | @property (nonatomic, assign) CGFloat x; 13 | @property (nonatomic, assign) CGFloat y; 14 | @property (nonatomic, assign) CGFloat right; 15 | @property (nonatomic, assign) CGFloat bottom; 16 | @property (nonatomic, assign) CGFloat centerX; 17 | @property (nonatomic, assign) CGFloat centerY; 18 | @property (nonatomic, assign) CGFloat width; 19 | @property (nonatomic, assign) CGFloat height; 20 | @property (nonatomic, assign) CGSize size; 21 | @property (nonatomic, assign) CGPoint origin; 22 | - (void)setLabelShadow; 23 | - (void)showAlert:(NSString *)message; 24 | - (void)showAlert:(NSString *)title message:(NSString *)message; 25 | @end 26 | -------------------------------------------------------------------------------- /Class/Helper/Tools/TSCCacheHelper.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCCacheHelper.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/18. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "TSCAdvertisingRecord.h" 11 | @interface TSCCacheHelper : NSObject 12 | 13 | + (TSCAdvertisingRecord *)getAdvertise; 14 | 15 | + (void) setAdvertiseRecord : (TSCAdvertisingRecord *)record; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Class/Helper/Tools/TSCCacheHelper.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCCacheHelper.m 3 | // Test-inke 4 | // 主要学习图片缓存 5 | // Created by 唐嗣成 on 2017/12/18. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCCacheHelper.h" 10 | #import "TSCAdvertisingRecord.h" 11 | static NSString *const adImageName = @"adImageName"; 12 | static NSString *const adURLName = @"adURLName"; 13 | static NSString *const adStart = @"adStart"; 14 | static NSString *const adEnd = @"adEnd"; 15 | static NSString *const adSkip = @"adSkip"; 16 | @implementation TSCCacheHelper 17 | 18 | //+ (NSString *)getAdvertiseImage{ 19 | // return [[NSUserDefaults standardUserDefaults] objectForKey:adImageName]; 20 | //} 21 | // 22 | //+ (void) setAdvertiseImage : (NSString *)imageName{ 23 | // [[NSUserDefaults standardUserDefaults] setObject:imageName forKey:adImageName]; 24 | // [[NSUserDefaults standardUserDefaults] synchronize]; 25 | //} 26 | 27 | //Preference 偏好存储 28 | + (TSCAdvertisingRecord *)getAdvertise{ 29 | TSCAdvertisingRecord * record = [[TSCAdvertisingRecord alloc]init]; 30 | record.img = [[NSUserDefaults standardUserDefaults] objectForKey:adImageName]; 31 | record.url = [[NSUserDefaults standardUserDefaults] objectForKey:adURLName]; 32 | record.dStart =[[[NSUserDefaults standardUserDefaults] objectForKey:adStart] integerValue]; 33 | record.dEnd =[[[NSUserDefaults standardUserDefaults] objectForKey:adEnd] integerValue]; 34 | record.skip =[[[NSUserDefaults standardUserDefaults] objectForKey:adSkip] isEqualToString:@"YES"]?YES:NO; 35 | return record; 36 | } 37 | 38 | + (void) setAdvertiseRecord : (TSCAdvertisingRecord *)record{ 39 | [[NSUserDefaults standardUserDefaults] setObject:record.img forKey:adImageName]; 40 | [[NSUserDefaults standardUserDefaults] setObject:record.url forKey:adURLName]; 41 | [[NSUserDefaults standardUserDefaults] setObject:[NSString stringWithFormat:@"%zd",record.dStart] forKey:adStart]; 42 | [[NSUserDefaults standardUserDefaults] setObject:[NSString stringWithFormat:@"%zd",record.dEnd] forKey:adEnd]; 43 | [[NSUserDefaults standardUserDefaults] setObject:record.skip?@"YES":@"NO" forKey:adSkip]; 44 | [[NSUserDefaults standardUserDefaults] synchronize]; 45 | } 46 | 47 | @end 48 | -------------------------------------------------------------------------------- /Class/Helper/Tools/TSCCollectionViewFlowLayout.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCCollectionViewFlowLayout.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/11. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | 10 | //特性详解 http://www.jianshu.com/p/9dd5f225cc01 11 | 12 | #import 13 | 14 | /** 15 | 这个重写UICollectionViewFlowLayout 主要是为了解决uicollection 在分页排列的时候是上下排列的问题。 16 | */ 17 | @interface TSCCollectionViewFlowLayout : UICollectionViewFlowLayout 18 | /** 列间距 */ 19 | @property (nonatomic, assign) CGFloat columnSpacing; 20 | 21 | /** 行间距 */ 22 | @property (nonatomic, assign) CGFloat rowSpacing; 23 | 24 | /** collectionView的内边距 */ 25 | @property (nonatomic, assign) UIEdgeInsets edgeInsets; 26 | 27 | /** 多少行 */ 28 | @property (nonatomic, assign) NSInteger rowCount; 29 | 30 | /** 每行展示多少个item */ 31 | @property (nonatomic, assign) NSInteger itemCountPerRow; 32 | 33 | /** 所有item的属性数组 */ 34 | @property (nonatomic, strong) NSMutableArray *attributesArrayM; 35 | 36 | /** 设置行间距及collectionView的内边距 */ 37 | -(void)setColumnSpacing:(CGFloat)columnSpacing rowSpacing:(CGFloat)rowSpacing edgeInsets:(UIEdgeInsets)edgeInsets; 38 | 39 | /** 设置多少行及每行展示的item个数 */ 40 | -(void)setRowCount:(NSInteger)rowCount itemCountPerRow:(NSInteger)itemCountPerRow; 41 | 42 | #pragma mark - 构造方法 43 | /** 设置多少行及每行展示的item个数 */ 44 | +(instancetype)horizontalPageFlowlayoutWithRowCount:(NSInteger)rowCount itemCountPerRow:(NSInteger)itemCountPerRow; 45 | /** 设置多少行及每行展示的item个数 */ 46 | -(instancetype)initWithRowCount:(NSInteger)rowCount itemCountPerRow:(NSInteger)itemCountPerRow; 47 | 48 | @end 49 | -------------------------------------------------------------------------------- /Class/Helper/Tools/TSCLocationManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCLocationManager.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/2. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef void(^locationBlock)(NSString * lat, NSString * lon); 12 | 13 | @interface TSCLocationManager : NSObject 14 | + (instancetype) sharedManager; 15 | 16 | -(void) getGPS:(locationBlock)block; 17 | 18 | @property (nonatomic, copy) NSString * lat; 19 | @property (nonatomic, copy) NSString * lon; 20 | @end 21 | -------------------------------------------------------------------------------- /Class/Helper/Tools/TSCLocationManager.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCLocationManager.m 3 | // Test-inke 4 | // 工具类设计--》创建单例 5 | // 单反工具类,初始化方法都会执行东西 6 | // Created by 唐嗣成 on 2017/12/2. 7 | // Copyright © 2017年 shawnTang. All rights reserved. 8 | // 9 | 10 | #import "TSCLocationManager.h" 11 | #import //使用coreloaction 获取用户定位 12 | @interface TSCLocationManager () //????? 13 | @property (nonatomic,strong) CLLocationManager * locManager; 14 | @property (nonatomic,copy) locationBlock block; //为什么是copy 15 | @end 16 | 17 | @implementation TSCLocationManager 18 | 19 | + (instancetype)sharedManager{ 20 | //gcd 实现单例 21 | static TSCLocationManager * _locationManager; 22 | static dispatch_once_t onceToken; 23 | dispatch_once(&onceToken, ^{ 24 | _locationManager = [[TSCLocationManager alloc]init]; 25 | 26 | }); 27 | return _locationManager; 28 | } 29 | 30 | //重写init方法 31 | //还要改info.plist http://www.jianshu.com/p/f58be9373b6a 32 | - (instancetype)init 33 | { 34 | self = [super init]; 35 | if (self) { 36 | _locManager = [[CLLocationManager alloc]init]; 37 | [_locManager setDesiredAccuracy:kCLLocationAccuracyBest]; 38 | _locManager.distanceFilter = 100; 39 | _locManager.delegate = self; 40 | 41 | if(![CLLocationManager locationServicesEnabled]){ 42 | NSLog(@"开启定位服务"); 43 | } else { 44 | CLAuthorizationStatus status = [CLLocationManager authorizationStatus]; 45 | if(status == kCLAuthorizationStatusNotDetermined){ 46 | [_locManager requestWhenInUseAuthorization]; 47 | } 48 | } 49 | } 50 | return self; 51 | } 52 | //实现delegate里的方法 53 | - (void)locationManager:(CLLocationManager *)manager 54 | didUpdateToLocation:(CLLocation *)newLocation 55 | fromLocation:(CLLocation *)oldLocation{ 56 | CLLocationCoordinate2D coor = newLocation.coordinate; 57 | NSString *lat= [NSString stringWithFormat:@"%@",@(coor.latitude)]; 58 | NSString *lon= [NSString stringWithFormat:@"%@",@(coor.longitude)]; 59 | //给block传值 60 | self.block(lat, lon); 61 | [TSCLocationManager sharedManager].lon = lon; 62 | [TSCLocationManager sharedManager].lat = lat; 63 | [self.locManager stopUpdatingLocation]; 64 | } 65 | 66 | -(void)getGPS:(locationBlock)block{ 67 | self.block = block; 68 | [self.locManager startUpdatingLocation];//?? 69 | } 70 | @end 71 | -------------------------------------------------------------------------------- /Class/Live/View/LFLivePreview.h: -------------------------------------------------------------------------------- 1 | // 2 | // LFLivePreview.h 3 | // LFLiveKit 4 | // 5 | // Created by 倾慕 on 16/5/2. 6 | // Copyright © 2016年 live Interactive. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LFLivePreview : UIView 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Live/ViewController/TSCLaunchViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCLaunchViewController.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/11/5. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCBaseViewController.h" 10 | 11 | @interface TSCLaunchViewController : TSCBaseViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Live/ViewController/TSCLaunchViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCLaunchViewController.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/11/5. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCLaunchViewController.h" 10 | #import "LFLivePreview.h" 11 | @interface TSCLaunchViewController () 12 | 13 | @end 14 | 15 | @implementation TSCLaunchViewController 16 | - (IBAction)closeLaunch:(id)sender { 17 | [self dismissViewControllerAnimated:YES completion:nil]; 18 | 19 | } 20 | - (IBAction)startLive:(id)sender { 21 | 22 | // UIView *backview = [[UIView alloc] initWithFrame:self.view.bounds]; 23 | // backview.backgroundColor = [UIColor blackColor]; 24 | // [self.view addSubview:backview]; 25 | 26 | LFLivePreview * preview = [[LFLivePreview alloc]initWithFrame:self.view.bounds]; 27 | [self.view addSubview:preview]; 28 | } 29 | 30 | 31 | - (void)viewDidLoad { 32 | [super viewDidLoad]; 33 | // Do any additional setup after loading the view from its nib. 34 | } 35 | 36 | - (void)didReceiveMemoryWarning { 37 | [super didReceiveMemoryWarning]; 38 | // Dispose of any resources that can be recreated. 39 | } 40 | 41 | /* 42 | #pragma mark - Navigation 43 | 44 | // In a storyboard-based application, you will often want to do a little preparation before navigation 45 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 46 | // Get the new view controller using [segue destinationViewController]. 47 | // Pass the selected object to the new view controller. 48 | } 49 | */ 50 | @end 51 | -------------------------------------------------------------------------------- /Class/Me/ViewController/TSCMeViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCMeViewController.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/10/22. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCBaseViewController.h" 10 | 11 | @interface TSCMeViewController : TSCBaseViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Me/ViewController/TSCMeViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCMeViewController.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/10/22. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCMeViewController.h" 10 | 11 | @interface TSCMeViewController () 12 | 13 | @end 14 | 15 | @implementation TSCMeViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | // Do any additional setup after loading the view from its nib. 20 | } 21 | 22 | - (void)didReceiveMemoryWarning { 23 | [super didReceiveMemoryWarning]; 24 | // Dispose of any resources that can be recreated. 25 | } 26 | 27 | /* 28 | #pragma mark - Navigation 29 | 30 | // In a storyboard-based application, you will often want to do a little preparation before navigation 31 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 32 | // Get the new view controller using [segue destinationViewController]. 33 | // Pass the selected object to the new view controller. 34 | } 35 | */ 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /Class/Me/ViewController/TSCMeViewController.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /Class/NetWork/APIConfig.h: -------------------------------------------------------------------------------- 1 | // 2 | // APIConfig.h 3 | // Test-inke 4 | // 接口配置文件 5 | // Created by 唐嗣成 on 2017/11/11. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface APIConfig : NSObject 12 | 13 | //服务器地址 14 | #define SERVER_HOST @"http://service.inke.com" 15 | 16 | //今天web资源服务器 17 | #define WEBAPI_HOST @"http://webapi.busi.inke.cn" 18 | 19 | 20 | //热门直播-------cover.style 1或2:直播,6:广告 4:滚动直播 5:游戏 ps:并没有找到3是什么意思 21 | #define API_HotLive @"/api/live/card_recommend" 22 | 23 | 24 | //附近的人 25 | #define API_Near @"/api/live/near_flow_old" 26 | 27 | //资源服务器 28 | #define RESOURCE_HOST @"http://img2.inke.cn/" 29 | 30 | //直播页观看人数//start=0&count=20&id=1512271172300544 31 | #define API_Live_Users @"/api/live/users" 32 | 33 | //礼物 34 | #define API_Live_Gift @"/api/resource/user_gifts" 35 | 36 | //广告页 37 | #define APP_Flash_Screen @"/app/Flash_screen" 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /Class/NetWork/TSCHttpTool.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCHttpTool.h 3 | // Test-inke 4 | // 调用接口的类 5 | // Created by 唐嗣成 on 2017/11/11. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | typedef void(^HttpSuccessBlock)(id json); 13 | typedef void(^HttpFailureBlock)(NSError * error); 14 | typedef void(^HttpDownloadPregressBlock)(CGFloat progress); 15 | typedef void(^HttpUploadProgressBlock)(CGFloat progress); 16 | 17 | @interface TSCHttpTool : NSObject 18 | 19 | 20 | /** 21 | get请求 22 | 23 | @param path url地址 24 | @param params url参数 NSDictionary类型 25 | @param success 成功回调 26 | @param failure 失败回调 27 | */ 28 | +(void)getWithPath:(NSString *)path 29 | param:(NSDictionary *)params 30 | success:(HttpSuccessBlock)success 31 | failure:(HttpFailureBlock)failure; 32 | 33 | 34 | /** 35 | post请求 36 | 37 | @param path url地址 38 | @param params url参数 NSDictionary类型 39 | @param success 成功回调 40 | @param failure 失败回调 41 | */ 42 | +(void)postWithPath:(NSString *)path 43 | params:(NSDictionary *)params 44 | success:(HttpSuccessBlock)success 45 | failure:(HttpFailureBlock)failure; 46 | 47 | /** 48 | 下载文件 49 | 50 | @param path url路径 51 | @param success 下载成功 52 | @param failure 爱在失败 53 | @param progress 下载进度 54 | */ 55 | +(void)downloadWithPath:(NSString *)path 56 | success:(HttpSuccessBlock)success 57 | failure:(HttpFailureBlock)failure 58 | progress:(HttpDownloadPregressBlock)progress; 59 | 60 | /** 61 | 上传图片 62 | 63 | @param path url地址 64 | @param params UIImage对象 65 | @param imagekey Imagekey 66 | @param image 上传参数 67 | @param success 上传成功 68 | @param failure 上传失败 69 | @param progress 上传进度 70 | */ 71 | +(void)uploadImageWithPath:(NSString *)path 72 | params:(NSDictionary *)params 73 | thumbName:(NSString *)imagekey 74 | image:(UIImage *)image 75 | success:(HttpSuccessBlock)success 76 | failure:(HttpFailureBlock)failure 77 | progress:(HttpUploadProgressBlock)progress; 78 | 79 | @end 80 | -------------------------------------------------------------------------------- /Class/NetWork/UIImageView+SDWebImage.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImageView+SDWebImage.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/11/14. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef void(^DownloadImageSuccessBLock)(UIImage *image); 12 | typedef void(^DownloadImageFailedBlock)(NSError *error); 13 | typedef void(^DownloadImageProgressBlock)(CGFloat progress); 14 | 15 | @interface UIImageView (SDWebImage) 16 | 17 | 18 | /** 19 | 异步加载图片 20 | 21 | @param url 图片地址 22 | @param imageName 占位图片名 23 | */ 24 | -(void) downloadImage:(NSString *)url placeholder:(NSString *) imageName; 25 | 26 | 27 | /** 28 | 异步加载图片,可以监听进度,成功或失败 29 | 30 | @param url 图片地址 31 | @param imageName 占位图片名 32 | @param success 下载成功 33 | @param failed 下载失败 34 | @param progress 下载进度 35 | */ 36 | -(void)downloadImage:(NSString *)url 37 | placeholder:(NSString *)imageName 38 | success:(DownloadImageSuccessBLock)success 39 | failed:(DownloadImageFailedBlock)failed 40 | progress:(DownloadImageProgressBlock)progress; 41 | 42 | 43 | 44 | 45 | @end 46 | -------------------------------------------------------------------------------- /Class/NetWork/UIImageView+SDWebImage.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIImageView+SDWebImage.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/11/14. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "UIImageView+SDWebImage.h" 10 | #import "uiimageView+WebCache.h" 11 | 12 | 13 | @implementation UIImageView (SDWebImage) 14 | 15 | -(void) downloadImage:(NSString *)url placeholder:(NSString *) imageName{ 16 | // NSLog(@"%L",SDWebImageRetryFailed|SDWebImageLowPriority); 17 | [self sd_setImageWithURL:[NSURL URLWithString:url] placeholderImage:[UIImage imageNamed:imageName] options:SDWebImageRetryFailed|SDWebImageLowPriority]; 18 | } 19 | 20 | 21 | -(void)downloadImage:(NSString *)url 22 | placeholder:(NSString *)imageName 23 | success:(DownloadImageSuccessBLock)success 24 | failed:(DownloadImageFailedBlock)failed 25 | progress:(DownloadImageProgressBlock)progress{ 26 | [self sd_setImageWithURL:[NSURL URLWithString:url] placeholderImage:[UIImage imageNamed:imageName] options:SDWebImageRetryFailed|SDWebImageLowPriority progress:^(NSInteger receivedSize, NSInteger expectedSize, NSURL * _Nullable targetURL) { 27 | progress(receivedSize * 1.0 / expectedSize); 28 | } completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) { 29 | if (error) { 30 | failed(error); 31 | }else { 32 | self.image = image; 33 | success(image); 34 | } 35 | }]; 36 | } 37 | 38 | 39 | 40 | @end 41 | -------------------------------------------------------------------------------- /Class/Other/AppDelegate+TSCUMeung.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate+TSCUMeung.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/24. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | 11 | @interface AppDelegate (TSCUMeung) 12 | - (void) setupUmeng; 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Other/AppDelegate+TSCUMeung.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate+TSCUMeung.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/24. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate+TSCUMeung.h" 10 | #import 11 | @implementation AppDelegate (TSCUMeung) 12 | 13 | 14 | 15 | /** 16 | 友盟设置,参考:https://www.jianshu.com/p/87d1d397d269 http://dev.umeng.com/social/ios/login-page https://www.jianshu.com/p/b0a7fddc855a 17 | */ 18 | - (void) setupUmeng{ 19 | //打开日志 20 | [[UMSocialManager defaultManager] openLog:YES]; 21 | //设置友盟appkey 22 | [[UMSocialManager defaultManager] setUmSocialAppkey:@"2892166685"]; 23 | // 获取友盟social版本号 24 | NSLog(@"UMeng social version: %@", [UMSocialGlobal umSocialSDKVersion]); 25 | 26 | //各平台的详细配置 27 | //设置分享到QQ互联的appId和appKey 28 | [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_QQ appKey:@"100424468" appSecret:nil redirectURL:@"http://mobile.umeng.com/social"]; 29 | //设置微信的appId和appKey 30 | [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_WechatSession appKey:@"wxdc1e388c3822c80b" appSecret:@"3baf1193c85774b3fd9d18447d76cab0" redirectURL:@"http://mobile.umeng.com/social"]; 31 | // 如果不想显示平台下的某些类型(微信收藏),可用以下接口设置 32 | [[UMSocialManager defaultManager] removePlatformProviderWithPlatformTypes:@[@(UMSocialPlatformType_WechatFavorite)]]; 33 | } 34 | @end 35 | -------------------------------------------------------------------------------- /Class/Other/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/10/21. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /Class/Other/MJExtensionConfig.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJExtensionConfig.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/11/23. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MJExtensionConfig : NSObject 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Other/TSCCommonUtils.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCCommonUtils.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/7. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TSCCommonUtils : NSObject 12 | 13 | + (UIViewController *_Nonnull)superViewController:(UIViewController *_Nullable)vc; 14 | 15 | + (NSString *_Nullable) getCurrentNetworkStatus; 16 | 17 | + (UIViewController *_Nullable)getSuperViewController:(NSString *_Nullable)controllerName target:(nullable id)target; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Class/Other/TSCCommonUtils.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCCommonUtils.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/7. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCCommonUtils.h" 10 | #import "AFNetworking.h" 11 | 12 | @implementation TSCCommonUtils 13 | 14 | + (UIViewController *)superViewController:(UIViewController *)vc 15 | { 16 | for (UIView* next = [vc.view superview]; next; next = next.superview) { 17 | UIResponder *nextResponder = [next nextResponder]; 18 | if ([nextResponder isKindOfClass:[UIViewController class]]) { 19 | return (UIViewController *)nextResponder; 20 | } 21 | } 22 | return nil; 23 | } 24 | 25 | + (NSString *) getCurrentNetworkStatus{ 26 | //报错Variable is not assignable (missing__block type specifier) 27 | //当在block内部使用block外部定义的局部变量时,如果变量没有被__block修饰,则在block内部是readonly(只读的),不能对他修改,如果想修改,变量前必须要有__block修饰,__block的作用告诉编译器,编译时在block内部不要把外部变量当做常量使用,还是要当做变量使用.如果再block中访问全局变量,就不需要__block修饰. 28 | // __block NSInteger *netStatus = nil; 29 | // [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { 30 | // netStatus = &status; 31 | // }]; 32 | // return netStatus; 33 | 34 | /*----------------------------------------------------------------------------------------------------------*/ 35 | 36 | //不能在这里直接startMonitoring,因为这里是通过通过 SystemConfiguration 框架中的 SCNetworkReachability 来判断是否存在网络连接的,AFNetworkReachabilityManager 对象的 networkReachabilityStatus 属性值还是初始值 AFNetworkReachabilityStatusUnknown,直到异步线程中的 SCNetworkReachabilityGetFlags 函数返回,该属性值才能正确反映当前的网络状态 37 | //问题描述在: https://scfhao.coding.me/blog/2016/11/07/about-afnetworkreachibilymanager.html 38 | AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager]; 39 | 40 | NSString *status = [NSString stringWithFormat:@"%ld",(long)manager.networkReachabilityStatus]; 41 | 42 | return status; 43 | } 44 | /** 45 | * 获取父视图的控制器 46 | * 47 | * @return 父视图的控制器 48 | */ 49 | 50 | + (UIViewController *)getSuperViewController:(NSString *)controllerName target:(nullable id)target{ 51 | 52 | for (UIView* next = [target superview]; next; next = next.superview) { 53 | UIResponder *nextResponder = [next nextResponder]; 54 | if ([nextResponder isKindOfClass:[controllerName class]]) { 55 | return (UIViewController *)nextResponder; 56 | } 57 | } 58 | return nil; 59 | } 60 | 61 | @end 62 | -------------------------------------------------------------------------------- /Class/Other/TSCMacros.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCMacros.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/10/22. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #ifndef TSCMacros_h 10 | #define TSCMacros_h 11 | #define SCREEN_WIDTH [UIScreen mainScreen].bounds.size.width 12 | #define SCREEN_HEIGHT [UIScreen mainScreen].bounds.size.height 13 | #define LL_iPhoneX (SCREEN_WIDTH == 375.f && SCREEN_HEIGHT == 812.f ? YES : NO) 14 | #define RGB(x,y,z) [UIColor colorWithRed:(x/255.0) green:(y/255.0) blue:(z/255.0) alpha:1] 15 | #define HEXCOLOR(hex) [UIColor colorWithRed:((float)((hex & 0xFF0000) >> 16)) / 255.0 green:((float)((hex & 0xFF00) >> 8)) / 255.0 blue:((float)(hex & 0xFF)) / 255.0 alpha:1] 16 | #define LRRGBAColor(r, g, b, a) [UIColor colorWithRed:(r)/255.0 green:(r)/255.0 blue:(r)/255.0 alpha:a] 17 | #define IOS_VERSION [[[UIDevice currentDevice] systemVersion] floatValue] 18 | #endif /* TSCMacros_h */ 19 | -------------------------------------------------------------------------------- /Class/Other/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/10/21. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Other/ViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/10/21. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "ViewController.h" 10 | 11 | @interface ViewController () 12 | 13 | @end 14 | 15 | @implementation ViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | // Do any additional setup after loading the view. 20 | } 21 | 22 | - (void)didReceiveMemoryWarning { 23 | [super didReceiveMemoryWarning]; 24 | // Dispose of any resources that can be recreated. 25 | } 26 | 27 | /* 28 | #pragma mark - Navigation 29 | 30 | // In a storyboard-based application, you will often want to do a little preparation before navigation 31 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 32 | // Get the new view controller using [segue destinationViewController]. 33 | // Pass the selected object to the new view controller. 34 | } 35 | */ 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /Class/Other/property.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | socketIP 6 | 192.168.0.106 7 | socketHost 8 | 5001 9 | 10 | 11 | -------------------------------------------------------------------------------- /Class/Other/yingke.pch: -------------------------------------------------------------------------------- 1 | // 2 | // yingke.pch 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/10/21. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | /* 9 | build-settings--->perfix header----> 10 | $(SRCROOT)/Class/Other/yingke.pch 11 | 这样就可以让整个工程都可以引用到这个pch文件里面引用到的东西 12 | */ 13 | 14 | 15 | #ifndef yingke_pch 16 | #define yingke_pch 17 | #import "Masonry.h"//autolayout 布局控件 18 | #import "MJRefresh/MJRefresh.h"//下拉刷新 19 | #import "TSCMacros.h"//宏命令 20 | #import "YYKit.h" 21 | #import "APIConfig.h" 22 | #import "MJExtension.h"//可以将下划线命名转换成驼峰命名,json转model 23 | #import "UIImageView+SDWebImage.h" 24 | #import "TSCCommonUtils.h" //公共方法类 25 | #import "UIView+TSCAlert.h" 26 | #import 27 | #import 28 | 29 | 30 | 31 | 32 | 33 | // Include any system framework and library headers here that should be included in all compilation units. 34 | // You will also need to set the Prefix Header build setting of one or more of your targets to reference this file. 35 | 36 | #endif /* yingke_pch */ 37 | -------------------------------------------------------------------------------- /Class/Show/Handler/TSCLiveHandler.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCLiveHandler.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/11/19. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCBaseHandler.h" 10 | 11 | @interface TSCLiveHandler : TSCBaseHandler 12 | 13 | /** 14 | 获取热门直播信息 15 | 16 | @param success 成功 17 | @param failed 失败 18 | */ 19 | + (void) executeGetHotLiveTaskWithSuccess:(SuccessBlock) success failed:(FailedBlock) failed; 20 | 21 | + (void) executeGetNearFlowTaskWithData:(NSDictionary *)data Success:(SuccessBlock) success failed:(FailedBlock) failed; 22 | 23 | + (void) getLiveUsersWithData:(NSDictionary *)data success:(SuccessBlock) success failed:(FailedBlock) failed; 24 | 25 | + (void) getLiveGiftsWithData:(NSDictionary *)data success:(SuccessBlock) success failed:(FailedBlock) failed; 26 | @end 27 | -------------------------------------------------------------------------------- /Class/Show/Handler/TSCLiveHandler.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCLiveHandler.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/11/19. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCLiveHandler.h" 10 | #import "TSCHttpTool.h" 11 | #import "TSCCards.h" 12 | #import "TSCFlow.h" 13 | #import "TSCGifts.h" 14 | @implementation TSCLiveHandler 15 | 16 | + (void) executeGetHotLiveTaskWithSuccess:(SuccessBlock) success failed:(FailedBlock) failed{ 17 | [TSCHttpTool getWithPath:API_HotLive param:nil success:^(id json) { 18 | 19 | if([json[@"dm_error"] integerValue]){ 20 | failed(json); 21 | }else{ 22 | //如果返回信息正确 23 | //数据解析 24 | // NSArray *lives = [TSCCards mj_objectArrayWithKeyValuesArray:json[@"cards"]]; 25 | success(json); 26 | } 27 | } failure:^(NSError *error) { 28 | failed(error); 29 | }]; 30 | } 31 | 32 | + (void) executeGetNearFlowTaskWithData:(NSDictionary *)data Success:(SuccessBlock) success failed:(FailedBlock) failed{ 33 | [TSCHttpTool getWithPath:API_Near param:data success:^(id json) { 34 | if([json[@"dm_error"] integerValue]){ 35 | failed(json); 36 | }else{ 37 | NSArray *flows = [TSCFlow mj_objectArrayWithKeyValuesArray:json[@"flow"]]; 38 | success(flows); 39 | } 40 | } failure:^(NSError *error) { 41 | failed(error); 42 | }]; 43 | } 44 | 45 | +(void) getLiveUsersWithData:(NSDictionary *)data success:(SuccessBlock) success failed:(FailedBlock) failed{ 46 | [TSCHttpTool getWithPath:API_Live_Users param:data success:^(id json) { 47 | if([json[@"dm_error"] integerValue]){ 48 | failed(json); 49 | }else { 50 | success(json); 51 | } 52 | } failure:^(NSError *error) { 53 | failed(error); 54 | }]; 55 | } 56 | 57 | + (void) getLiveGiftsWithData:(NSDictionary *)data success:(SuccessBlock) success failed:(FailedBlock) failed{ 58 | [TSCHttpTool getWithPath:API_Live_Gift param:data success:^(id json) { 59 | if([json[@"dm_error"] integerValue]){ 60 | failed(json); 61 | }else { 62 | NSArray *flows = [TSCGifts mj_objectArrayWithKeyValuesArray:json[@"gifts"]]; 63 | success(flows); 64 | } 65 | } failure:^(NSError *error) { 66 | failed(error); 67 | }]; 68 | } 69 | 70 | @end 71 | -------------------------------------------------------------------------------- /Class/Show/Model/TSCActInfo.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCActInfo.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/11/23. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TSCActInfo : NSObject 12 | @property (nonatomic, strong) NSString * icon; 13 | @property (nonatomic, assign) NSInteger uid; 14 | @end 15 | -------------------------------------------------------------------------------- /Class/Show/Model/TSCActInfo.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCActInfo.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/11/23. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCActInfo.h" 10 | 11 | @implementation TSCActInfo 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Show/Model/TSCCards.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCCards.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/11/24. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "TSCCover.h" 11 | #import "TSCData.h" 12 | @interface TSCCards : NSObject 13 | 14 | @property (nonatomic, strong) TSCCover * cover; 15 | @property (nonatomic, strong) TSCData * data; 16 | @end 17 | -------------------------------------------------------------------------------- /Class/Show/Model/TSCCards.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCCards.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/11/24. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCCards.h" 10 | 11 | @implementation TSCCards 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Show/Model/TSCCover.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCCover.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/11/24. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "TSCCoverElements.h" 11 | @interface TSCCover : NSObject 12 | @property (nonatomic, strong) NSArray * elements; 13 | @property (nonatomic, assign) NSInteger style; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Class/Show/Model/TSCCover.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCCover.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/11/24. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCCover.h" 10 | #import "TSCCoverElements.h" 11 | @implementation TSCCover 12 | 13 | -(void)setElements:(NSArray *)elements{ 14 | // NSMutableArray *tempElements = [[NSMutableArray alloc]init]; 15 | // for (NSDictionary *element in elements) { 16 | // TSCCoverElements *coverElement = [TSCCoverElements mj_objectWithKeyValues:element]; 17 | // [tempElements addObject:coverElement]; 18 | // } 19 | _elements = [TSCCoverElements mj_objectArrayWithKeyValuesArray:elements]; 20 | } 21 | @end 22 | -------------------------------------------------------------------------------- /Class/Show/Model/TSCCoverElements.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCCoverElements.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/16. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TSCCoverElements : NSObject 12 | 13 | @property (nonatomic, strong) NSString * bgImage; 14 | @property (nonatomic, strong) NSArray * icon; 15 | @property (nonatomic, strong) NSString * text; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Class/Show/Model/TSCCoverElements.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCCoverElements.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/16. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCCoverElements.h" 10 | 11 | @implementation TSCCoverElements 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Show/Model/TSCCreator.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCCreator.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/11/23. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TSCCreator : NSObject 12 | @property (nonatomic, strong) NSString * birth; 13 | @property (nonatomic, strong) NSString * desc; 14 | @property (nonatomic, strong) NSString * emotion; 15 | @property (nonatomic, assign) NSInteger gender; 16 | @property (nonatomic, assign) NSInteger gmutex; 17 | @property (nonatomic, strong) NSString * hometown; 18 | @property (nonatomic, assign) NSInteger ID; 19 | @property (nonatomic, assign) NSInteger inkeVerify; 20 | @property (nonatomic, assign) NSInteger level; 21 | @property (nonatomic, strong) NSString * location; 22 | @property (nonatomic, strong) NSString * nick; 23 | @property (nonatomic, strong) NSString * portrait; 24 | @property (nonatomic, strong) NSString * profession; 25 | @property (nonatomic, assign) NSInteger rankVeri; 26 | @property (nonatomic, assign) NSInteger sex; 27 | @property (nonatomic, strong) NSString * thirdPlatform; 28 | @property (nonatomic, strong) NSString * veriInfo; 29 | @property (nonatomic, assign) NSInteger verified; 30 | @property (nonatomic, strong) NSString * verifiedReason; 31 | @end 32 | -------------------------------------------------------------------------------- /Class/Show/Model/TSCCreator.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCCreator.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/11/23. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCCreator.h" 10 | 11 | @implementation TSCCreator 12 | 13 | +(NSDictionary *)replacedKeyFromPropertyName{ 14 | 15 | return @{@"ID":@"id"}; 16 | 17 | } 18 | @end 19 | -------------------------------------------------------------------------------- /Class/Show/Model/TSCData.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCData.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/11/24. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "TSCLive.h" 11 | 12 | @interface TSCData : NSObject 13 | 14 | @property (nonatomic, strong) TSCLive * liveInfo; 15 | @property (nonatomic, assign) NSInteger pos; 16 | @property (nonatomic, strong) NSString * redirectType; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Class/Show/Model/TSCData.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCData.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/11/24. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCData.h" 10 | 11 | @implementation TSCData 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Show/Model/TSCExtra.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCExtra.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/11/23. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "TSCLabel.h" 11 | @interface TSCExtra : NSObject 12 | 13 | @property (nonatomic, strong) NSObject * cover; 14 | @property (nonatomic, strong) NSArray * label; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Class/Show/Model/TSCExtra.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCExtra.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/11/23. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCExtra.h" 10 | #import "TSCLabel.h" 11 | @implementation TSCExtra 12 | 13 | -(void)setLabel:(NSArray *)label{ 14 | _label = [TSCLabel mj_objectArrayWithKeyValuesArray:label]; 15 | } 16 | @end 17 | -------------------------------------------------------------------------------- /Class/Show/Model/TSCFlow.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCFlow.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/2. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "TSCLive.h" 11 | @interface TSCFlow : NSObject 12 | @property (nonatomic, strong) NSString * flowType; 13 | @property (nonatomic, strong) TSCLive * info; 14 | @end 15 | -------------------------------------------------------------------------------- /Class/Show/Model/TSCFlow.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCFlow.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/2. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCFlow.h" 10 | 11 | @implementation TSCFlow 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Show/Model/TSCLabel.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCLabel.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/11/24. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TSCLabel : NSObject 12 | 13 | @property (nonatomic, strong) NSArray * cl; 14 | @property (nonatomic, strong) NSString * tabKey; 15 | @property (nonatomic, strong) NSString * tabName; 16 | @end 17 | -------------------------------------------------------------------------------- /Class/Show/Model/TSCLabel.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCLabel.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/11/24. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCLabel.h" 10 | 11 | @implementation TSCLabel 12 | 13 | 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Class/Show/Model/TSCLive.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCLive.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/11/23. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "TSCCreator.h" 11 | #import "TSCExtra.h" 12 | #import "TSCActInfo.h" 13 | 14 | @interface TSCLive : NSObject 15 | @property (nonatomic, strong) TSCActInfo * actInfo; 16 | @property (nonatomic, strong) NSString * city; 17 | @property (nonatomic, strong) TSCCreator * creator; 18 | @property (nonatomic, strong) TSCExtra * extra; 19 | @property (nonatomic, assign) NSInteger group; 20 | @property (nonatomic, strong) NSString * ID; 21 | @property (nonatomic, strong) NSString * image; 22 | @property (nonatomic, assign) NSInteger landscape; 23 | @property (nonatomic, strong) NSArray * like; 24 | @property (nonatomic, assign) NSInteger link; 25 | @property (nonatomic, strong) NSString * liveType; 26 | @property (nonatomic, assign) NSInteger multi; 27 | @property (nonatomic, strong) NSString * name; 28 | @property (nonatomic, assign) NSInteger onlineUsers; 29 | @property (nonatomic, assign) NSInteger optimal; 30 | @property (nonatomic, assign) NSInteger pubStat; 31 | @property (nonatomic, assign) NSInteger roomId; 32 | @property (nonatomic, assign) NSInteger rotate; 33 | @property (nonatomic, strong) NSString * shareAddr; 34 | @property (nonatomic, assign) NSInteger slot; 35 | @property (nonatomic, assign) NSInteger status; 36 | @property (nonatomic, strong) NSString * streamAddr; 37 | @property (nonatomic, strong) NSString * token; 38 | @property (nonatomic, assign) NSInteger version; 39 | @property (nonatomic, strong) NSString * distance; 40 | @property (nonatomic, getter=isShow) BOOL show; 41 | @end 42 | -------------------------------------------------------------------------------- /Class/Show/Model/TSCLive.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCLive.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/11/23. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCLive.h" 10 | 11 | @implementation TSCLive 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Show/Model/gift/TSCGiftExtra.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCGiftExtra.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/11. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface TSCGiftExtra : NSObject 13 | @property (nonatomic, strong) NSArray * giftBundle; 14 | @end 15 | -------------------------------------------------------------------------------- /Class/Show/Model/gift/TSCGiftExtra.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCGiftExtra.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/11. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCGiftExtra.h" 10 | 11 | @implementation TSCGiftExtra 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Show/Model/gift/TSCGifts.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCGifts.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/11. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "TSCGiftExtra.h" 11 | #import "TSCLevelInfo.h" 12 | #import "TSCResource.h" 13 | @interface TSCGifts : NSObject 14 | @property (nonatomic, strong) NSString * chatIcon; 15 | @property (nonatomic, strong) NSArray * cl; 16 | @property (nonatomic, assign) NSInteger dyna; 17 | @property (nonatomic, strong) NSArray * dynamic; 18 | @property (nonatomic, assign) NSInteger exp; 19 | @property (nonatomic, strong) TSCGiftExtra * extra; 20 | @property (nonatomic, strong) NSArray * giftIconId; 21 | @property (nonatomic, assign) NSInteger gold; 22 | @property (nonatomic, assign) NSInteger goldType; 23 | @property (nonatomic, strong) NSString * icon; 24 | @property (nonatomic, assign) NSInteger ID; 25 | @property (nonatomic, strong) NSString * image; 26 | @property (nonatomic, strong) NSString * image3; 27 | @property (nonatomic, assign) NSInteger isMulti; 28 | @property (nonatomic, strong) TSCLevelInfo * levelInfo; 29 | @property (nonatomic, strong) NSString * name; 30 | @property (nonatomic, assign) NSInteger point; 31 | @property (nonatomic, assign) CGFloat recvRate; 32 | @property (nonatomic, assign) NSInteger replaceId; 33 | @property (nonatomic, strong) TSCResource * resource; 34 | @property (nonatomic, assign) NSInteger secondCurrency; 35 | @property (nonatomic, assign) NSInteger starLight; 36 | @property (nonatomic, assign) NSInteger type; 37 | //???? 38 | @property (nonatomic, getter=isSelected) BOOL selected; 39 | @end 40 | -------------------------------------------------------------------------------- /Class/Show/Model/gift/TSCGifts.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCGifts.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/11. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCGifts.h" 10 | 11 | @implementation TSCGifts 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Show/Model/gift/TSCLevelInfo.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCLevelInfo.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/11. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TSCLevelInfo : NSObject 12 | @property (nonatomic, assign) NSInteger giftId; 13 | @property (nonatomic, assign) NSInteger giftLevel; 14 | @end 15 | -------------------------------------------------------------------------------- /Class/Show/Model/gift/TSCLevelInfo.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCLevelInfo.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/11. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCLevelInfo.h" 10 | 11 | @implementation TSCLevelInfo 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Show/Model/gift/TSCResource.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCResource.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/11. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "TSCResourceExtra.h" 11 | @interface TSCResource : NSObject 12 | @property (nonatomic, assign) NSInteger aid; 13 | @property (nonatomic, strong) NSString * desc; 14 | @property (nonatomic, strong) TSCResourceExtra * extra; 15 | @property (nonatomic, assign) NSInteger ID; 16 | @property (nonatomic, strong) NSString * pic; 17 | @property (nonatomic, strong) NSString * pic3; 18 | @end 19 | -------------------------------------------------------------------------------- /Class/Show/Model/gift/TSCResource.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCResource.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/11. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCResource.h" 10 | 11 | @implementation TSCResource 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Show/Model/gift/TSCResourceExtra.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCResourceExtra.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/11. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TSCResourceExtra : NSObject 12 | @property (nonatomic, assign) NSInteger animationTime; 13 | @property (nonatomic, assign) NSInteger gestureSwitch; 14 | @property (nonatomic, assign) NSInteger type; 15 | @property (nonatomic, strong) NSString * zipUrl; 16 | @property (nonatomic, strong) NSString * md5; 17 | @end 18 | -------------------------------------------------------------------------------- /Class/Show/Model/gift/TSCResourceExtra.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCResourceExtra.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/11. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCResourceExtra.h" 10 | 11 | @implementation TSCResourceExtra 12 | 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Class/Show/Model/hotSpecial/TSCHotSpecialCard.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCHotSpecialCard.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/16. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "TSCCover.h" 11 | #import "TSCHotSpecialData.h" 12 | @interface TSCHotSpecialCard : NSObject 13 | @property (nonatomic, strong) TSCCover * cover; 14 | @property (nonatomic, strong) TSCHotSpecialData *data; 15 | @end 16 | -------------------------------------------------------------------------------- /Class/Show/Model/hotSpecial/TSCHotSpecialCard.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCHotSpecialCard.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/16. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCHotSpecialCard.h" 10 | 11 | @implementation TSCHotSpecialCard 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Show/Model/hotSpecial/TSCHotSpecialData.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCHotSpecialData.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/16. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "TSCTicker.h" 11 | @interface TSCHotSpecialData : NSObject 12 | @property (nonatomic, assign) NSInteger pos; 13 | @property (nonatomic, strong) NSString * redirectType; 14 | @property (nonatomic, strong) NSArray * ticker; 15 | @property (nonatomic, strong) NSString * token; 16 | @end 17 | -------------------------------------------------------------------------------- /Class/Show/Model/hotSpecial/TSCHotSpecialData.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCHotSpecialData.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/16. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCHotSpecialData.h" 10 | #import "TSCTicker.h" 11 | @implementation TSCHotSpecialData 12 | -(void)setTicker:(NSArray *)ticker{ 13 | // NSMutableArray *tempTicker = [[NSMutableArray alloc]init]; 14 | // for (NSDictionary *data in ticker) { 15 | // TSCTicker *t = [TSCTicker mj_objectWithKeyValues:data]; 16 | // [tempTicker addObject:t]; 17 | // } 18 | _ticker = [TSCTicker mj_objectArrayWithKeyValuesArray:ticker]; 19 | 20 | } 21 | @end 22 | -------------------------------------------------------------------------------- /Class/Show/Model/hotSpecial/TSCTicker.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCTicker.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/16. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TSCTicker : NSObject 12 | @property (nonatomic, strong) NSString * image; 13 | @property (nonatomic, strong) NSString * link; 14 | @end 15 | -------------------------------------------------------------------------------- /Class/Show/Model/hotSpecial/TSCTicker.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCTicker.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/16. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCTicker.h" 10 | 11 | @implementation TSCTicker 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Show/Model/liveSwiper/TSCLiveSwiperCard.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCLiveSwiperCard.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/16. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "TSCCover.h" 11 | #import "TSCLiveSwiperData.h" 12 | @interface TSCLiveSwiperCard : NSObject 13 | @property (nonatomic, strong) TSCCover * cover; 14 | @property (nonatomic, strong) TSCLiveSwiperData * data; 15 | @end 16 | -------------------------------------------------------------------------------- /Class/Show/Model/liveSwiper/TSCLiveSwiperCard.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCLiveSwiperCard.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/16. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCLiveSwiperCard.h" 10 | 11 | @implementation TSCLiveSwiperCard 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Show/Model/liveSwiper/TSCLiveSwiperChannel.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCLiveSwiperChannel.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/16. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "TSCLive.h" 11 | #import "TSCLiveSwiperChannelResource.h" 12 | 13 | @interface TSCLiveSwiperChannel : NSObject 14 | @property (nonatomic, strong) NSArray * cards; 15 | @property (nonatomic, strong) NSString * link; 16 | @property (nonatomic, strong) NSString * name; 17 | @property (nonatomic, strong) NSArray * resource; 18 | @property (nonatomic, strong) NSString * tabKey; 19 | @end 20 | -------------------------------------------------------------------------------- /Class/Show/Model/liveSwiper/TSCLiveSwiperChannel.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCLiveSwiperChannel.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/16. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCLiveSwiperChannel.h" 10 | #import "TSCCards.h" 11 | #import "TSCLive.h" 12 | #import "TSCLiveSwiperChannelResource.h" 13 | @implementation TSCLiveSwiperChannel 14 | -(void)setCards:(NSArray *)cards{ 15 | // NSLog(@"%@",cards); 16 | // NSMutableArray *temp = [[NSMutableArray alloc]init]; 17 | // for (NSDictionary *data in cards) { 18 | // TSCLive *card = [TSCLive mj_objectWithKeyValues:data]; 19 | // [temp addObject:card]; 20 | // } 21 | _cards = [TSCLive mj_objectArrayWithKeyValuesArray:cards]; 22 | } 23 | -(void)setResource:(NSArray *)resource{ 24 | // NSLog(@"%@",resource); 25 | // NSMutableArray *temp = [[NSMutableArray alloc]init]; 26 | // for (NSDictionary *data in resource) { 27 | // TSCLiveSwiperChannelResource *r = [TSCLiveSwiperChannelResource mj_objectWithKeyValues:data]; 28 | // [temp addObject:r]; 29 | // } 30 | _resource = [TSCLiveSwiperChannelResource mj_objectArrayWithKeyValuesArray:resource]; 31 | } 32 | @end 33 | 34 | -------------------------------------------------------------------------------- /Class/Show/Model/liveSwiper/TSCLiveSwiperChannelResource.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCLiveSwiperChannelResource.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/16. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TSCLiveSwiperChannelResource : NSObject 12 | @property (nonatomic, strong) NSString * bgColor; 13 | @property (nonatomic, strong) NSString * bgImage; 14 | @property (nonatomic, strong) NSArray * gradientColor; 15 | @property (nonatomic, strong) NSArray * icon; 16 | @property (nonatomic, strong) NSString * text; 17 | @end 18 | -------------------------------------------------------------------------------- /Class/Show/Model/liveSwiper/TSCLiveSwiperChannelResource.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCLiveSwiperChannelResource.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/16. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCLiveSwiperChannelResource.h" 10 | 11 | @implementation TSCLiveSwiperChannelResource 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Show/Model/liveSwiper/TSCLiveSwiperData.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCLiveSwiperData.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/16. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "TSCLiveSwiperChannel.h" 11 | #import "TSCLiveSwiperExtra.h" 12 | @interface TSCLiveSwiperData : NSObject 13 | @property (nonatomic, strong) TSCLiveSwiperChannel * channel; 14 | @property (nonatomic, strong) TSCLiveSwiperExtra * extra; 15 | @property (nonatomic, assign) NSInteger pos; 16 | @property (nonatomic, strong) NSString * redirectType; 17 | @property (nonatomic, strong) NSString * token; 18 | @end 19 | -------------------------------------------------------------------------------- /Class/Show/Model/liveSwiper/TSCLiveSwiperData.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCLiveSwiperData.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/16. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCLiveSwiperData.h" 10 | 11 | @implementation TSCLiveSwiperData 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Show/Model/liveSwiper/TSCLiveSwiperExtra.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCLiveSwiperExtra.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/16. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TSCLiveSwiperExtra : NSObject 12 | @property (nonatomic, strong) NSString * channelType; 13 | @property (nonatomic, strong) NSString * color; 14 | @property (nonatomic, strong) NSString * num; 15 | @property (nonatomic, strong) NSString * numDesc; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Class/Show/Model/liveSwiper/TSCLiveSwiperExtra.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCLiveSwiperExtra.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/16. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCLiveSwiperExtra.h" 10 | 11 | @implementation TSCLiveSwiperExtra 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Show/Model/playChat/TSCChatModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCChatModel.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2018/1/3. 6 | // Copyright © 2018年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TSCChatModel : NSObject 12 | @property (nonatomic, strong) NSString *name; 13 | @property (nonatomic, strong) NSString *context; 14 | @property (nonatomic, strong) NSNumber *userLevel; 15 | @property (nonatomic, assign) BOOL isMoreLine; 16 | @property (nonatomic, strong) NSNumber *tableWidth; 17 | @property (nonatomic, strong) NSString *firstContent; 18 | @property (nonatomic, strong) NSString *secondContent; 19 | @property (nonatomic, assign) CGSize secondContentSize; 20 | @property (nonatomic, strong) NSNumber *cellHeight; 21 | @property (nonatomic,strong) NSNumber *backgroundTrailling; 22 | @property (nonatomic, strong) NSNumber *type; 23 | 24 | -(instancetype)initWithDictinary:(NSDictionary *)dict; 25 | @end 26 | -------------------------------------------------------------------------------- /Class/Show/Model/playChat/TSCChatModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCChatModel.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2018/1/3. 6 | // Copyright © 2018年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCChatModel.h" 10 | 11 | @implementation TSCChatModel 12 | -(instancetype)initWithDictinary:(NSDictionary *)dict{ 13 | if(self = [super init]){ 14 | _name = [NSString stringWithFormat:@"%@:",dict[@"userName"]]; 15 | _context = dict[@"context"]; 16 | _userLevel = [NSNumber numberWithString:[NSString stringWithFormat:@"%@",dict[@"userLevel"]]]; 17 | NSNumber *tableWidth = dict[@"tableWidth"]; 18 | _tableWidth = tableWidth; 19 | NSLog(@"%f",tableWidth.floatValue); 20 | _type = dict[@"type"]; 21 | 22 | if(_type.integerValue == 1){ 23 | CGFloat contentHeight= [_context boundingRectWithSize:CGSizeMake(_tableWidth.floatValue-10, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:13]} context:nil].size.height; 24 | _cellHeight = [NSNumber numberWithFloat:contentHeight+10]; 25 | }else{ 26 | /*------------------------------------计算文本宽度是否为两行--------------------------------------------*/ 27 | //计算名字宽度 28 | CGFloat nameWidth = [_name boundingRectWithSize:CGSizeMake(70, 15) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:13]} context:nil].size.width; 29 | //计算文本宽度 30 | CGFloat contentWidth = [_context boundingRectWithSize:CGSizeMake(MAXFLOAT, 15) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:13]} context:nil].size.width; 31 | //第一行可行的宽度 32 | CGFloat contentMaxWidth = tableWidth.floatValue - nameWidth - 52;//5*4的间隔+32的level宽度 33 | 34 | if(contentWidth > contentMaxWidth){ 35 | _isMoreLine = YES; 36 | //计算第一行几个字 (先算每单位中能放几个字,再算出第一行的宽度内可以放几个字) 37 | NSUInteger cutLength = contentMaxWidth * (CGFloat)_context.length / contentWidth; 38 | _firstContent = [_context substringToIndex:cutLength]; 39 | _secondContent = [_context substringFromIndex:cutLength]; 40 | _secondContentSize = [_secondContent boundingRectWithSize:CGSizeMake(tableWidth.floatValue -10, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:13]} context:nil].size; 41 | _cellHeight = [NSNumber numberWithFloat:_secondContentSize.height + 10 + 16]; 42 | }else { 43 | _backgroundTrailling =[NSNumber numberWithFloat:contentMaxWidth - contentWidth]; 44 | } 45 | } 46 | } 47 | 48 | return self; 49 | } 50 | @end 51 | 52 | -------------------------------------------------------------------------------- /Class/Show/View/TSCLiveCellTableViewCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCLiveCellTableViewCell.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/11/25. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "TSCLive.h" 11 | @interface TSCLiveCellTableViewCell : UITableViewCell 12 | 13 | @property (nonatomic,strong) TSCLive * live; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Class/Show/View/TSCLiveCellTableViewCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCLiveCellTableViewCell.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/11/25. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCLiveCellTableViewCell.h" 10 | #import "TSCTabBarViewController.h" 11 | 12 | @interface TSCLiveCellTableViewCell() 13 | @property (weak, nonatomic) IBOutlet UIImageView *headView; 14 | @property (weak, nonatomic) IBOutlet UILabel *nameLabel; 15 | @property (weak, nonatomic) IBOutlet UILabel *locationLabel; 16 | @property (weak, nonatomic) IBOutlet UILabel *onLineLabel; 17 | @property (weak, nonatomic) IBOutlet UIImageView *bigImageView; 18 | 19 | 20 | @end 21 | 22 | 23 | @implementation TSCLiveCellTableViewCell 24 | 25 | //? 26 | -(void)setLive:(TSCLive *)live{ 27 | 28 | _live = live; 29 | NSString *imagePath =[live.creator.portrait hasPrefix:@"http://"]?live.creator.portrait: [NSString stringWithFormat:@"%@%@",RESOURCE_HOST,live.creator.portrait]; 30 | [self.headView downloadImage:imagePath placeholder:@"default_room"]; 31 | 32 | [self.bigImageView downloadImage:imagePath placeholder:@"default_room"]; 33 | self.nameLabel.text = live.creator.nick; 34 | self.onLineLabel.text = [@(live.onlineUsers) stringValue];; 35 | self.locationLabel.text = live.city; 36 | } 37 | 38 | - (void)awakeFromNib { 39 | [super awakeFromNib]; 40 | // Initialization code 41 | //可以在xib中的 headView 的image 的show the identity inspector 中的user Defined runtime attributes 里面填写 42 | // self.headView.layer.cornerRadius = CGRectGetWidth(self.headView.frame) / 2; 43 | // self.headView.layer.masksToBounds = YES; 44 | } 45 | 46 | - (void)setSelected:(BOOL)selected animated:(BOOL)animated { 47 | [super setSelected:selected animated:animated]; 48 | 49 | // Configure the view for the selected state 50 | } 51 | - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { 52 | UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow; 53 | UIViewController *vc = keyWindow.rootViewController; 54 | TSCTabBarViewController * tabbarVC = nil; 55 | 56 | if ([vc isKindOfClass:[TSCTabBarViewController class]]) 57 | { 58 | tabbarVC = (TSCTabBarViewController *)vc; 59 | } 60 | 61 | TSCTabBar* tabbar = tabbarVC.tscTabbar; 62 | UIButton* btn = tabbar.camearButton; 63 | UIView *result = [super hitTest:point withEvent:event]; 64 | CGPoint buttonPoint = [btn convertPoint:point fromView:self]; 65 | if ([btn pointInside:buttonPoint withEvent:event]) { 66 | return btn; 67 | } 68 | return result; 69 | } 70 | @end 71 | -------------------------------------------------------------------------------- /Class/Show/View/TSCNearLiveCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCNearLiveCell.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/2. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "TSCLive.h" 11 | @interface TSCNearLiveCell : UICollectionViewCell 12 | 13 | @property (nonatomic,strong) TSCLive *info; 14 | 15 | -(void)showAnimation; 16 | @end 17 | -------------------------------------------------------------------------------- /Class/Show/View/hotNew/TSCBannerImageCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCBannerImageCell.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/17. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TSCBannerImageCell : UICollectionViewCell 12 | 13 | @property (nonatomic,strong)NSString * imageUrl; 14 | @end 15 | -------------------------------------------------------------------------------- /Class/Show/View/hotNew/TSCBannerImageCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCBannerImageCell.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/17. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCBannerImageCell.h" 10 | @interface TSCBannerImageCell() 11 | @property (weak, nonatomic) IBOutlet UIImageView *image; 12 | 13 | @end 14 | @implementation TSCBannerImageCell 15 | -(void)setImageUrl:(NSString *)imageUrl{ 16 | [self.image downloadImage:imageUrl placeholder:@"default_room"]; 17 | } 18 | - (void)awakeFromNib { 19 | [super awakeFromNib]; 20 | // Initialization code 21 | } 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Class/Show/View/hotNew/TSCHotBannerCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCHotBannerCell.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/17. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "TSCHotSpecialData.h" 11 | 12 | @interface TSCHotBannerCell : UICollectionViewCell 13 | 14 | @property (nonatomic, strong)TSCHotSpecialData * data; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Class/Show/View/hotNew/TSCHotBannerCell.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /Class/Show/View/hotNew/TSCHotGameCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCHotGameCell.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/17. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "TSCHotSpecialCard.h" 11 | @interface TSCHotGameCell : UICollectionViewCell 12 | @property (nonatomic,strong) TSCHotSpecialCard * card; 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Show/View/hotNew/TSCHotGameCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCHotGameCell.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/17. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCHotGameCell.h" 10 | #import "TSCCoverElements.h" 11 | #import "TSCTicker.h" 12 | @interface TSCHotGameCell() 13 | @property (weak, nonatomic) IBOutlet UILabel *onlineUsersLabel; 14 | @property (weak, nonatomic) IBOutlet UIImageView *gameImage; 15 | 16 | @end 17 | @implementation TSCHotGameCell 18 | -(void)setCard:(TSCHotSpecialCard *)card{ 19 | _card = card; 20 | // NSString *imagePath =[live.creator.portrait hasPrefix:@"http://"]?live.creator.portrait: [NSString stringWithFormat:@"%@%@",RESOURCE_HOST,live.creator.portrait]; 21 | // [self.userImage downloadImage:imagePath placeholder:@"default_room"]; 22 | // NSArray<> *elements = card.cover.elements[0]; 23 | TSCCoverElements *element =card.cover.elements[0]; 24 | // NSString *imagePath = [card.cover.elements] 25 | self.onlineUsersLabel.text = element.text; 26 | TSCTicker *ticker = (TSCTicker *)card.data.ticker[0]; 27 | [self.gameImage downloadImage:ticker.image placeholder:@"default_room"]; 28 | 29 | } 30 | - (void)awakeFromNib { 31 | [super awakeFromNib]; 32 | // Initialization code 33 | } 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /Class/Show/View/hotNew/TSCHotLiveCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCHotLiveCell.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/17. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "TSCLive.h" 11 | @interface TSCHotLiveCell : UICollectionViewCell 12 | @property (nonatomic,strong) TSCLive * live; 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Show/View/hotNew/TSCHotLiveCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCHotLiveCell.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/17. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCHotLiveCell.h" 10 | #import "TSCTabBarViewController.h" 11 | @interface TSCHotLiveCell() 12 | @property (weak, nonatomic) IBOutlet UILabel *locationLabel; 13 | @property (weak, nonatomic) IBOutlet UILabel *onlineUsersLabel; 14 | @property (weak, nonatomic) IBOutlet UILabel *userNickLabel; 15 | @property (weak, nonatomic) IBOutlet UIImageView *userImage; 16 | 17 | @end 18 | 19 | @implementation TSCHotLiveCell 20 | -(void)setLive:(TSCLive *)live{ 21 | _live = live; 22 | NSString *imagePath =[live.creator.portrait hasPrefix:@"http://"]?live.creator.portrait: [NSString stringWithFormat:@"%@%@",RESOURCE_HOST,live.creator.portrait]; 23 | [self.userImage downloadImage:imagePath placeholder:@"default_room"]; 24 | self.userNickLabel.text = live.creator.nick; 25 | self.onlineUsersLabel.text =[NSString stringWithFormat:@"%ld正在看",(long)live.onlineUsers] ;//[@(live.onlineUsers) stringValue]; 26 | self.locationLabel.text = live.city; 27 | } 28 | 29 | - (void)awakeFromNib { 30 | [super awakeFromNib]; 31 | // Initialization code 32 | } 33 | 34 | #pragma mark 检测用户的点击事件是否在tabbar的按钮里,如果是则出发按钮效果 35 | - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { 36 | UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow; 37 | UIViewController *vc = keyWindow.rootViewController; 38 | TSCTabBarViewController * tabbarVC = nil; 39 | 40 | if ([vc isKindOfClass:[TSCTabBarViewController class]]) 41 | { 42 | tabbarVC = (TSCTabBarViewController *)vc; 43 | } 44 | 45 | TSCTabBar* tabbar = tabbarVC.tscTabbar; 46 | UIButton* btn = tabbar.camearButton; 47 | UIView *result = [super hitTest:point withEvent:event]; 48 | CGPoint buttonPoint = [btn convertPoint:point fromView:self]; 49 | if ([btn pointInside:buttonPoint withEvent:event]) { 50 | return btn; 51 | } 52 | return result; 53 | } 54 | 55 | @end 56 | -------------------------------------------------------------------------------- /Class/Show/View/hotNew/TSCHotSwiperLiveCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCHotSwiperLiveCell.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/17. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "TSCLiveSwiperCard.h" 11 | @interface TSCHotSwiperLiveCell : UICollectionViewCell 12 | 13 | @property (nonatomic,strong)TSCLiveSwiperCard * card; 14 | @end 15 | -------------------------------------------------------------------------------- /Class/Show/View/hotNew/TSCHotSwiperLiveCell.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /Class/Show/View/play/TSCChatViewCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCChatViewCell.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2018/1/2. 6 | // Copyright © 2018年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "TSCChatModel.h" 11 | @interface TSCChatViewCell : UITableViewCell 12 | @property (nonatomic,strong) TSCChatModel *model; 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Show/View/play/TSCGiftCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCGiftCell.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/7. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "TSCGifts.h" 11 | 12 | @interface TSCGiftCell : UICollectionViewCell 13 | @property (nonatomic,strong) TSCGifts *gift; 14 | - (void) showAnimation; 15 | - (void) stopAnimation; 16 | @end 17 | -------------------------------------------------------------------------------- /Class/Show/View/play/TSCSystemMsgCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCSystemMsgCell.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2018/1/7. 6 | // Copyright © 2018年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "TSCChatModel.h" 11 | @interface TSCSystemMsgCell : UITableViewCell 12 | @property (nonatomic,strong) TSCChatModel *model; 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Show/View/play/TSCSystemMsgCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCSystemMsgCell.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2018/1/7. 6 | // Copyright © 2018年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCSystemMsgCell.h" 10 | @interface TSCSystemMsgCell() 11 | @property (weak, nonatomic) IBOutlet NSLayoutConstraint *backViewTrailing; 12 | @property (weak, nonatomic) IBOutlet UILabel *content; 13 | @end 14 | @implementation TSCSystemMsgCell 15 | -(void)setModel:(TSCChatModel *)model{ 16 | _model = model; 17 | self.content.text = model.context; 18 | CGFloat contentWidth = [self.content.text boundingRectWithSize:CGSizeMake(model.tableWidth.floatValue -10, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:13]} context:nil].size.width; 19 | if(contentWidth < model.tableWidth.floatValue -15){ 20 | self.backViewTrailing.constant = model.tableWidth.floatValue -15- contentWidth ; 21 | } 22 | } 23 | 24 | - (void)awakeFromNib { 25 | [super awakeFromNib]; 26 | // Initialization code 27 | } 28 | 29 | - (void)setSelected:(BOOL)selected animated:(BOOL)animated { 30 | [super setSelected:selected animated:animated]; 31 | 32 | // Configure the view for the selected state 33 | } 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /Class/Show/ViewController/TSCFocusViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCFocusViewController.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/11/5. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCBaseViewController.h" 10 | 11 | @interface TSCFocusViewController : TSCBaseViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Show/ViewController/TSCFocusViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // TSCFocusViewController.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/11/5. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCFocusViewController.h" 10 | 11 | @interface TSCFocusViewController () 12 | 13 | @end 14 | 15 | @implementation TSCFocusViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | // Do any additional setup after loading the view from its nib. 20 | 21 | self.view.backgroundColor = [UIColor orangeColor]; 22 | } 23 | 24 | - (void)didReceiveMemoryWarning { 25 | [super didReceiveMemoryWarning]; 26 | // Dispose of any resources that can be recreated. 27 | } 28 | 29 | /* 30 | #pragma mark - Navigation 31 | 32 | // In a storyboard-based application, you will often want to do a little preparation before navigation 33 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 34 | // Get the new view controller using [segue destinationViewController]. 35 | // Pass the selected object to the new view controller. 36 | } 37 | */ 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /Class/Show/ViewController/TSCFocusViewController.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /Class/Show/ViewController/TSCHotViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCHotViewController.h 3 | // Test-inke 4 | // 这个方法主要是测试UITableViewController的 5 | // Created by 唐嗣成 on 2017/11/5. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCBaseViewController.h" 10 | 11 | @interface TSCHotViewController : UITableViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Show/ViewController/TSCHotViewController.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /Class/Show/ViewController/TSCHotViewControllerNew.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCHotViewControllerNew.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/16. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCBaseViewController.h" 10 | 11 | @interface TSCHotViewControllerNew : TSCBaseViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Show/ViewController/TSCNearViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCNearViewController.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/11/5. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCBaseViewController.h" 10 | 11 | @interface TSCNearViewController : TSCBaseViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Show/ViewController/livePlayer/TSCGiftViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCGiftViewController.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/12/6. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCBaseViewController.h" 10 | #import "TSCLive.h" 11 | @interface TSCGiftViewController : TSCBaseViewController 12 | @property (nonatomic,strong) TSCLive *live; 13 | @end 14 | -------------------------------------------------------------------------------- /Class/Show/ViewController/livePlayer/TSCGiftViewController.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /Class/Show/ViewController/livePlayer/TSCLiveChatViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCLiveChatViewController.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/11/28. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCBaseViewController.h" 10 | #import "TSCLive.h" 11 | #import "TSCBulletManager.h" 12 | @interface TSCLiveChatViewController : TSCBaseViewController 13 | 14 | @property (weak, nonatomic) IBOutlet UIView *toolView; 15 | @property (nonatomic,strong) TSCLive * live; 16 | @property (nonatomic, strong) SocketIOClient *client; 17 | @property (nonatomic,retain) TSCBulletManager *bulletManager; 18 | 19 | -(void) closeGiftView; 20 | @end 21 | -------------------------------------------------------------------------------- /Class/Show/ViewController/livePlayer/TSCPlayerViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TSCPlayerViewController.h 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/11/26. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import "TSCBaseViewController.h" 10 | #import "TSCLive.h" 11 | @interface TSCPlayerViewController : TSCBaseViewController 12 | 13 | @property (nonatomic,strong) TSCLive * live; 14 | @property(nonatomic,strong) UIButton * closeBtn; 15 | @end 16 | -------------------------------------------------------------------------------- /Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment the next line to define a global platform for your project 2 | # platform :ios, '9.0' 3 | 4 | target 'Test-inke' do 5 | # Uncomment the next line if you're using Swift or would like to use dynamic frameworks 6 | # use_frameworks 使用时出现问题http://blog.csdn.net/feng2qing/article/details/73835805 7 | use_frameworks! 8 | 9 | # Pods for Test-inke 10 | pod 'Socket.IO-Client-Swift', '~> 8.3.3' #这里有个问题,最新版本的socketio,连接不到我的后台node服务器,但是回退到这个版本就能调用了 11 | pod 'AFNetworking', '~> 3.1.0' 12 | pod 'SDWebImage', '~> 4.0.0' 13 | pod 'Masonry', '~> 1.0.2' 14 | pod 'YYKit', '~> 1.0.9' 15 | pod 'MJExtension' 16 | pod 'MJRefresh' 17 | pod 'LFLiveKit' 18 | pod 'UMengUShare/UI' 19 | # 集成新浪微博 【友盟官网技术文档这里标点符号有错,导入的时候记得更改】 20 | pod 'UMengUShare/Social/Sina' 21 | # 集成微信 22 | pod 'UMengUShare/Social/WeChat' 23 | # 集成QQ 24 | pod 'UMengUShare/Social/QQ' 25 | end 26 | -------------------------------------------------------------------------------- /Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - AFNetworking (3.1.0): 3 | - AFNetworking/NSURLSession (= 3.1.0) 4 | - AFNetworking/Reachability (= 3.1.0) 5 | - AFNetworking/Security (= 3.1.0) 6 | - AFNetworking/Serialization (= 3.1.0) 7 | - AFNetworking/UIKit (= 3.1.0) 8 | - AFNetworking/NSURLSession (3.1.0): 9 | - AFNetworking/Reachability 10 | - AFNetworking/Security 11 | - AFNetworking/Serialization 12 | - AFNetworking/Reachability (3.1.0) 13 | - AFNetworking/Security (3.1.0) 14 | - AFNetworking/Serialization (3.1.0) 15 | - AFNetworking/UIKit (3.1.0): 16 | - AFNetworking/NSURLSession 17 | - LFLiveKit (2.6) 18 | - Masonry (1.0.2) 19 | - MJExtension (3.0.13) 20 | - MJRefresh (3.1.15.1) 21 | - SDWebImage (4.0.0): 22 | - SDWebImage/Core (= 4.0.0) 23 | - SDWebImage/Core (4.0.0) 24 | - Socket.IO-Client-Swift (8.3.3) 25 | - UMengUShare/Core (6.4.8): 26 | - UMengUShare/Network 27 | - UMengUShare/Network (6.4.8) 28 | - UMengUShare/Social/QQ (6.4.8): 29 | - UMengUShare/Core 30 | - UMengUShare/Social/ReducedQQ 31 | - UMengUShare/Social/ReducedQQ (6.4.8): 32 | - UMengUShare/Core 33 | - UMengUShare/Social/ReducedSina (6.4.8): 34 | - UMengUShare/Core 35 | - UMengUShare/Social/ReducedWeChat (6.4.8): 36 | - UMengUShare/Core 37 | - UMengUShare/Social/Sina (6.4.8): 38 | - UMengUShare/Core 39 | - UMengUShare/Social/ReducedSina 40 | - UMengUShare/Social/WeChat (6.4.8): 41 | - UMengUShare/Core 42 | - UMengUShare/Social/ReducedWeChat 43 | - UMengUShare/UI (6.4.8): 44 | - UMengUShare/Core 45 | - YYKit (1.0.9): 46 | - YYKit/no-arc (= 1.0.9) 47 | - YYKit/no-arc (1.0.9) 48 | 49 | DEPENDENCIES: 50 | - AFNetworking (~> 3.1.0) 51 | - LFLiveKit 52 | - Masonry (~> 1.0.2) 53 | - MJExtension 54 | - MJRefresh 55 | - SDWebImage (~> 4.0.0) 56 | - Socket.IO-Client-Swift (~> 8.3.3) 57 | - UMengUShare/Social/QQ 58 | - UMengUShare/Social/Sina 59 | - UMengUShare/Social/WeChat 60 | - UMengUShare/UI 61 | - YYKit (~> 1.0.9) 62 | 63 | SPEC CHECKSUMS: 64 | AFNetworking: 5e0e199f73d8626b11e79750991f5d173d1f8b67 65 | LFLiveKit: 2219563721f8aa0f188effc3395a06e2d53b23f2 66 | Masonry: 7c429b56da9d4ee0bbb3ed77a5ea710d6a5df39e 67 | MJExtension: 5932755f451458eefa24239358817f8d291240c7 68 | MJRefresh: 5f8552bc25ca8751c010f621c1098dbdaacbccd6 69 | SDWebImage: 76a6348bdc74eb5a55dd08a091ef298e56b55e41 70 | Socket.IO-Client-Swift: a2faffdbde89c63aebc5d631041530c1068b02b8 71 | UMengUShare: 7a0ab762ccd445ccfcf11bde8e7f81b29b9f5e1c 72 | YYKit: 7cda43304a8dc3696c449041e2cb3107b4e236e7 73 | 74 | PODFILE CHECKSUM: 102f3cac95735b22be6917a02d74f66eb3c9c5d1 75 | 76 | COCOAPODS: 1.3.1 77 | -------------------------------------------------------------------------------- /Test-inke.xcodeproj/xcuserdata/tangsicheng.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Test-inke.xcscheme 8 | 9 | orderHint 10 | 9 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/AppIcon.appiconset/AppIcon29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/AppIcon.appiconset/AppIcon29x29@2x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/AppIcon.appiconset/AppIcon29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/AppIcon.appiconset/AppIcon29x29@3x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/AppIcon.appiconset/AppIcon40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/AppIcon.appiconset/AppIcon40x40@2x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/AppIcon.appiconset/AppIcon40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/AppIcon.appiconset/AppIcon40x40@3x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/AppIcon.appiconset/AppIcon60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/AppIcon.appiconset/AppIcon60x60@2x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/AppIcon.appiconset/AppIcon60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/AppIcon.appiconset/AppIcon60x60@3x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "size" : "29x29", 15 | "idiom" : "iphone", 16 | "filename" : "AppIcon29x29@2x.png", 17 | "scale" : "2x" 18 | }, 19 | { 20 | "size" : "29x29", 21 | "idiom" : "iphone", 22 | "filename" : "AppIcon29x29@3x.png", 23 | "scale" : "3x" 24 | }, 25 | { 26 | "size" : "40x40", 27 | "idiom" : "iphone", 28 | "filename" : "AppIcon40x40@2x.png", 29 | "scale" : "2x" 30 | }, 31 | { 32 | "size" : "40x40", 33 | "idiom" : "iphone", 34 | "filename" : "AppIcon40x40@3x.png", 35 | "scale" : "3x" 36 | }, 37 | { 38 | "size" : "60x60", 39 | "idiom" : "iphone", 40 | "filename" : "AppIcon60x60@2x.png", 41 | "scale" : "2x" 42 | }, 43 | { 44 | "size" : "60x60", 45 | "idiom" : "iphone", 46 | "filename" : "AppIcon60x60@3x.png", 47 | "scale" : "3x" 48 | }, 49 | { 50 | "idiom" : "ios-marketing", 51 | "size" : "1024x1024", 52 | "scale" : "1x" 53 | } 54 | ], 55 | "info" : { 56 | "version" : 1, 57 | "author" : "xcode" 58 | } 59 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Home/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Home/default_room.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "default_room.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Home/default_room.imageset/default_room.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Home/default_room.imageset/default_room.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Home/home_page_portrait_mask.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "home_page_portrait_mask.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Home/home_page_portrait_mask.imageset/home_page_portrait_mask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Home/home_page_portrait_mask.imageset/home_page_portrait_mask.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Home/home_rec_bottom_shadow.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "home_rec_bottom_shadow.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Home/home_rec_bottom_shadow.imageset/home_rec_bottom_shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Home/home_rec_bottom_shadow.imageset/home_rec_bottom_shadow.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Home/live_tag_live.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "live_tag_live@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "live_tag_live@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Home/live_tag_live.imageset/live_tag_live@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Home/live_tag_live.imageset/live_tag_live@2x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Home/live_tag_live.imageset/live_tag_live@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Home/live_tag_live.imageset/live_tag_live@3x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/LaunchImage.launchimage/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "orientation" : "portrait", 5 | "idiom" : "iphone", 6 | "extent" : "full-screen", 7 | "minimum-system-version" : "11.0", 8 | "subtype" : "2436h", 9 | "scale" : "3x" 10 | }, 11 | { 12 | "orientation" : "landscape", 13 | "idiom" : "iphone", 14 | "extent" : "full-screen", 15 | "minimum-system-version" : "11.0", 16 | "subtype" : "2436h", 17 | "scale" : "3x" 18 | }, 19 | { 20 | "extent" : "full-screen", 21 | "idiom" : "iphone", 22 | "subtype" : "736h", 23 | "filename" : "LaunchImage-800-Portrait-736h@3x.png", 24 | "minimum-system-version" : "8.0", 25 | "orientation" : "portrait", 26 | "scale" : "3x" 27 | }, 28 | { 29 | "extent" : "full-screen", 30 | "idiom" : "iphone", 31 | "subtype" : "736h", 32 | "filename" : "LaunchImage-800-Landscape-736h@3x.png", 33 | "minimum-system-version" : "8.0", 34 | "orientation" : "landscape", 35 | "scale" : "3x" 36 | }, 37 | { 38 | "extent" : "full-screen", 39 | "idiom" : "iphone", 40 | "subtype" : "667h", 41 | "filename" : "LaunchImage-800-667h@2x.png", 42 | "minimum-system-version" : "8.0", 43 | "orientation" : "portrait", 44 | "scale" : "2x" 45 | }, 46 | { 47 | "orientation" : "portrait", 48 | "idiom" : "iphone", 49 | "filename" : "LaunchImage-700@2x.png", 50 | "extent" : "full-screen", 51 | "minimum-system-version" : "7.0", 52 | "scale" : "2x" 53 | }, 54 | { 55 | "extent" : "full-screen", 56 | "idiom" : "iphone", 57 | "subtype" : "retina4", 58 | "filename" : "LaunchImage-700-568h@2x.png", 59 | "minimum-system-version" : "7.0", 60 | "orientation" : "portrait", 61 | "scale" : "2x" 62 | } 63 | ], 64 | "info" : { 65 | "version" : 1, 66 | "author" : "xcode" 67 | } 68 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/LaunchImage.launchimage/LaunchImage-700-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/LaunchImage.launchimage/LaunchImage-700-568h@2x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/LaunchImage.launchimage/LaunchImage-700@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/LaunchImage.launchimage/LaunchImage-700@2x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/LaunchImage.launchimage/LaunchImage-800-667h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/LaunchImage.launchimage/LaunchImage-800-667h@2x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/LaunchImage.launchimage/LaunchImage-800-Landscape-736h@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/LaunchImage.launchimage/LaunchImage-800-Landscape-736h@3x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/LaunchImage.launchimage/LaunchImage-800-Portrait-736h@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/LaunchImage.launchimage/LaunchImage-800-Portrait-736h@3x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/LaunchLive/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/LaunchLive/bg_zbfx.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" : "bg_zbfx@3x.png", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/LaunchLive/bg_zbfx.imageset/bg_zbfx@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/LaunchLive/bg_zbfx.imageset/bg_zbfx@3x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/LaunchLive/launch_close.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "launch_close@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "launch_close@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/LaunchLive/launch_close.imageset/launch_close@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/LaunchLive/launch_close.imageset/launch_close@2x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/LaunchLive/launch_close.imageset/launch_close@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/LaunchLive/launch_close.imageset/launch_close@3x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/LaunchLive/launch_map_off.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "launch_map_off@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "launch_map_off@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/LaunchLive/launch_map_off.imageset/launch_map_off@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/LaunchLive/launch_map_off.imageset/launch_map_off@2x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/LaunchLive/launch_map_off.imageset/launch_map_off@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/LaunchLive/launch_map_off.imageset/launch_map_off@3x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/LaunchLive/launch_map_on.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "launch_map_on@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "launch_map_on@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/LaunchLive/launch_map_on.imageset/launch_map_on@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/LaunchLive/launch_map_on.imageset/launch_map_on@2x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/LaunchLive/launch_map_on.imageset/launch_map_on@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/LaunchLive/launch_map_on.imageset/launch_map_on@3x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/LaunchLive/room_button.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "room_button@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "room_button@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/LaunchLive/room_button.imageset/room_button@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/LaunchLive/room_button.imageset/room_button@2x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/LaunchLive/room_button.imageset/room_button@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/LaunchLive/room_button.imageset/room_button@3x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Navbar/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Navbar/global_back.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "global_back@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "global_back@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Navbar/global_back.imageset/global_back@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Navbar/global_back.imageset/global_back@2x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Navbar/global_back.imageset/global_back@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Navbar/global_back.imageset/global_back@3x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Navbar/global_search.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "global_search@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "global_search@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Navbar/global_search.imageset/global_search@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Navbar/global_search.imageset/global_search@2x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Navbar/global_search.imageset/global_search@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Navbar/global_search.imageset/global_search@3x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Navbar/global_tittle_bg.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "global_tittle_bg@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "global_tittle_bg@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Navbar/global_tittle_bg.imageset/global_tittle_bg@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Navbar/global_tittle_bg.imageset/global_tittle_bg@2x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Navbar/global_tittle_bg.imageset/global_tittle_bg@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Navbar/global_tittle_bg.imageset/global_tittle_bg@3x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Navbar/title_button_more.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "title_button_more@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "title_button_more@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Navbar/title_button_more.imageset/title_button_more@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Navbar/title_button_more.imageset/title_button_more@2x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Navbar/title_button_more.imageset/title_button_more@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Navbar/title_button_more.imageset/title_button_more@3x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Player/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Player/heart_1.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "heart_1.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Player/heart_1.imageset/heart_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Player/heart_1.imageset/heart_1.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Player/heart_2.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "heart_2.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Player/heart_2.imageset/heart_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Player/heart_2.imageset/heart_2.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Player/heart_3.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "heart_3.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Player/heart_3.imageset/heart_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Player/heart_3.imageset/heart_3.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Player/heart_4.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "heart_4.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Player/heart_4.imageset/heart_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Player/heart_4.imageset/heart_4.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Player/heart_5.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "heart_5.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Player/heart_5.imageset/heart_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Player/heart_5.imageset/heart_5.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Player/mg_room_btn_fenxiang_h.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "mg_room_btn_fenxiang_h@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "mg_room_btn_fenxiang_h@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Player/mg_room_btn_fenxiang_h.imageset/mg_room_btn_fenxiang_h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Player/mg_room_btn_fenxiang_h.imageset/mg_room_btn_fenxiang_h@2x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Player/mg_room_btn_fenxiang_h.imageset/mg_room_btn_fenxiang_h@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Player/mg_room_btn_fenxiang_h.imageset/mg_room_btn_fenxiang_h@3x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Player/mg_room_btn_guan_h.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "mg_room_btn_guan_h@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "mg_room_btn_guan_h@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Player/mg_room_btn_guan_h.imageset/mg_room_btn_guan_h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Player/mg_room_btn_guan_h.imageset/mg_room_btn_guan_h@2x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Player/mg_room_btn_guan_h.imageset/mg_room_btn_guan_h@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Player/mg_room_btn_guan_h.imageset/mg_room_btn_guan_h@3x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Player/mg_room_btn_liao_h.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "mg_room_btn_liao_h@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "mg_room_btn_liao_h@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Player/mg_room_btn_liao_h.imageset/mg_room_btn_liao_h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Player/mg_room_btn_liao_h.imageset/mg_room_btn_liao_h@2x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Player/mg_room_btn_liao_h.imageset/mg_room_btn_liao_h@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Player/mg_room_btn_liao_h.imageset/mg_room_btn_liao_h@3x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Player/mg_room_btn_liwu_h.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "mg_room_btn_liwu_h@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "mg_room_btn_liwu_h@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Player/mg_room_btn_liwu_h.imageset/mg_room_btn_liwu_h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Player/mg_room_btn_liwu_h.imageset/mg_room_btn_liwu_h@2x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Player/mg_room_btn_liwu_h.imageset/mg_room_btn_liwu_h@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Player/mg_room_btn_liwu_h.imageset/mg_room_btn_liwu_h@3x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Player/mg_room_btn_xinxi_h.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "mg_room_btn_xinxi_h@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "mg_room_btn_xinxi_h@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Player/mg_room_btn_xinxi_h.imageset/mg_room_btn_xinxi_h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Player/mg_room_btn_xinxi_h.imageset/mg_room_btn_xinxi_h@2x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Player/mg_room_btn_xinxi_h.imageset/mg_room_btn_xinxi_h@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Player/mg_room_btn_xinxi_h.imageset/mg_room_btn_xinxi_h@3x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Player/mg_room_touxiang.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "mg_room_touxiang@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "mg_room_touxiang@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Player/mg_room_touxiang.imageset/mg_room_touxiang@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Player/mg_room_touxiang.imageset/mg_room_touxiang@2x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Player/mg_room_touxiang.imageset/mg_room_touxiang@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Player/mg_room_touxiang.imageset/mg_room_touxiang@3x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Player/mg_room_yinpiao_bottom.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "mg_room_yinpiao_bottom@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "mg_room_yinpiao_bottom@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Player/mg_room_yinpiao_bottom.imageset/mg_room_yinpiao_bottom@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Player/mg_room_yinpiao_bottom.imageset/mg_room_yinpiao_bottom@2x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Player/mg_room_yinpiao_bottom.imageset/mg_room_yinpiao_bottom@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Player/mg_room_yinpiao_bottom.imageset/mg_room_yinpiao_bottom@3x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Player/room_jianbian_all.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "room_jianbian_all.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Player/room_jianbian_all.imageset/room_jianbian_all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Player/room_jianbian_all.imageset/room_jianbian_all.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Tabbar/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Tabbar/global_tab_bg.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "global_tab_bg@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "global_tab_bg@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Tabbar/global_tab_bg.imageset/global_tab_bg@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Tabbar/global_tab_bg.imageset/global_tab_bg@2x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Tabbar/global_tab_bg.imageset/global_tab_bg@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Tabbar/global_tab_bg.imageset/global_tab_bg@3x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Tabbar/tab_launch.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "tab_launch@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "tab_launch@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Tabbar/tab_launch.imageset/tab_launch@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Tabbar/tab_launch.imageset/tab_launch@2x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Tabbar/tab_launch.imageset/tab_launch@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Tabbar/tab_launch.imageset/tab_launch@3x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Tabbar/tab_live.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "tab_live@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "tab_live@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Tabbar/tab_live.imageset/tab_live@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Tabbar/tab_live.imageset/tab_live@2x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Tabbar/tab_live.imageset/tab_live@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Tabbar/tab_live.imageset/tab_live@3x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Tabbar/tab_live_p.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "tab_live_p@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "tab_live_p@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Tabbar/tab_live_p.imageset/tab_live_p@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Tabbar/tab_live_p.imageset/tab_live_p@2x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Tabbar/tab_live_p.imageset/tab_live_p@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Tabbar/tab_live_p.imageset/tab_live_p@3x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Tabbar/tab_me.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "tab_me@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "tab_me@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Tabbar/tab_me.imageset/tab_me@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Tabbar/tab_me.imageset/tab_me@2x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Tabbar/tab_me.imageset/tab_me@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Tabbar/tab_me.imageset/tab_me@3x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Tabbar/tab_me_p.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "tab_me_p@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "tab_me_p@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Tabbar/tab_me_p.imageset/tab_me_p@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Tabbar/tab_me_p.imageset/tab_me_p@2x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/Tabbar/tab_me_p.imageset/tab_me_p@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/Tabbar/tab_me_p.imageset/tab_me_p@3x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/gift/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/gift/bangbangtang.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "MTUwMjQ0MjY4MTA0MyM0MTAjanBn.jpg", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/gift/bangbangtang.imageset/MTUwMjQ0MjY4MTA0MyM0MTAjanBn.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/gift/bangbangtang.imageset/MTUwMjQ0MjY4MTA0MyM0MTAjanBn.jpg -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/gift/first_charge_icon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "first_charge_icon.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/gift/first_charge_icon.imageset/first_charge_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/gift/first_charge_icon.imageset/first_charge_icon.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/gift/first_charge_reward_diamond.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "first_charge_reward_diamond.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/gift/first_charge_reward_diamond.imageset/first_charge_reward_diamond.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/gift/first_charge_reward_diamond.imageset/first_charge_reward_diamond.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/gift/first_charge_reward_star.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "first_charge_reward_star.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/gift/first_charge_reward_star.imageset/first_charge_reward_star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/gift/first_charge_reward_star.imageset/first_charge_reward_star.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/gift/gift_fireworks_1.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "gift_fireworks_1.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/gift/gift_fireworks_1.imageset/gift_fireworks_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/gift/gift_fireworks_1.imageset/gift_fireworks_1.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/gift/gift_fireworks_2.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "gift_fireworks_2.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/gift/gift_fireworks_2.imageset/gift_fireworks_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/gift/gift_fireworks_2.imageset/gift_fireworks_2.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/gift/gift_type_icon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "gift_type_icon.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/gift/gift_type_icon.imageset/gift_type_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/gift/gift_type_icon.imageset/gift_type_icon.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/gift/pay_arrow.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "pay_arrow.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/gift/pay_arrow.imageset/pay_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/gift/pay_arrow.imageset/pay_arrow.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/liveImage/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/liveImage/camra_beauty.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "camra_beauty@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "camra_beauty@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/liveImage/camra_beauty.imageset/camra_beauty@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/liveImage/camra_beauty.imageset/camra_beauty@2x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/liveImage/camra_beauty.imageset/camra_beauty@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/liveImage/camra_beauty.imageset/camra_beauty@3x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/liveImage/camra_beauty_close.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "camra_beauty_close@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "camra_beauty_close@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/liveImage/camra_beauty_close.imageset/camra_beauty_close@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/liveImage/camra_beauty_close.imageset/camra_beauty_close@2x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/liveImage/camra_beauty_close.imageset/camra_beauty_close@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/liveImage/camra_beauty_close.imageset/camra_beauty_close@3x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/liveImage/camra_preview.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "camra_preview@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "camra_preview@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/liveImage/camra_preview.imageset/camra_preview@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/liveImage/camra_preview.imageset/camra_preview@2x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/liveImage/camra_preview.imageset/camra_preview@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/liveImage/camra_preview.imageset/camra_preview@3x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/liveImage/close_preview.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "close_preview@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "close_preview@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/liveImage/close_preview.imageset/close_preview@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/liveImage/close_preview.imageset/close_preview@2x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/liveImage/close_preview.imageset/close_preview@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/liveImage/close_preview.imageset/close_preview@3x.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/liveImage/ios-29x29.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "ios-29x29.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/liveImage/ios-29x29.imageset/ios-29x29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/liveImage/ios-29x29.imageset/ios-29x29.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/login/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/login/bg_login2.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "bg_login2.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/login/bg_login2.imageset/bg_login2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/login/bg_login2.imageset/bg_login2.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/login/login_icon_phone.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "login_icon_phone.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/login/login_icon_phone.imageset/login_icon_phone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/login/login_icon_phone.imageset/login_icon_phone.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/login/login_icon_qq.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "login_icon_qq.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/login/login_icon_qq.imageset/login_icon_qq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/login/login_icon_qq.imageset/login_icon_qq.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/login/login_icon_weibo.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "login_icon_weibo.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/login/login_icon_weibo.imageset/login_icon_weibo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/login/login_icon_weibo.imageset/login_icon_weibo.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/login/login_icon_wx.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "login_icon_wx.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/login/login_icon_wx.imageset/login_icon_wx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/login/login_icon_wx.imageset/login_icon_wx.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/login/login_logo.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "login_logo.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/login/login_logo.imageset/login_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/login/login_logo.imageset/login_logo.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0011.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "refresh_fly_0011.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0011.imageset/refresh_fly_0011.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/refresh/refresh_fly_0011.imageset/refresh_fly_0011.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0012.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "refresh_fly_0012.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0012.imageset/refresh_fly_0012.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/refresh/refresh_fly_0012.imageset/refresh_fly_0012.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0013.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "refresh_fly_0013.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0013.imageset/refresh_fly_0013.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/refresh/refresh_fly_0013.imageset/refresh_fly_0013.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0014.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "refresh_fly_0014.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0014.imageset/refresh_fly_0014.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/refresh/refresh_fly_0014.imageset/refresh_fly_0014.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0015.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "refresh_fly_0015.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0015.imageset/refresh_fly_0015.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/refresh/refresh_fly_0015.imageset/refresh_fly_0015.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0016.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "refresh_fly_0016.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0016.imageset/refresh_fly_0016.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/refresh/refresh_fly_0016.imageset/refresh_fly_0016.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0017.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "refresh_fly_0017.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0017.imageset/refresh_fly_0017.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/refresh/refresh_fly_0017.imageset/refresh_fly_0017.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0018.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "refresh_fly_0018.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0018.imageset/refresh_fly_0018.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/refresh/refresh_fly_0018.imageset/refresh_fly_0018.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0019.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "refresh_fly_0019.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0019.imageset/refresh_fly_0019.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/refresh/refresh_fly_0019.imageset/refresh_fly_0019.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0020.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "refresh_fly_0020.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0020.imageset/refresh_fly_0020.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/refresh/refresh_fly_0020.imageset/refresh_fly_0020.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0021.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "refresh_fly_0021.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0021.imageset/refresh_fly_0021.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/refresh/refresh_fly_0021.imageset/refresh_fly_0021.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0022.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "refresh_fly_0022.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0022.imageset/refresh_fly_0022.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/refresh/refresh_fly_0022.imageset/refresh_fly_0022.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0023.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "refresh_fly_0023.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0023.imageset/refresh_fly_0023.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/refresh/refresh_fly_0023.imageset/refresh_fly_0023.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0024.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "refresh_fly_0024.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0024.imageset/refresh_fly_0024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/refresh/refresh_fly_0024.imageset/refresh_fly_0024.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0025.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "refresh_fly_0025.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0025.imageset/refresh_fly_0025.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/refresh/refresh_fly_0025.imageset/refresh_fly_0025.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0026.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "refresh_fly_0026.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0026.imageset/refresh_fly_0026.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/refresh/refresh_fly_0026.imageset/refresh_fly_0026.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0027.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "refresh_fly_0027.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0027.imageset/refresh_fly_0027.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/refresh/refresh_fly_0027.imageset/refresh_fly_0027.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0028.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "refresh_fly_0028.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0028.imageset/refresh_fly_0028.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/refresh/refresh_fly_0028.imageset/refresh_fly_0028.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0029.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "refresh_fly_0029.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/refresh/refresh_fly_0029.imageset/refresh_fly_0029.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/Assets.xcassets/refresh/refresh_fly_0029.imageset/refresh_fly_0029.png -------------------------------------------------------------------------------- /Test-inke/Assets.xcassets/test/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Test-inke/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /Test-inke/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /Test-inke/loginVideo.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/Test-inke/loginVideo.mp4 -------------------------------------------------------------------------------- /Test-inke/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Test-inke 4 | // 5 | // Created by 唐嗣成 on 2017/10/21. 6 | // Copyright © 2017年 shawnTang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | 13 | /* 14 | ios应用程序的入口function https://www.jianshu.com/p/f4b80291ba0f 可以看看ios的堆栈理解 15 | 了解程序的入口http://blog.csdn.net/lvxiangan/article/details/19076911 main方法 16 | oc基本类型:https://www.jianshu.com/p/987fb6fb49dc 17 | */ 18 | int main(int argc, char * argv[]) { 19 | 20 | /* 21 | 没有ARC之前的写法如下: 22 | 23 | NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 24 | 25 | int retVal = UIApplicationMain(argc, argv, nil, nil); 26 | 27 | [pool release]; 28 | return retVal; 29 | 30 | 超过autorelease pool作用域范围时,obj会自动调用release方法 31 | 在代码中基本不需要使用@autoreleasepool 因为在app的入口文件中就已经使用过它了。 32 | */ 33 | 34 | @autoreleasepool { 35 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /gif/live-page.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/gif/live-page.gif -------------------------------------------------------------------------------- /gif/live-page1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/gif/live-page1.gif -------------------------------------------------------------------------------- /gif/login-page.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/gif/login-page.gif -------------------------------------------------------------------------------- /gif/main-page.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shawn-tangsc/inke-demo/95bef1e8dfe0a411a25435ff9e0292263e5d3260/gif/main-page.gif --------------------------------------------------------------------------------