Commit 0f7409ada72bf30b0457cbc942962fd884457a50
1 parent
98341c78
删除多余文件
Showing
35 changed files
with
28 additions
and
3124 deletions
LiveVideoCloud.xcodeproj/project.pbxproj
| @@ -97,7 +97,6 @@ | @@ -97,7 +97,6 @@ | ||
| 97 | 8178D46E1F0225E500AA78A4 /* LVCTelevisionCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 8178D46D1F0225E500AA78A4 /* LVCTelevisionCell.m */; }; | 97 | 8178D46E1F0225E500AA78A4 /* LVCTelevisionCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 8178D46D1F0225E500AA78A4 /* LVCTelevisionCell.m */; }; |
| 98 | 8178D4711F0239AD00AA78A4 /* LVCPlayerLoadingView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8178D4701F0239AD00AA78A4 /* LVCPlayerLoadingView.m */; }; | 98 | 8178D4711F0239AD00AA78A4 /* LVCPlayerLoadingView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8178D4701F0239AD00AA78A4 /* LVCPlayerLoadingView.m */; }; |
| 99 | 81A483081E88B6140097A80A /* UIView+ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 81A483071E88B6140097A80A /* UIView+ViewController.m */; }; | 99 | 81A483081E88B6140097A80A /* UIView+ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 81A483071E88B6140097A80A /* UIView+ViewController.m */; }; |
| 100 | - 81F1C8381E8BBDDA0085C2B8 /* MHPagingScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = 81F1C8371E8BBDDA0085C2B8 /* MHPagingScrollView.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; | ||
| 101 | 81F1C8401E8BC5CC0085C2B8 /* NSArray+Safety.m in Sources */ = {isa = PBXBuildFile; fileRef = 81F1C83F1E8BC5CC0085C2B8 /* NSArray+Safety.m */; }; | 100 | 81F1C8401E8BC5CC0085C2B8 /* NSArray+Safety.m in Sources */ = {isa = PBXBuildFile; fileRef = 81F1C83F1E8BC5CC0085C2B8 /* NSArray+Safety.m */; }; |
| 102 | 81FB5B3C1E7A6FFC00F98E1D /* SevenSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = 81FB5B3B1E7A6FFC00F98E1D /* SevenSwitch.m */; }; | 101 | 81FB5B3C1E7A6FFC00F98E1D /* SevenSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = 81FB5B3B1E7A6FFC00F98E1D /* SevenSwitch.m */; }; |
| 103 | D2029B861E6EAAA50027CD92 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = D2029B851E6EAAA50027CD92 /* main.m */; }; | 102 | D2029B861E6EAAA50027CD92 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = D2029B851E6EAAA50027CD92 /* main.m */; }; |
| @@ -186,13 +185,9 @@ | @@ -186,13 +185,9 @@ | ||
| 186 | D209AD6B1EC580F100D82E3B /* LVCWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D209AD6A1EC580F100D82E3B /* LVCWebViewController.m */; }; | 185 | D209AD6B1EC580F100D82E3B /* LVCWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D209AD6A1EC580F100D82E3B /* LVCWebViewController.m */; }; |
| 187 | D209AD6E1EC583B700D82E3B /* MineMessageController.m in Sources */ = {isa = PBXBuildFile; fileRef = D209AD6D1EC583B700D82E3B /* MineMessageController.m */; }; | 186 | D209AD6E1EC583B700D82E3B /* MineMessageController.m in Sources */ = {isa = PBXBuildFile; fileRef = D209AD6D1EC583B700D82E3B /* MineMessageController.m */; }; |
| 188 | D209AD711EC583D100D82E3B /* MineAccountController.m in Sources */ = {isa = PBXBuildFile; fileRef = D209AD701EC583D100D82E3B /* MineAccountController.m */; }; | 187 | D209AD711EC583D100D82E3B /* MineAccountController.m in Sources */ = {isa = PBXBuildFile; fileRef = D209AD701EC583D100D82E3B /* MineAccountController.m */; }; |
| 189 | - D20C82BE1EEEA89700BB609F /* LVCHomePageListModel.m in Sources */ = {isa = PBXBuildFile; fileRef = D20C82BD1EEEA89700BB609F /* LVCHomePageListModel.m */; }; | ||
| 190 | - D214CB4F1EF7BD890014EEBA /* V8HorizontalPickerView.m in Sources */ = {isa = PBXBuildFile; fileRef = D214CB4D1EF7BD890014EEBA /* V8HorizontalPickerView.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; | ||
| 191 | - D214CB521EF7CB310014EEBA /* LVCChannelPagingView.m in Sources */ = {isa = PBXBuildFile; fileRef = D214CB511EF7CB310014EEBA /* LVCChannelPagingView.m */; }; | ||
| 192 | D217A24A1E7B76C7003B44CB /* PresentView.m in Sources */ = {isa = PBXBuildFile; fileRef = D217A2471E7B76C7003B44CB /* PresentView.m */; }; | 188 | D217A24A1E7B76C7003B44CB /* PresentView.m in Sources */ = {isa = PBXBuildFile; fileRef = D217A2471E7B76C7003B44CB /* PresentView.m */; }; |
| 193 | D217A24B1E7B76C7003B44CB /* PresentViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D217A2491E7B76C7003B44CB /* PresentViewCell.m */; }; | 189 | D217A24B1E7B76C7003B44CB /* PresentViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D217A2491E7B76C7003B44CB /* PresentViewCell.m */; }; |
| 194 | D217A24E1E7B77C7003B44CB /* ComboCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D217A24D1E7B77C7003B44CB /* ComboCell.m */; }; | 190 | D217A24E1E7B77C7003B44CB /* ComboCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D217A24D1E7B77C7003B44CB /* ComboCell.m */; }; |
| 195 | - D219E86B1EFD04A700650F38 /* LVCBigHorizontalCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D219E86A1EFD04A700650F38 /* LVCBigHorizontalCollectionViewCell.m */; }; | ||
| 196 | D224B1971E826ED800CC61D0 /* ChatBarrageAnimAction.m in Sources */ = {isa = PBXBuildFile; fileRef = D224B1961E826ED800CC61D0 /* ChatBarrageAnimAction.m */; }; | 191 | D224B1971E826ED800CC61D0 /* ChatBarrageAnimAction.m in Sources */ = {isa = PBXBuildFile; fileRef = D224B1961E826ED800CC61D0 /* ChatBarrageAnimAction.m */; }; |
| 197 | D22830F11E778C0F00627701 /* LiveBaseView.m in Sources */ = {isa = PBXBuildFile; fileRef = D22830F01E778C0F00627701 /* LiveBaseView.m */; }; | 192 | D22830F11E778C0F00627701 /* LiveBaseView.m in Sources */ = {isa = PBXBuildFile; fileRef = D22830F01E778C0F00627701 /* LiveBaseView.m */; }; |
| 198 | D22830FC1E77C2D900627701 /* BottomToolView.m in Sources */ = {isa = PBXBuildFile; fileRef = D22830FB1E77C2D900627701 /* BottomToolView.m */; }; | 193 | D22830FC1E77C2D900627701 /* BottomToolView.m in Sources */ = {isa = PBXBuildFile; fileRef = D22830FB1E77C2D900627701 /* BottomToolView.m */; }; |
| @@ -202,20 +197,11 @@ | @@ -202,20 +197,11 @@ | ||
| 202 | D23696841E7FC6A900E4BF71 /* chatListCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D23696831E7FC6A900E4BF71 /* chatListCell.m */; }; | 197 | D23696841E7FC6A900E4BF71 /* chatListCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D23696831E7FC6A900E4BF71 /* chatListCell.m */; }; |
| 203 | D23696921E7FC83800E4BF71 /* chatMsgModel.m in Sources */ = {isa = PBXBuildFile; fileRef = D23696911E7FC83800E4BF71 /* chatMsgModel.m */; }; | 198 | D23696921E7FC83800E4BF71 /* chatMsgModel.m in Sources */ = {isa = PBXBuildFile; fileRef = D23696911E7FC83800E4BF71 /* chatMsgModel.m */; }; |
| 204 | D2393D011F020D5700D3EE17 /* FeedbackViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D2393D001F020D5700D3EE17 /* FeedbackViewController.m */; }; | 199 | D2393D011F020D5700D3EE17 /* FeedbackViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D2393D001F020D5700D3EE17 /* FeedbackViewController.m */; }; |
| 205 | - D23BBDB81EF8D15D002FE0B8 /* LVCMainHeaderCollectionReusableView.m in Sources */ = {isa = PBXBuildFile; fileRef = D23BBDB71EF8D15D002FE0B8 /* LVCMainHeaderCollectionReusableView.m */; }; | ||
| 206 | - D23BBDBB1EF8E8B2002FE0B8 /* LVCBannerAndMarqueeModel.m in Sources */ = {isa = PBXBuildFile; fileRef = D23BBDBA1EF8E8B2002FE0B8 /* LVCBannerAndMarqueeModel.m */; }; | ||
| 207 | - D23BBDBE1EF8ED4A002FE0B8 /* LVCChannelDetailModel.m in Sources */ = {isa = PBXBuildFile; fileRef = D23BBDBD1EF8ED4A002FE0B8 /* LVCChannelDetailModel.m */; }; | ||
| 208 | - D23BBDC11EF8F513002FE0B8 /* LVCBqWqXgModel.m in Sources */ = {isa = PBXBuildFile; fileRef = D23BBDC01EF8F513002FE0B8 /* LVCBqWqXgModel.m */; }; | ||
| 209 | - D23BBDC41EF8FB99002FE0B8 /* LVCMainHorizontalCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D23BBDC31EF8FB99002FE0B8 /* LVCMainHorizontalCollectionViewCell.m */; }; | ||
| 210 | - D23BBDC71EF8FBD1002FE0B8 /* LVCSectionHeaderCollectionReusableView.m in Sources */ = {isa = PBXBuildFile; fileRef = D23BBDC61EF8FBD1002FE0B8 /* LVCSectionHeaderCollectionReusableView.m */; }; | ||
| 211 | D23DC1551ECC41C100103B0E /* LVCVerifyViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D23DC1541ECC41C100103B0E /* LVCVerifyViewController.m */; }; | 200 | D23DC1551ECC41C100103B0E /* LVCVerifyViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D23DC1541ECC41C100103B0E /* LVCVerifyViewController.m */; }; |
| 212 | D24571581E8393EB00AA85D6 /* UIImageView+ZXExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = D24571571E8393EB00AA85D6 /* UIImageView+ZXExtension.m */; }; | 201 | D24571581E8393EB00AA85D6 /* UIImageView+ZXExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = D24571571E8393EB00AA85D6 /* UIImageView+ZXExtension.m */; }; |
| 213 | D245715C1E83A62B00AA85D6 /* BounceView.m in Sources */ = {isa = PBXBuildFile; fileRef = D245715B1E83A62B00AA85D6 /* BounceView.m */; }; | 202 | D245715C1E83A62B00AA85D6 /* BounceView.m in Sources */ = {isa = PBXBuildFile; fileRef = D245715B1E83A62B00AA85D6 /* BounceView.m */; }; |
| 214 | D245715F1E83B09900AA85D6 /* userInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = D245715E1E83B09900AA85D6 /* userInfoModel.m */; }; | 203 | D245715F1E83B09900AA85D6 /* userInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = D245715E1E83B09900AA85D6 /* userInfoModel.m */; }; |
| 215 | D24571631E83C40B00AA85D6 /* PrivateView.m in Sources */ = {isa = PBXBuildFile; fileRef = D24571621E83C40B00AA85D6 /* PrivateView.m */; }; | 204 | D24571631E83C40B00AA85D6 /* PrivateView.m in Sources */ = {isa = PBXBuildFile; fileRef = D24571621E83C40B00AA85D6 /* PrivateView.m */; }; |
| 216 | - D24CFC201EFA092300AA6ADB /* JBBannerView.m in Sources */ = {isa = PBXBuildFile; fileRef = D24CFC1F1EFA092300AA6ADB /* JBBannerView.m */; }; | ||
| 217 | - D24F40921EFB727000833738 /* JBAutoRollTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = D24F40911EFB727000833738 /* JBAutoRollTableView.m */; }; | ||
| 218 | - D24F40951EFB965A00833738 /* JBSearchView.m in Sources */ = {isa = PBXBuildFile; fileRef = D24F40941EFB965A00833738 /* JBSearchView.m */; }; | ||
| 219 | D25530001E7909AC00DF38A5 /* GiftAnimOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = D2552FFF1E7909AC00DF38A5 /* GiftAnimOperation.m */; }; | 205 | D25530001E7909AC00DF38A5 /* GiftAnimOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = D2552FFF1E7909AC00DF38A5 /* GiftAnimOperation.m */; }; |
| 220 | D25530031E79115100DF38A5 /* AnimQueueManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D25530021E79115100DF38A5 /* AnimQueueManager.m */; }; | 206 | D25530031E79115100DF38A5 /* AnimQueueManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D25530021E79115100DF38A5 /* AnimQueueManager.m */; }; |
| 221 | D25530061E7911A800DF38A5 /* GiftAnimationAction.m in Sources */ = {isa = PBXBuildFile; fileRef = D25530051E7911A800DF38A5 /* GiftAnimationAction.m */; }; | 207 | D25530061E7911A800DF38A5 /* GiftAnimationAction.m in Sources */ = {isa = PBXBuildFile; fileRef = D25530051E7911A800DF38A5 /* GiftAnimationAction.m */; }; |
| @@ -254,7 +240,6 @@ | @@ -254,7 +240,6 @@ | ||
| 254 | D2CBC13B1ECC157A00E00279 /* LVCVerifyLiveAuthService.m in Sources */ = {isa = PBXBuildFile; fileRef = D2CBC13A1ECC157A00E00279 /* LVCVerifyLiveAuthService.m */; }; | 240 | D2CBC13B1ECC157A00E00279 /* LVCVerifyLiveAuthService.m in Sources */ = {isa = PBXBuildFile; fileRef = D2CBC13A1ECC157A00E00279 /* LVCVerifyLiveAuthService.m */; }; |
| 255 | D2D7D18D1E8A581000217771 /* timg.jpeg in Resources */ = {isa = PBXBuildFile; fileRef = D2D7D18C1E8A581000217771 /* timg.jpeg */; }; | 241 | D2D7D18D1E8A581000217771 /* timg.jpeg in Resources */ = {isa = PBXBuildFile; fileRef = D2D7D18C1E8A581000217771 /* timg.jpeg */; }; |
| 256 | D2EBC8571F01FF9200F198FB /* LVCCommentModel.m in Sources */ = {isa = PBXBuildFile; fileRef = D2EBC8561F01FF9200F198FB /* LVCCommentModel.m */; }; | 242 | D2EBC8571F01FF9200F198FB /* LVCCommentModel.m in Sources */ = {isa = PBXBuildFile; fileRef = D2EBC8561F01FF9200F198FB /* LVCCommentModel.m */; }; |
| 257 | - D2EBC8641F02105C00F198FB /* LVCHomePageViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D2EBC8631F02105C00F198FB /* LVCHomePageViewController.m */; }; | ||
| 258 | D2EBC8711F02108000F198FB /* LiveListService.m in Sources */ = {isa = PBXBuildFile; fileRef = D2EBC8661F02108000F198FB /* LiveListService.m */; }; | 243 | D2EBC8711F02108000F198FB /* LiveListService.m in Sources */ = {isa = PBXBuildFile; fileRef = D2EBC8661F02108000F198FB /* LiveListService.m */; }; |
| 259 | D2EBC8721F02108000F198FB /* LVCLiveActivityInfoService.m in Sources */ = {isa = PBXBuildFile; fileRef = D2EBC8681F02108000F198FB /* LVCLiveActivityInfoService.m */; }; | 244 | D2EBC8721F02108000F198FB /* LVCLiveActivityInfoService.m in Sources */ = {isa = PBXBuildFile; fileRef = D2EBC8681F02108000F198FB /* LVCLiveActivityInfoService.m */; }; |
| 260 | D2EBC8741F02108000F198FB /* LVCUGCLiveListController.m in Sources */ = {isa = PBXBuildFile; fileRef = D2EBC86C1F02108000F198FB /* LVCUGCLiveListController.m */; }; | 245 | D2EBC8741F02108000F198FB /* LVCUGCLiveListController.m in Sources */ = {isa = PBXBuildFile; fileRef = D2EBC86C1F02108000F198FB /* LVCUGCLiveListController.m */; }; |
| @@ -487,8 +472,6 @@ | @@ -487,8 +472,6 @@ | ||
| 487 | 8178D4701F0239AD00AA78A4 /* LVCPlayerLoadingView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LVCPlayerLoadingView.m; sourceTree = "<group>"; }; | 472 | 8178D4701F0239AD00AA78A4 /* LVCPlayerLoadingView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LVCPlayerLoadingView.m; sourceTree = "<group>"; }; |
| 488 | 81A483061E88B6140097A80A /* UIView+ViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+ViewController.h"; sourceTree = "<group>"; }; | 473 | 81A483061E88B6140097A80A /* UIView+ViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+ViewController.h"; sourceTree = "<group>"; }; |
| 489 | 81A483071E88B6140097A80A /* UIView+ViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+ViewController.m"; sourceTree = "<group>"; }; | 474 | 81A483071E88B6140097A80A /* UIView+ViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+ViewController.m"; sourceTree = "<group>"; }; |
| 490 | - 81F1C8361E8BBDDA0085C2B8 /* MHPagingScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MHPagingScrollView.h; sourceTree = "<group>"; }; | ||
| 491 | - 81F1C8371E8BBDDA0085C2B8 /* MHPagingScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MHPagingScrollView.m; sourceTree = "<group>"; }; | ||
| 492 | 81F1C83E1E8BC5CC0085C2B8 /* NSArray+Safety.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSArray+Safety.h"; sourceTree = "<group>"; }; | 475 | 81F1C83E1E8BC5CC0085C2B8 /* NSArray+Safety.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSArray+Safety.h"; sourceTree = "<group>"; }; |
| 493 | 81F1C83F1E8BC5CC0085C2B8 /* NSArray+Safety.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSArray+Safety.m"; sourceTree = "<group>"; }; | 476 | 81F1C83F1E8BC5CC0085C2B8 /* NSArray+Safety.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSArray+Safety.m"; sourceTree = "<group>"; }; |
| 494 | 81FB5B3A1E7A6FFC00F98E1D /* SevenSwitch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SevenSwitch.h; sourceTree = "<group>"; }; | 477 | 81FB5B3A1E7A6FFC00F98E1D /* SevenSwitch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SevenSwitch.h; sourceTree = "<group>"; }; |
| @@ -677,13 +660,6 @@ | @@ -677,13 +660,6 @@ | ||
| 677 | D209AD6D1EC583B700D82E3B /* MineMessageController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MineMessageController.m; sourceTree = "<group>"; }; | 660 | D209AD6D1EC583B700D82E3B /* MineMessageController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MineMessageController.m; sourceTree = "<group>"; }; |
| 678 | D209AD6F1EC583D100D82E3B /* MineAccountController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MineAccountController.h; sourceTree = "<group>"; }; | 661 | D209AD6F1EC583D100D82E3B /* MineAccountController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MineAccountController.h; sourceTree = "<group>"; }; |
| 679 | D209AD701EC583D100D82E3B /* MineAccountController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MineAccountController.m; sourceTree = "<group>"; }; | 662 | D209AD701EC583D100D82E3B /* MineAccountController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MineAccountController.m; sourceTree = "<group>"; }; |
| 680 | - D20C82BC1EEEA89700BB609F /* LVCHomePageListModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LVCHomePageListModel.h; sourceTree = "<group>"; }; | ||
| 681 | - D20C82BD1EEEA89700BB609F /* LVCHomePageListModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LVCHomePageListModel.m; sourceTree = "<group>"; }; | ||
| 682 | - D214CB4C1EF7BD890014EEBA /* V8HorizontalPickerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8HorizontalPickerView.h; sourceTree = "<group>"; }; | ||
| 683 | - D214CB4D1EF7BD890014EEBA /* V8HorizontalPickerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = V8HorizontalPickerView.m; sourceTree = "<group>"; }; | ||
| 684 | - D214CB4E1EF7BD890014EEBA /* V8HorizontalPickerViewProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8HorizontalPickerViewProtocol.h; sourceTree = "<group>"; }; | ||
| 685 | - D214CB501EF7CB310014EEBA /* LVCChannelPagingView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LVCChannelPagingView.h; sourceTree = "<group>"; }; | ||
| 686 | - D214CB511EF7CB310014EEBA /* LVCChannelPagingView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LVCChannelPagingView.m; sourceTree = "<group>"; }; | ||
| 687 | D217A2451E7B76C7003B44CB /* PresentModelAble.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PresentModelAble.h; sourceTree = "<group>"; }; | 663 | D217A2451E7B76C7003B44CB /* PresentModelAble.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PresentModelAble.h; sourceTree = "<group>"; }; |
| 688 | D217A2461E7B76C7003B44CB /* PresentView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PresentView.h; sourceTree = "<group>"; }; | 664 | D217A2461E7B76C7003B44CB /* PresentView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PresentView.h; sourceTree = "<group>"; }; |
| 689 | D217A2471E7B76C7003B44CB /* PresentView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PresentView.m; sourceTree = "<group>"; }; | 665 | D217A2471E7B76C7003B44CB /* PresentView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PresentView.m; sourceTree = "<group>"; }; |
| @@ -691,8 +667,6 @@ | @@ -691,8 +667,6 @@ | ||
| 691 | D217A2491E7B76C7003B44CB /* PresentViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PresentViewCell.m; sourceTree = "<group>"; }; | 667 | D217A2491E7B76C7003B44CB /* PresentViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PresentViewCell.m; sourceTree = "<group>"; }; |
| 692 | D217A24C1E7B77C7003B44CB /* ComboCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ComboCell.h; path = Present/ComboCell.h; sourceTree = "<group>"; }; | 668 | D217A24C1E7B77C7003B44CB /* ComboCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ComboCell.h; path = Present/ComboCell.h; sourceTree = "<group>"; }; |
| 693 | D217A24D1E7B77C7003B44CB /* ComboCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ComboCell.m; path = Present/ComboCell.m; sourceTree = "<group>"; }; | 669 | D217A24D1E7B77C7003B44CB /* ComboCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ComboCell.m; path = Present/ComboCell.m; sourceTree = "<group>"; }; |
| 694 | - D219E8691EFD04A700650F38 /* LVCBigHorizontalCollectionViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LVCBigHorizontalCollectionViewCell.h; sourceTree = "<group>"; }; | ||
| 695 | - D219E86A1EFD04A700650F38 /* LVCBigHorizontalCollectionViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LVCBigHorizontalCollectionViewCell.m; sourceTree = "<group>"; }; | ||
| 696 | D224B1951E826ED800CC61D0 /* ChatBarrageAnimAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChatBarrageAnimAction.h; sourceTree = "<group>"; }; | 670 | D224B1951E826ED800CC61D0 /* ChatBarrageAnimAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChatBarrageAnimAction.h; sourceTree = "<group>"; }; |
| 697 | D224B1961E826ED800CC61D0 /* ChatBarrageAnimAction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ChatBarrageAnimAction.m; sourceTree = "<group>"; }; | 671 | D224B1961E826ED800CC61D0 /* ChatBarrageAnimAction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ChatBarrageAnimAction.m; sourceTree = "<group>"; }; |
| 698 | D22830EF1E778C0F00627701 /* LiveBaseView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LiveBaseView.h; sourceTree = "<group>"; }; | 672 | D22830EF1E778C0F00627701 /* LiveBaseView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LiveBaseView.h; sourceTree = "<group>"; }; |
| @@ -711,18 +685,6 @@ | @@ -711,18 +685,6 @@ | ||
| 711 | D23696911E7FC83800E4BF71 /* chatMsgModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = chatMsgModel.m; sourceTree = "<group>"; }; | 685 | D23696911E7FC83800E4BF71 /* chatMsgModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = chatMsgModel.m; sourceTree = "<group>"; }; |
| 712 | D2393CFF1F020D5700D3EE17 /* FeedbackViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FeedbackViewController.h; sourceTree = "<group>"; }; | 686 | D2393CFF1F020D5700D3EE17 /* FeedbackViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FeedbackViewController.h; sourceTree = "<group>"; }; |
| 713 | D2393D001F020D5700D3EE17 /* FeedbackViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FeedbackViewController.m; sourceTree = "<group>"; }; | 687 | D2393D001F020D5700D3EE17 /* FeedbackViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FeedbackViewController.m; sourceTree = "<group>"; }; |
| 714 | - D23BBDB61EF8D15D002FE0B8 /* LVCMainHeaderCollectionReusableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LVCMainHeaderCollectionReusableView.h; sourceTree = "<group>"; }; | ||
| 715 | - D23BBDB71EF8D15D002FE0B8 /* LVCMainHeaderCollectionReusableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LVCMainHeaderCollectionReusableView.m; sourceTree = "<group>"; }; | ||
| 716 | - D23BBDB91EF8E8B2002FE0B8 /* LVCBannerAndMarqueeModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LVCBannerAndMarqueeModel.h; sourceTree = "<group>"; }; | ||
| 717 | - D23BBDBA1EF8E8B2002FE0B8 /* LVCBannerAndMarqueeModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LVCBannerAndMarqueeModel.m; sourceTree = "<group>"; }; | ||
| 718 | - D23BBDBC1EF8ED4A002FE0B8 /* LVCChannelDetailModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LVCChannelDetailModel.h; sourceTree = "<group>"; }; | ||
| 719 | - D23BBDBD1EF8ED4A002FE0B8 /* LVCChannelDetailModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LVCChannelDetailModel.m; sourceTree = "<group>"; }; | ||
| 720 | - D23BBDBF1EF8F513002FE0B8 /* LVCBqWqXgModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LVCBqWqXgModel.h; sourceTree = "<group>"; }; | ||
| 721 | - D23BBDC01EF8F513002FE0B8 /* LVCBqWqXgModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LVCBqWqXgModel.m; sourceTree = "<group>"; }; | ||
| 722 | - D23BBDC21EF8FB99002FE0B8 /* LVCMainHorizontalCollectionViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LVCMainHorizontalCollectionViewCell.h; sourceTree = "<group>"; }; | ||
| 723 | - D23BBDC31EF8FB99002FE0B8 /* LVCMainHorizontalCollectionViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LVCMainHorizontalCollectionViewCell.m; sourceTree = "<group>"; }; | ||
| 724 | - D23BBDC51EF8FBD1002FE0B8 /* LVCSectionHeaderCollectionReusableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LVCSectionHeaderCollectionReusableView.h; sourceTree = "<group>"; }; | ||
| 725 | - D23BBDC61EF8FBD1002FE0B8 /* LVCSectionHeaderCollectionReusableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LVCSectionHeaderCollectionReusableView.m; sourceTree = "<group>"; }; | ||
| 726 | D23DC1531ECC41C100103B0E /* LVCVerifyViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LVCVerifyViewController.h; sourceTree = "<group>"; }; | 688 | D23DC1531ECC41C100103B0E /* LVCVerifyViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LVCVerifyViewController.h; sourceTree = "<group>"; }; |
| 727 | D23DC1541ECC41C100103B0E /* LVCVerifyViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LVCVerifyViewController.m; sourceTree = "<group>"; }; | 689 | D23DC1541ECC41C100103B0E /* LVCVerifyViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LVCVerifyViewController.m; sourceTree = "<group>"; }; |
| 728 | D24571561E8393EB00AA85D6 /* UIImageView+ZXExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImageView+ZXExtension.h"; sourceTree = "<group>"; }; | 690 | D24571561E8393EB00AA85D6 /* UIImageView+ZXExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImageView+ZXExtension.h"; sourceTree = "<group>"; }; |
| @@ -733,12 +695,6 @@ | @@ -733,12 +695,6 @@ | ||
| 733 | D245715E1E83B09900AA85D6 /* userInfoModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = userInfoModel.m; sourceTree = "<group>"; }; | 695 | D245715E1E83B09900AA85D6 /* userInfoModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = userInfoModel.m; sourceTree = "<group>"; }; |
| 734 | D24571611E83C40B00AA85D6 /* PrivateView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PrivateView.h; sourceTree = "<group>"; }; | 696 | D24571611E83C40B00AA85D6 /* PrivateView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PrivateView.h; sourceTree = "<group>"; }; |
| 735 | D24571621E83C40B00AA85D6 /* PrivateView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PrivateView.m; sourceTree = "<group>"; }; | 697 | D24571621E83C40B00AA85D6 /* PrivateView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PrivateView.m; sourceTree = "<group>"; }; |
| 736 | - D24CFC1E1EFA092300AA6ADB /* JBBannerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JBBannerView.h; sourceTree = "<group>"; }; | ||
| 737 | - D24CFC1F1EFA092300AA6ADB /* JBBannerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JBBannerView.m; sourceTree = "<group>"; }; | ||
| 738 | - D24F40901EFB727000833738 /* JBAutoRollTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JBAutoRollTableView.h; sourceTree = "<group>"; }; | ||
| 739 | - D24F40911EFB727000833738 /* JBAutoRollTableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JBAutoRollTableView.m; sourceTree = "<group>"; }; | ||
| 740 | - D24F40931EFB965A00833738 /* JBSearchView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JBSearchView.h; sourceTree = "<group>"; }; | ||
| 741 | - D24F40941EFB965A00833738 /* JBSearchView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JBSearchView.m; sourceTree = "<group>"; }; | ||
| 742 | D2552FFE1E7909AC00DF38A5 /* GiftAnimOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GiftAnimOperation.h; sourceTree = "<group>"; }; | 698 | D2552FFE1E7909AC00DF38A5 /* GiftAnimOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GiftAnimOperation.h; sourceTree = "<group>"; }; |
| 743 | D2552FFF1E7909AC00DF38A5 /* GiftAnimOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GiftAnimOperation.m; sourceTree = "<group>"; }; | 699 | D2552FFF1E7909AC00DF38A5 /* GiftAnimOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GiftAnimOperation.m; sourceTree = "<group>"; }; |
| 744 | D25530011E79115100DF38A5 /* AnimQueueManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AnimQueueManager.h; sourceTree = "<group>"; }; | 700 | D25530011E79115100DF38A5 /* AnimQueueManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AnimQueueManager.h; sourceTree = "<group>"; }; |
| @@ -803,8 +759,6 @@ | @@ -803,8 +759,6 @@ | ||
| 803 | D2D7D18C1E8A581000217771 /* timg.jpeg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = timg.jpeg; sourceTree = "<group>"; }; | 759 | D2D7D18C1E8A581000217771 /* timg.jpeg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = timg.jpeg; sourceTree = "<group>"; }; |
| 804 | D2EBC8551F01FF9200F198FB /* LVCCommentModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LVCCommentModel.h; sourceTree = "<group>"; }; | 760 | D2EBC8551F01FF9200F198FB /* LVCCommentModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LVCCommentModel.h; sourceTree = "<group>"; }; |
| 805 | D2EBC8561F01FF9200F198FB /* LVCCommentModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LVCCommentModel.m; sourceTree = "<group>"; }; | 761 | D2EBC8561F01FF9200F198FB /* LVCCommentModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LVCCommentModel.m; sourceTree = "<group>"; }; |
| 806 | - D2EBC8621F02105C00F198FB /* LVCHomePageViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LVCHomePageViewController.h; sourceTree = "<group>"; }; | ||
| 807 | - D2EBC8631F02105C00F198FB /* LVCHomePageViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LVCHomePageViewController.m; sourceTree = "<group>"; }; | ||
| 808 | D2EBC8651F02108000F198FB /* LiveListService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LiveListService.h; sourceTree = "<group>"; }; | 762 | D2EBC8651F02108000F198FB /* LiveListService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LiveListService.h; sourceTree = "<group>"; }; |
| 809 | D2EBC8661F02108000F198FB /* LiveListService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LiveListService.m; sourceTree = "<group>"; }; | 763 | D2EBC8661F02108000F198FB /* LiveListService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LiveListService.m; sourceTree = "<group>"; }; |
| 810 | D2EBC8671F02108000F198FB /* LVCLiveActivityInfoService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LVCLiveActivityInfoService.h; sourceTree = "<group>"; }; | 764 | D2EBC8671F02108000F198FB /* LVCLiveActivityInfoService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LVCLiveActivityInfoService.h; sourceTree = "<group>"; }; |
| @@ -1197,15 +1151,6 @@ | @@ -1197,15 +1151,6 @@ | ||
| 1197 | path = Model; | 1151 | path = Model; |
| 1198 | sourceTree = "<group>"; | 1152 | sourceTree = "<group>"; |
| 1199 | }; | 1153 | }; |
| 1200 | - 81F1C8351E8BBDDA0085C2B8 /* MHPagingScrollView */ = { | ||
| 1201 | - isa = PBXGroup; | ||
| 1202 | - children = ( | ||
| 1203 | - 81F1C8361E8BBDDA0085C2B8 /* MHPagingScrollView.h */, | ||
| 1204 | - 81F1C8371E8BBDDA0085C2B8 /* MHPagingScrollView.m */, | ||
| 1205 | - ); | ||
| 1206 | - path = MHPagingScrollView; | ||
| 1207 | - sourceTree = "<group>"; | ||
| 1208 | - }; | ||
| 1209 | 81FB5B391E7A6FFC00F98E1D /* SevenSwitch */ = { | 1154 | 81FB5B391E7A6FFC00F98E1D /* SevenSwitch */ = { |
| 1210 | isa = PBXGroup; | 1155 | isa = PBXGroup; |
| 1211 | children = ( | 1156 | children = ( |
| @@ -1339,9 +1284,7 @@ | @@ -1339,9 +1284,7 @@ | ||
| 1339 | D2029BD41E6EADE10027CD92 /* SDK */ = { | 1284 | D2029BD41E6EADE10027CD92 /* SDK */ = { |
| 1340 | isa = PBXGroup; | 1285 | isa = PBXGroup; |
| 1341 | children = ( | 1286 | children = ( |
| 1342 | - D214CB4B1EF7BD890014EEBA /* V8HorizontalPickerView */, | ||
| 1343 | 4BD855D41EBACD530082061D /* AFNetworking */, | 1287 | 4BD855D41EBACD530082061D /* AFNetworking */, |
| 1344 | - 81F1C8351E8BBDDA0085C2B8 /* MHPagingScrollView */, | ||
| 1345 | 81FB5B391E7A6FFC00F98E1D /* SevenSwitch */, | 1288 | 81FB5B391E7A6FFC00F98E1D /* SevenSwitch */, |
| 1346 | 810B64E41E779B1F00133E15 /* Masonry */, | 1289 | 810B64E41E779B1F00133E15 /* Masonry */, |
| 1347 | D2029BF81E6EADE10027CD92 /* MBProgressHUD */, | 1290 | D2029BF81E6EADE10027CD92 /* MBProgressHUD */, |
| @@ -1580,7 +1523,6 @@ | @@ -1580,7 +1523,6 @@ | ||
| 1580 | D2888D951E6EBAA7003A77C8 /* LiveSections */, | 1523 | D2888D951E6EBAA7003A77C8 /* LiveSections */, |
| 1581 | D2575C431E76846900E3A8FC /* InteractionSections */, | 1524 | D2575C431E76846900E3A8FC /* InteractionSections */, |
| 1582 | D2029C751E6EADE10027CD92 /* ZXSections(例子) */, | 1525 | D2029C751E6EADE10027CD92 /* ZXSections(例子) */, |
| 1583 | - D233EE731EEA8A1500674ED5 /* HomePageSections */, | ||
| 1584 | ); | 1526 | ); |
| 1585 | path = Sections; | 1527 | path = Sections; |
| 1586 | sourceTree = "<group>"; | 1528 | sourceTree = "<group>"; |
| @@ -1774,54 +1716,6 @@ | @@ -1774,54 +1716,6 @@ | ||
| 1774 | name = Model; | 1716 | name = Model; |
| 1775 | sourceTree = "<group>"; | 1717 | sourceTree = "<group>"; |
| 1776 | }; | 1718 | }; |
| 1777 | - D20C82BF1EEEA89E00BB609F /* Model */ = { | ||
| 1778 | - isa = PBXGroup; | ||
| 1779 | - children = ( | ||
| 1780 | - D20C82BC1EEEA89700BB609F /* LVCHomePageListModel.h */, | ||
| 1781 | - D20C82BD1EEEA89700BB609F /* LVCHomePageListModel.m */, | ||
| 1782 | - D23BBDB91EF8E8B2002FE0B8 /* LVCBannerAndMarqueeModel.h */, | ||
| 1783 | - D23BBDBA1EF8E8B2002FE0B8 /* LVCBannerAndMarqueeModel.m */, | ||
| 1784 | - D23BBDBC1EF8ED4A002FE0B8 /* LVCChannelDetailModel.h */, | ||
| 1785 | - D23BBDBD1EF8ED4A002FE0B8 /* LVCChannelDetailModel.m */, | ||
| 1786 | - D23BBDBF1EF8F513002FE0B8 /* LVCBqWqXgModel.h */, | ||
| 1787 | - D23BBDC01EF8F513002FE0B8 /* LVCBqWqXgModel.m */, | ||
| 1788 | - ); | ||
| 1789 | - name = Model; | ||
| 1790 | - sourceTree = "<group>"; | ||
| 1791 | - }; | ||
| 1792 | - D214CB4B1EF7BD890014EEBA /* V8HorizontalPickerView */ = { | ||
| 1793 | - isa = PBXGroup; | ||
| 1794 | - children = ( | ||
| 1795 | - D214CB4C1EF7BD890014EEBA /* V8HorizontalPickerView.h */, | ||
| 1796 | - D214CB4D1EF7BD890014EEBA /* V8HorizontalPickerView.m */, | ||
| 1797 | - D214CB4E1EF7BD890014EEBA /* V8HorizontalPickerViewProtocol.h */, | ||
| 1798 | - ); | ||
| 1799 | - path = V8HorizontalPickerView; | ||
| 1800 | - sourceTree = "<group>"; | ||
| 1801 | - }; | ||
| 1802 | - D214CB531EF7CB380014EEBA /* View */ = { | ||
| 1803 | - isa = PBXGroup; | ||
| 1804 | - children = ( | ||
| 1805 | - D214CB501EF7CB310014EEBA /* LVCChannelPagingView.h */, | ||
| 1806 | - D214CB511EF7CB310014EEBA /* LVCChannelPagingView.m */, | ||
| 1807 | - D23BBDB61EF8D15D002FE0B8 /* LVCMainHeaderCollectionReusableView.h */, | ||
| 1808 | - D23BBDB71EF8D15D002FE0B8 /* LVCMainHeaderCollectionReusableView.m */, | ||
| 1809 | - D23BBDC51EF8FBD1002FE0B8 /* LVCSectionHeaderCollectionReusableView.h */, | ||
| 1810 | - D23BBDC61EF8FBD1002FE0B8 /* LVCSectionHeaderCollectionReusableView.m */, | ||
| 1811 | - D23BBDC21EF8FB99002FE0B8 /* LVCMainHorizontalCollectionViewCell.h */, | ||
| 1812 | - D23BBDC31EF8FB99002FE0B8 /* LVCMainHorizontalCollectionViewCell.m */, | ||
| 1813 | - D219E8691EFD04A700650F38 /* LVCBigHorizontalCollectionViewCell.h */, | ||
| 1814 | - D219E86A1EFD04A700650F38 /* LVCBigHorizontalCollectionViewCell.m */, | ||
| 1815 | - D24F40931EFB965A00833738 /* JBSearchView.h */, | ||
| 1816 | - D24F40941EFB965A00833738 /* JBSearchView.m */, | ||
| 1817 | - D24CFC1E1EFA092300AA6ADB /* JBBannerView.h */, | ||
| 1818 | - D24CFC1F1EFA092300AA6ADB /* JBBannerView.m */, | ||
| 1819 | - D24F40901EFB727000833738 /* JBAutoRollTableView.h */, | ||
| 1820 | - D24F40911EFB727000833738 /* JBAutoRollTableView.m */, | ||
| 1821 | - ); | ||
| 1822 | - name = View; | ||
| 1823 | - sourceTree = "<group>"; | ||
| 1824 | - }; | ||
| 1825 | D217A2441E7B76C7003B44CB /* Present */ = { | 1719 | D217A2441E7B76C7003B44CB /* Present */ = { |
| 1826 | isa = PBXGroup; | 1720 | isa = PBXGroup; |
| 1827 | children = ( | 1721 | children = ( |
| @@ -1891,25 +1785,6 @@ | @@ -1891,25 +1785,6 @@ | ||
| 1891 | path = GiftModel; | 1785 | path = GiftModel; |
| 1892 | sourceTree = "<group>"; | 1786 | sourceTree = "<group>"; |
| 1893 | }; | 1787 | }; |
| 1894 | - D233EE731EEA8A1500674ED5 /* HomePageSections */ = { | ||
| 1895 | - isa = PBXGroup; | ||
| 1896 | - children = ( | ||
| 1897 | - D233EE741EEE26C700674ED5 /* Controller */, | ||
| 1898 | - D20C82BF1EEEA89E00BB609F /* Model */, | ||
| 1899 | - D214CB531EF7CB380014EEBA /* View */, | ||
| 1900 | - ); | ||
| 1901 | - path = HomePageSections; | ||
| 1902 | - sourceTree = "<group>"; | ||
| 1903 | - }; | ||
| 1904 | - D233EE741EEE26C700674ED5 /* Controller */ = { | ||
| 1905 | - isa = PBXGroup; | ||
| 1906 | - children = ( | ||
| 1907 | - D2EBC8621F02105C00F198FB /* LVCHomePageViewController.h */, | ||
| 1908 | - D2EBC8631F02105C00F198FB /* LVCHomePageViewController.m */, | ||
| 1909 | - ); | ||
| 1910 | - name = Controller; | ||
| 1911 | - sourceTree = "<group>"; | ||
| 1912 | - }; | ||
| 1913 | D236968F1E7FC83800E4BF71 /* ChatMsgModel */ = { | 1788 | D236968F1E7FC83800E4BF71 /* ChatMsgModel */ = { |
| 1914 | isa = PBXGroup; | 1789 | isa = PBXGroup; |
| 1915 | children = ( | 1790 | children = ( |
| @@ -2366,7 +2241,6 @@ | @@ -2366,7 +2241,6 @@ | ||
| 2366 | D2029CC01E6EADE10027CD92 /* UIImage+GIF.m in Sources */, | 2241 | D2029CC01E6EADE10027CD92 /* UIImage+GIF.m in Sources */, |
| 2367 | 4B45CE851EB86A590079AFB7 /* LVCClearCachesCell.m in Sources */, | 2242 | 4B45CE851EB86A590079AFB7 /* LVCClearCachesCell.m in Sources */, |
| 2368 | 4B45CE9B1EB86A760079AFB7 /* ZXUIKit.m in Sources */, | 2243 | 4B45CE9B1EB86A760079AFB7 /* ZXUIKit.m in Sources */, |
| 2369 | - D214CB4F1EF7BD890014EEBA /* V8HorizontalPickerView.m in Sources */, | ||
| 2370 | D2029BCF1E6EADD70027CD92 /* ZXTabBarController.m in Sources */, | 2244 | D2029BCF1E6EADD70027CD92 /* ZXTabBarController.m in Sources */, |
| 2371 | D2029CB81E6EADE10027CD92 /* SDImageCache.m in Sources */, | 2245 | D2029CB81E6EADE10027CD92 /* SDImageCache.m in Sources */, |
| 2372 | D2029CBB1E6EADE10027CD92 /* SDWebImageDownloader.m in Sources */, | 2246 | D2029CBB1E6EADE10027CD92 /* SDWebImageDownloader.m in Sources */, |
| @@ -2376,7 +2250,6 @@ | @@ -2376,7 +2250,6 @@ | ||
| 2376 | 8178D4241F02043500AA78A4 /* LVCFullScreenPlayerController.m in Sources */, | 2250 | 8178D4241F02043500AA78A4 /* LVCFullScreenPlayerController.m in Sources */, |
| 2377 | D2029C861E6EADE10027CD92 /* Tools.m in Sources */, | 2251 | D2029C861E6EADE10027CD92 /* Tools.m in Sources */, |
| 2378 | 4B42A6C41EC00CC800DA09D7 /* UIAlertView+Blocks.m in Sources */, | 2252 | 4B42A6C41EC00CC800DA09D7 /* UIAlertView+Blocks.m in Sources */, |
| 2379 | - D214CB521EF7CB310014EEBA /* LVCChannelPagingView.m in Sources */, | ||
| 2380 | 4B45CE861EB86A590079AFB7 /* LVCLoginShowView.m in Sources */, | 2253 | 4B45CE861EB86A590079AFB7 /* LVCLoginShowView.m in Sources */, |
| 2381 | D2029CA01E6EADE10027CD92 /* NSObject+MJProperty.m in Sources */, | 2254 | D2029CA01E6EADE10027CD92 /* NSObject+MJProperty.m in Sources */, |
| 2382 | 4BD855FE1EBACD530082061D /* AFSecurityPolicy.m in Sources */, | 2255 | 4BD855FE1EBACD530082061D /* AFSecurityPolicy.m in Sources */, |
| @@ -2384,7 +2257,6 @@ | @@ -2384,7 +2257,6 @@ | ||
| 2384 | 4B45CE981EB86A760079AFB7 /* UILabel+createLabel.m in Sources */, | 2257 | 4B45CE981EB86A760079AFB7 /* UILabel+createLabel.m in Sources */, |
| 2385 | D2029C9C1E6EADE10027CD92 /* MJPropertyType.m in Sources */, | 2258 | D2029C9C1E6EADE10027CD92 /* MJPropertyType.m in Sources */, |
| 2386 | D22831091E77D8D500627701 /* GiftModel.m in Sources */, | 2259 | D22831091E77D8D500627701 /* GiftModel.m in Sources */, |
| 2387 | - D23BBDBE1EF8ED4A002FE0B8 /* LVCChannelDetailModel.m in Sources */, | ||
| 2388 | D2029CCD1E6EADE10027CD92 /* SearchModel.m in Sources */, | 2260 | D2029CCD1E6EADE10027CD92 /* SearchModel.m in Sources */, |
| 2389 | 4BD8560F1EBACEF80082061D /* CNLiveWebView.m in Sources */, | 2261 | 4BD8560F1EBACEF80082061D /* CNLiveWebView.m in Sources */, |
| 2390 | 810B65051E779B1F00133E15 /* NSLayoutConstraint+MASDebugAdditions.m in Sources */, | 2262 | 810B65051E779B1F00133E15 /* NSLayoutConstraint+MASDebugAdditions.m in Sources */, |
| @@ -2396,7 +2268,6 @@ | @@ -2396,7 +2268,6 @@ | ||
| 2396 | 81F1C8401E8BC5CC0085C2B8 /* NSArray+Safety.m in Sources */, | 2268 | 81F1C8401E8BC5CC0085C2B8 /* NSArray+Safety.m in Sources */, |
| 2397 | D2029D011E6EAE2E0027CD92 /* UIColor+HexString.m in Sources */, | 2269 | D2029D011E6EAE2E0027CD92 /* UIColor+HexString.m in Sources */, |
| 2398 | 4B45CE7D1EB86A590079AFB7 /* ModifyInfomationController.m in Sources */, | 2270 | 4B45CE7D1EB86A590079AFB7 /* ModifyInfomationController.m in Sources */, |
| 2399 | - D23BBDBB1EF8E8B2002FE0B8 /* LVCBannerAndMarqueeModel.m in Sources */, | ||
| 2400 | D2029CA41E6EADE10027CD92 /* MJRefreshComponent.m in Sources */, | 2271 | D2029CA41E6EADE10027CD92 /* MJRefreshComponent.m in Sources */, |
| 2401 | D2575C7A1E76A4F300E3A8FC /* NHCarViews.m in Sources */, | 2272 | D2575C7A1E76A4F300E3A8FC /* NHCarViews.m in Sources */, |
| 2402 | 8178D44A1F02045500AA78A4 /* CNBarrageManager.m in Sources */, | 2273 | 8178D44A1F02045500AA78A4 /* CNBarrageManager.m in Sources */, |
| @@ -2413,7 +2284,6 @@ | @@ -2413,7 +2284,6 @@ | ||
| 2413 | 4BD8561D1EBAD6490082061D /* ZXConst.m in Sources */, | 2284 | 4BD8561D1EBAD6490082061D /* ZXConst.m in Sources */, |
| 2414 | D2029CB71E6EADE10027CD92 /* NSData+ImageContentType.m in Sources */, | 2285 | D2029CB71E6EADE10027CD92 /* NSData+ImageContentType.m in Sources */, |
| 2415 | D23DC1551ECC41C100103B0E /* LVCVerifyViewController.m in Sources */, | 2286 | D23DC1551ECC41C100103B0E /* LVCVerifyViewController.m in Sources */, |
| 2416 | - D2EBC8641F02105C00F198FB /* LVCHomePageViewController.m in Sources */, | ||
| 2417 | D29E81ED1E88DC5B008C9906 /* PriChatCell.m in Sources */, | 2287 | D29E81ED1E88DC5B008C9906 /* PriChatCell.m in Sources */, |
| 2418 | D2029CD01E6EADE10027CD92 /* SearchPresenter.m in Sources */, | 2288 | D2029CD01E6EADE10027CD92 /* SearchPresenter.m in Sources */, |
| 2419 | D2029CBE1E6EADE10027CD92 /* SDWebImagePrefetcher.m in Sources */, | 2289 | D2029CBE1E6EADE10027CD92 /* SDWebImagePrefetcher.m in Sources */, |
| @@ -2424,9 +2294,7 @@ | @@ -2424,9 +2294,7 @@ | ||
| 2424 | D2029CCE1E6EADE10027CD92 /* SearchRecomListModel.m in Sources */, | 2294 | D2029CCE1E6EADE10027CD92 /* SearchRecomListModel.m in Sources */, |
| 2425 | D2029CA11E6EADE10027CD92 /* NSString+MJExtension.m in Sources */, | 2295 | D2029CA11E6EADE10027CD92 /* NSString+MJExtension.m in Sources */, |
| 2426 | 4B45CE7A1EB86A590079AFB7 /* MineLiveController.m in Sources */, | 2296 | 4B45CE7A1EB86A590079AFB7 /* MineLiveController.m in Sources */, |
| 2427 | - D24F40951EFB965A00833738 /* JBSearchView.m in Sources */, | ||
| 2428 | D2029BCB1E6EADD70027CD92 /* BaseTableViewCell.m in Sources */, | 2297 | D2029BCB1E6EADD70027CD92 /* BaseTableViewCell.m in Sources */, |
| 2429 | - 81F1C8381E8BBDDA0085C2B8 /* MHPagingScrollView.m in Sources */, | ||
| 2430 | D2029CAA1E6EADE10027CD92 /* MJRefreshBackGifFooter.m in Sources */, | 2298 | D2029CAA1E6EADE10027CD92 /* MJRefreshBackGifFooter.m in Sources */, |
| 2431 | 8178D4531F02045500AA78A4 /* LVCRequestFailedView.m in Sources */, | 2299 | 8178D4531F02045500AA78A4 /* LVCRequestFailedView.m in Sources */, |
| 2432 | 4BD855FB1EBACD530082061D /* AFHTTPRequestOperationManager.m in Sources */, | 2300 | 4BD855FB1EBACD530082061D /* AFHTTPRequestOperationManager.m in Sources */, |
| @@ -2441,7 +2309,6 @@ | @@ -2441,7 +2309,6 @@ | ||
| 2441 | 4B45CEA61EB86B9F0079AFB7 /* NSNumber+ScaleHeight.m in Sources */, | 2309 | 4B45CEA61EB86B9F0079AFB7 /* NSNumber+ScaleHeight.m in Sources */, |
| 2442 | 810B65031E779B1F00133E15 /* MASViewConstraint.m in Sources */, | 2310 | 810B65031E779B1F00133E15 /* MASViewConstraint.m in Sources */, |
| 2443 | D2029BCE1E6EADD70027CD92 /* ZXNavigationController.m in Sources */, | 2311 | D2029BCE1E6EADD70027CD92 /* ZXNavigationController.m in Sources */, |
| 2444 | - D23BBDC71EF8FBD1002FE0B8 /* LVCSectionHeaderCollectionReusableView.m in Sources */, | ||
| 2445 | D2029CA21E6EADE10027CD92 /* MJRefreshAutoFooter.m in Sources */, | 2312 | D2029CA21E6EADE10027CD92 /* MJRefreshAutoFooter.m in Sources */, |
| 2446 | D2029CC71E6EADE10027CD92 /* SVIndefiniteAnimatedView.m in Sources */, | 2313 | D2029CC71E6EADE10027CD92 /* SVIndefiniteAnimatedView.m in Sources */, |
| 2447 | D2029CA31E6EADE10027CD92 /* MJRefreshBackFooter.m in Sources */, | 2314 | D2029CA31E6EADE10027CD92 /* MJRefreshBackFooter.m in Sources */, |
| @@ -2451,16 +2318,13 @@ | @@ -2451,16 +2318,13 @@ | ||
| 2451 | 4BD856011EBACD530082061D /* AFURLResponseSerialization.m in Sources */, | 2318 | 4BD856011EBACD530082061D /* AFURLResponseSerialization.m in Sources */, |
| 2452 | D2575C4A1E7685DE00E3A8FC /* UIView+Bubbling.m in Sources */, | 2319 | D2575C4A1E7685DE00E3A8FC /* UIView+Bubbling.m in Sources */, |
| 2453 | D2EBC8571F01FF9200F198FB /* LVCCommentModel.m in Sources */, | 2320 | D2EBC8571F01FF9200F198FB /* LVCCommentModel.m in Sources */, |
| 2454 | - D23BBDB81EF8D15D002FE0B8 /* LVCMainHeaderCollectionReusableView.m in Sources */, | ||
| 2455 | D2EBC88B1F02361600F198FB /* LVCUGCLiveListView.m in Sources */, | 2321 | D2EBC88B1F02361600F198FB /* LVCUGCLiveListView.m in Sources */, |
| 2456 | D2029CA61E6EADE10027CD92 /* MJRefreshHeader.m in Sources */, | 2322 | D2029CA61E6EADE10027CD92 /* MJRefreshHeader.m in Sources */, |
| 2457 | D2029CC41E6EADE10027CD92 /* UIImageView+WebCache.m in Sources */, | 2323 | D2029CC41E6EADE10027CD92 /* UIImageView+WebCache.m in Sources */, |
| 2458 | 4B45CE801EB86A590079AFB7 /* idAndPwdView.m in Sources */, | 2324 | 4B45CE801EB86A590079AFB7 /* idAndPwdView.m in Sources */, |
| 2459 | - D23BBDC41EF8FB99002FE0B8 /* LVCMainHorizontalCollectionViewCell.m in Sources */, | ||
| 2460 | 8178D4251F02043500AA78A4 /* LVCLivePlayerController.m in Sources */, | 2325 | 8178D4251F02043500AA78A4 /* LVCLivePlayerController.m in Sources */, |
| 2461 | D236967E1E7F9E4100E4BF71 /* GiftPayButton.m in Sources */, | 2326 | D236967E1E7F9E4100E4BF71 /* GiftPayButton.m in Sources */, |
| 2462 | 4BD8560A1EBACD530082061D /* UIWebView+AFNetworking.m in Sources */, | 2327 | 4BD8560A1EBACD530082061D /* UIWebView+AFNetworking.m in Sources */, |
| 2463 | - D219E86B1EFD04A700650F38 /* LVCBigHorizontalCollectionViewCell.m in Sources */, | ||
| 2464 | D2EBC8881F0225D900F198FB /* LVCVodPlayerListController.m in Sources */, | 2328 | D2EBC8881F0225D900F198FB /* LVCVodPlayerListController.m in Sources */, |
| 2465 | 4B45CE831EB86A590079AFB7 /* LVCMineModel.m in Sources */, | 2329 | 4B45CE831EB86A590079AFB7 /* LVCMineModel.m in Sources */, |
| 2466 | 4B45CE791EB86A590079AFB7 /* MineAboutUsController.m in Sources */, | 2330 | 4B45CE791EB86A590079AFB7 /* MineAboutUsController.m in Sources */, |
| @@ -2469,7 +2333,6 @@ | @@ -2469,7 +2333,6 @@ | ||
| 2469 | D2029CC81E6EADE10027CD92 /* SVProgressAnimatedView.m in Sources */, | 2333 | D2029CC81E6EADE10027CD92 /* SVProgressAnimatedView.m in Sources */, |
| 2470 | 4B45CE891EB86A590079AFB7 /* LVCPersonalImageCell.m in Sources */, | 2334 | 4B45CE891EB86A590079AFB7 /* LVCPersonalImageCell.m in Sources */, |
| 2471 | D2029C961E6EADE10027CD92 /* MBProgressHUD.m in Sources */, | 2335 | D2029C961E6EADE10027CD92 /* MBProgressHUD.m in Sources */, |
| 2472 | - D24F40921EFB727000833738 /* JBAutoRollTableView.m in Sources */, | ||
| 2473 | 810B65071E779B1F00133E15 /* ViewController+MASAdditions.m in Sources */, | 2336 | 810B65071E779B1F00133E15 /* ViewController+MASAdditions.m in Sources */, |
| 2474 | D2EBC88E1F023AA400F198FB /* LVCVodPlayerController.m in Sources */, | 2337 | D2EBC88E1F023AA400F198FB /* LVCVodPlayerController.m in Sources */, |
| 2475 | D2029C9A1E6EADE10027CD92 /* MJProperty.m in Sources */, | 2338 | D2029C9A1E6EADE10027CD92 /* MJProperty.m in Sources */, |
| @@ -2567,10 +2430,8 @@ | @@ -2567,10 +2430,8 @@ | ||
| 2567 | 4BD856041EBACD530082061D /* UIActivityIndicatorView+AFNetworking.m in Sources */, | 2430 | 4BD856041EBACD530082061D /* UIActivityIndicatorView+AFNetworking.m in Sources */, |
| 2568 | 4B45CE781EB86A590079AFB7 /* LVCMineViewController.m in Sources */, | 2431 | 4B45CE781EB86A590079AFB7 /* LVCMineViewController.m in Sources */, |
| 2569 | D2888D9E1E6EBF1B003A77C8 /* LVCLiveViewController.m in Sources */, | 2432 | D2888D9E1E6EBF1B003A77C8 /* LVCLiveViewController.m in Sources */, |
| 2570 | - D20C82BE1EEEA89700BB609F /* LVCHomePageListModel.m in Sources */, | ||
| 2571 | 4B42A6C71EC0171800DA09D7 /* PlayRecordCell.m in Sources */, | 2433 | 4B42A6C71EC0171800DA09D7 /* PlayRecordCell.m in Sources */, |
| 2572 | D217A24E1E7B77C7003B44CB /* ComboCell.m in Sources */, | 2434 | D217A24E1E7B77C7003B44CB /* ComboCell.m in Sources */, |
| 2573 | - D24CFC201EFA092300AA6ADB /* JBBannerView.m in Sources */, | ||
| 2574 | D2029CBD1E6EADE10027CD92 /* SDWebImageManager.m in Sources */, | 2435 | D2029CBD1E6EADE10027CD92 /* SDWebImageManager.m in Sources */, |
| 2575 | D2029CB41E6EADE10027CD92 /* UIView+MJExtension.m in Sources */, | 2436 | D2029CB41E6EADE10027CD92 /* UIView+MJExtension.m in Sources */, |
| 2576 | 81FB5B3C1E7A6FFC00F98E1D /* SevenSwitch.m in Sources */, | 2437 | 81FB5B3C1E7A6FFC00F98E1D /* SevenSwitch.m in Sources */, |
| @@ -2580,7 +2441,6 @@ | @@ -2580,7 +2441,6 @@ | ||
| 2580 | D2029D061E6EAE2E0027CD92 /* UIView+Extension.m in Sources */, | 2441 | D2029D061E6EAE2E0027CD92 /* UIView+Extension.m in Sources */, |
| 2581 | D25530001E7909AC00DF38A5 /* GiftAnimOperation.m in Sources */, | 2442 | D25530001E7909AC00DF38A5 /* GiftAnimOperation.m in Sources */, |
| 2582 | D2029C9D1E6EADE10027CD92 /* NSObject+MJClass.m in Sources */, | 2443 | D2029C9D1E6EADE10027CD92 /* NSObject+MJClass.m in Sources */, |
| 2583 | - D23BBDC11EF8F513002FE0B8 /* LVCBqWqXgModel.m in Sources */, | ||
| 2584 | D2029CCF1E6EADE10027CD92 /* SearchHttp.m in Sources */, | 2444 | D2029CCF1E6EADE10027CD92 /* SearchHttp.m in Sources */, |
| 2585 | 810B65001E779B1F00133E15 /* MASConstraintMaker.m in Sources */, | 2445 | 810B65001E779B1F00133E15 /* MASConstraintMaker.m in Sources */, |
| 2586 | 8178D4711F0239AD00AA78A4 /* LVCPlayerLoadingView.m in Sources */, | 2446 | 8178D4711F0239AD00AA78A4 /* LVCPlayerLoadingView.m in Sources */, |
LiveVideoCloud/AppDelegate/AppDelegate.m
| @@ -23,10 +23,10 @@ | @@ -23,10 +23,10 @@ | ||
| 23 | self.window.rootViewController = [[ZXTabBarController alloc] init]; | 23 | self.window.rootViewController = [[ZXTabBarController alloc] init]; |
| 24 | 24 | ||
| 25 | //初始化直播SDK | 25 | //初始化直播SDK |
| 26 | - [[CNLiveWebcastManager manager] initWithAppId:UserAppId appKey:UserAppKey]; | 26 | + [[CNLiveWebcastManager manager] initWithAppId:UserAppId appKey:UserAppKey isTestEnvironment:YES]; |
| 27 | 27 | ||
| 28 | //初始化聊天SDK并连接服务器 | 28 | //初始化聊天SDK并连接服务器 |
| 29 | - [[CNLiveChatManager sharedCNLiveChatManager] initWithAppKey:UserAppKey appId:UserAppId]; | 29 | + [[CNLiveChatManager sharedCNLiveChatManager] initWithAppKey:UserAppKey appId:UserAppId ]; |
| 30 | 30 | ||
| 31 | [CNLiveUserSystemCenter setAppId:UserAppId appKey:UserAppKey appSecret:UserAppSceret]; | 31 | [CNLiveUserSystemCenter setAppId:UserAppId appKey:UserAppKey appSecret:UserAppSceret]; |
| 32 | 32 |
LiveVideoCloud/Classes/SDK/MHPagingScrollView/MHPagingScrollView.h deleted
100755 → 0
| 1 | - | ||
| 2 | -#import <Foundation/Foundation.h> | ||
| 3 | -#import <UIKit/UIKit.h> | ||
| 4 | -@class MHPagingScrollView; | ||
| 5 | - | ||
| 6 | -/* | ||
| 7 | - * Delegate protocol for MHPagingScrollView. | ||
| 8 | - */ | ||
| 9 | -@protocol MHPagingScrollViewDelegate <NSObject> | ||
| 10 | - | ||
| 11 | -/* | ||
| 12 | - * Asks the delegate to return the number of pages. | ||
| 13 | - */ | ||
| 14 | -- (NSUInteger)numberOfPagesInPagingScrollView:(MHPagingScrollView *)pagingScrollView; | ||
| 15 | - | ||
| 16 | -/* | ||
| 17 | - * Asks the delegate for a page to insert. The delegate should ask for a | ||
| 18 | - * reusable view using dequeueReusablePageView. | ||
| 19 | - */ | ||
| 20 | -- (UIView *)pagingScrollView:(MHPagingScrollView *)pagingScrollView pageForIndex:(NSUInteger)index; | ||
| 21 | - | ||
| 22 | -@end | ||
| 23 | - | ||
| 24 | -/* | ||
| 25 | - * A paging scroll view that employs a reusable page mechanism like UITableView. | ||
| 26 | - * | ||
| 27 | - * MHPagingScrollView allows you to show partial previews of the pages to the | ||
| 28 | - * left and right of the current page. The bounds of the scroll view always | ||
| 29 | - * correspond to a single page. To allow these previews, make the scroll view | ||
| 30 | - * smaller to make room for the preview pages and set the previewInsets | ||
| 31 | - * property. | ||
| 32 | - */ | ||
| 33 | -@interface MHPagingScrollView : UIScrollView | ||
| 34 | - | ||
| 35 | -/* The delegate for paging events. */ | ||
| 36 | -@property (nonatomic, weak) id <MHPagingScrollViewDelegate> pagingDelegate; | ||
| 37 | - | ||
| 38 | -/* The width of the preview pages. */ | ||
| 39 | -@property (nonatomic, assign) UIEdgeInsets previewInsets; | ||
| 40 | - | ||
| 41 | -/* set prepare, default is 0 */ | ||
| 42 | -@property (nonatomic, assign) NSUInteger rightPrepareCount; | ||
| 43 | -@property (nonatomic, assign) NSUInteger leftPrepareCount; | ||
| 44 | - | ||
| 45 | -//- (void)refreshPage; | ||
| 46 | - | ||
| 47 | -/* | ||
| 48 | - * Makes the page at the requested index visible. | ||
| 49 | - */ | ||
| 50 | -- (void)selectPageAtIndex:(NSUInteger)index animated:(BOOL)animated; | ||
| 51 | - | ||
| 52 | -/* | ||
| 53 | - * Returns the index of the page that is currently visible. | ||
| 54 | - */ | ||
| 55 | -- (NSUInteger)indexOfSelectedPage; | ||
| 56 | - | ||
| 57 | -/* | ||
| 58 | - * Returns a reusable UIView object. | ||
| 59 | - */ | ||
| 60 | -- (UIView *)dequeueReusablePage; | ||
| 61 | - | ||
| 62 | -- (UIView *)dequeueReusablePageWithIdentify:(NSString *)identify; | ||
| 63 | - | ||
| 64 | -/* | ||
| 65 | - * Reloads the pages. Call this method when the number of pages has changed. | ||
| 66 | - */ | ||
| 67 | -- (void)reloadPages; | ||
| 68 | - | ||
| 69 | -/* | ||
| 70 | - * Call this from your view controller's UIScrollViewDelegate. | ||
| 71 | - */ | ||
| 72 | -- (void)scrollViewDidScroll; | ||
| 73 | - | ||
| 74 | -/* | ||
| 75 | - * Call this from your view controller's willRotateToInterfaceOrientation if | ||
| 76 | - * you want to support autorotation. | ||
| 77 | - */ | ||
| 78 | -- (void)beforeRotation; | ||
| 79 | - | ||
| 80 | -/* | ||
| 81 | - * Call this from your view controller's willAnimateRotationToInterfaceOrientation | ||
| 82 | - * if you want to support autorotation. | ||
| 83 | - */ | ||
| 84 | -- (void)afterRotation; | ||
| 85 | - | ||
| 86 | -/* | ||
| 87 | - * Call this from your view controller's didReceiveMemoryWarning. | ||
| 88 | - */ | ||
| 89 | -- (void)didReceiveMemoryWarning; | ||
| 90 | - | ||
| 91 | -@end | ||
| 92 | - | ||
| 93 | -@interface MHPagingScrollView (UNREUSE) | ||
| 94 | - | ||
| 95 | -/* | ||
| 96 | - * Returns a UIView object by index. | ||
| 97 | - */ | ||
| 98 | -- (UIView *)pageViewByIndex:(NSInteger)index; | ||
| 99 | - | ||
| 100 | -/* | ||
| 101 | - * Returns the select UIView object . | ||
| 102 | - */ | ||
| 103 | -- (UIView *)selectPageView; | ||
| 104 | - | ||
| 105 | -- (BOOL)isLoadedPageByIndex:(NSInteger)index; | ||
| 106 | - | ||
| 107 | -- (void)preLoadedPageView:(UIView*)view index:(NSInteger)index; | ||
| 108 | - | ||
| 109 | -@end |
LiveVideoCloud/Classes/SDK/MHPagingScrollView/MHPagingScrollView.m deleted
100755 → 0
| 1 | - | ||
| 2 | -#import "MHPagingScrollView.h" | ||
| 3 | - | ||
| 4 | -@interface MHPage : NSObject | ||
| 5 | - | ||
| 6 | -@property (nonatomic, strong) UIView *view; | ||
| 7 | -@property (nonatomic, assign) NSUInteger index; | ||
| 8 | - | ||
| 9 | -@end | ||
| 10 | - | ||
| 11 | -@implementation MHPage | ||
| 12 | - | ||
| 13 | -@end | ||
| 14 | - | ||
| 15 | -@implementation MHPagingScrollView | ||
| 16 | -{ | ||
| 17 | - NSMutableSet *_recycledPages; | ||
| 18 | - NSMutableSet *_visiblePages; | ||
| 19 | - NSUInteger _firstVisiblePageIndexBeforeRotation; // for autorotation | ||
| 20 | - CGFloat _percentScrolledIntoFirstVisiblePage; | ||
| 21 | -} | ||
| 22 | - | ||
| 23 | -- (void)commonInit | ||
| 24 | -{ | ||
| 25 | - _recycledPages = [[NSMutableSet alloc] init]; | ||
| 26 | - _visiblePages = [[NSMutableSet alloc] init]; | ||
| 27 | - | ||
| 28 | - self.pagingEnabled = YES; | ||
| 29 | - self.showsVerticalScrollIndicator = NO; | ||
| 30 | - self.showsHorizontalScrollIndicator = NO; | ||
| 31 | - self.contentOffset = CGPointZero; | ||
| 32 | -} | ||
| 33 | - | ||
| 34 | -- (id)initWithFrame:(CGRect)frame | ||
| 35 | -{ | ||
| 36 | - if ((self = [super initWithFrame:frame])) | ||
| 37 | - { | ||
| 38 | - [self commonInit]; | ||
| 39 | - } | ||
| 40 | - return self; | ||
| 41 | -} | ||
| 42 | - | ||
| 43 | -- (id)initWithCoder:(NSCoder *)aDecoder | ||
| 44 | -{ | ||
| 45 | - if ((self = [super initWithCoder:aDecoder])) | ||
| 46 | - { | ||
| 47 | - [self commonInit]; | ||
| 48 | - } | ||
| 49 | - return self; | ||
| 50 | -} | ||
| 51 | - | ||
| 52 | -- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event | ||
| 53 | -{ | ||
| 54 | - // This allows for touch handling outside of the scroll view's bounds. | ||
| 55 | - | ||
| 56 | - CGPoint parentLocation = [self convertPoint:point toView:self.superview]; | ||
| 57 | - | ||
| 58 | - CGRect responseRect = self.frame; | ||
| 59 | - responseRect.origin.x -= _previewInsets.left; | ||
| 60 | - responseRect.origin.y -= _previewInsets.top; | ||
| 61 | - responseRect.size.width += (_previewInsets.left + _previewInsets.right); | ||
| 62 | - responseRect.size.height += (_previewInsets.top + _previewInsets.bottom); | ||
| 63 | - | ||
| 64 | - return CGRectContainsPoint(responseRect, parentLocation); | ||
| 65 | -} | ||
| 66 | - | ||
| 67 | -- (void)selectPageAtIndex:(NSUInteger)index animated:(BOOL)animated | ||
| 68 | -{ | ||
| 69 | - if (animated) { | ||
| 70 | - | ||
| 71 | - [UIView beginAnimations:nil context:NULL]; | ||
| 72 | - [UIView setAnimationDuration:0.3f]; | ||
| 73 | - [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; | ||
| 74 | - } | ||
| 75 | - | ||
| 76 | - self.contentOffset = CGPointMake(self.bounds.size.width * index, 0); | ||
| 77 | - if (animated) { | ||
| 78 | - | ||
| 79 | - [UIView commitAnimations]; | ||
| 80 | - } | ||
| 81 | -} | ||
| 82 | - | ||
| 83 | -- (NSUInteger)indexOfSelectedPage | ||
| 84 | -{ | ||
| 85 | - CGFloat width = self.bounds.size.width; | ||
| 86 | - int currentPage = (self.contentOffset.x + width/2.0f) / width; | ||
| 87 | - return currentPage; | ||
| 88 | -} | ||
| 89 | - | ||
| 90 | -- (NSUInteger)numberOfPages | ||
| 91 | -{ | ||
| 92 | - return [_pagingDelegate numberOfPagesInPagingScrollView:self]; | ||
| 93 | -} | ||
| 94 | - | ||
| 95 | -- (CGSize)contentSizeForPagingScrollView | ||
| 96 | -{ | ||
| 97 | - CGRect rect = self.bounds; | ||
| 98 | - return CGSizeMake(rect.size.width * [self numberOfPages], rect.size.height); | ||
| 99 | -} | ||
| 100 | - | ||
| 101 | -- (BOOL)isDisplayingPageForIndex:(NSUInteger)index | ||
| 102 | -{ | ||
| 103 | - for (MHPage *page in _visiblePages) | ||
| 104 | - { | ||
| 105 | - if (page.index == index) | ||
| 106 | - return YES; | ||
| 107 | - } | ||
| 108 | - return NO; | ||
| 109 | -} | ||
| 110 | - | ||
| 111 | -- (UIView *)dequeueReusablePage | ||
| 112 | -{ | ||
| 113 | - MHPage *page = [_recycledPages anyObject]; | ||
| 114 | - if (page != nil) | ||
| 115 | - { | ||
| 116 | - UIView *view = page.view; | ||
| 117 | - [_recycledPages removeObject:page]; | ||
| 118 | - return view; | ||
| 119 | - } | ||
| 120 | - return nil; | ||
| 121 | -} | ||
| 122 | - | ||
| 123 | -- (UIView *)dequeueReusablePageWithIdentify:(NSString *)identify | ||
| 124 | -{ | ||
| 125 | - for (MHPage *page in _recycledPages) { | ||
| 126 | - if (page != nil) { | ||
| 127 | - if ([[NSString stringWithFormat:@"%ld", (long)page.view.tag] isEqualToString:identify]) { | ||
| 128 | - UIView *view = page.view; | ||
| 129 | - [_recycledPages removeObject:page]; | ||
| 130 | - return view; | ||
| 131 | - } | ||
| 132 | - } | ||
| 133 | - } | ||
| 134 | - return nil; | ||
| 135 | -} | ||
| 136 | - | ||
| 137 | -- (CGRect)frameForPageAtIndex:(NSUInteger)index | ||
| 138 | -{ | ||
| 139 | - CGRect rect = self.bounds; | ||
| 140 | - rect.origin.x = rect.size.width * index; | ||
| 141 | - return rect; | ||
| 142 | -} | ||
| 143 | - | ||
| 144 | -- (void)tilePages | ||
| 145 | -{ | ||
| 146 | - CGRect visibleBounds = self.bounds; | ||
| 147 | - CGFloat pageWidth = CGRectGetWidth(visibleBounds); | ||
| 148 | - visibleBounds.origin.x -= _previewInsets.left; | ||
| 149 | - visibleBounds.size.width += (_previewInsets.left + _previewInsets.right); | ||
| 150 | - | ||
| 151 | - int firstNeededPageIndex = floorf(CGRectGetMinX(visibleBounds) / pageWidth)-self.leftPrepareCount; | ||
| 152 | - int lastNeededPageIndex = floorf((CGRectGetMaxX(visibleBounds) - 1.0f) / pageWidth)+self.rightPrepareCount; | ||
| 153 | - firstNeededPageIndex = MAX(firstNeededPageIndex, 0); | ||
| 154 | - lastNeededPageIndex = MIN(lastNeededPageIndex, (int)[self numberOfPages] - 1); | ||
| 155 | - | ||
| 156 | - for (MHPage *page in _visiblePages) | ||
| 157 | - { | ||
| 158 | - if ((int)page.index < firstNeededPageIndex || (int)page.index > lastNeededPageIndex) | ||
| 159 | - { | ||
| 160 | - [_recycledPages addObject:page]; | ||
| 161 | - [page.view removeFromSuperview]; | ||
| 162 | - } | ||
| 163 | - } | ||
| 164 | - | ||
| 165 | - [_visiblePages minusSet:_recycledPages]; | ||
| 166 | - for (UIView *view in _recycledPages) { | ||
| 167 | - if ([view isKindOfClass:[UIScrollView class]]) { | ||
| 168 | - UIScrollView *scroll = (UIScrollView *)view; | ||
| 169 | - scroll.scrollsToTop = NO; | ||
| 170 | - } | ||
| 171 | - } | ||
| 172 | - | ||
| 173 | - for (int i = firstNeededPageIndex; i <= lastNeededPageIndex; ++i) | ||
| 174 | - { | ||
| 175 | - if (![self isDisplayingPageForIndex:i]) | ||
| 176 | - { | ||
| 177 | - UIView *pageView = [_pagingDelegate pagingScrollView:self pageForIndex:i]; | ||
| 178 | - if ([pageView isKindOfClass:[UIScrollView class]]) { | ||
| 179 | - UIScrollView *scroll = (UIScrollView *)pageView; | ||
| 180 | - scroll.scrollsToTop = YES; | ||
| 181 | - } | ||
| 182 | - pageView.frame = [self frameForPageAtIndex:i]; | ||
| 183 | - pageView.autoresizingMask = UIViewAutoresizingFlexibleHeight; | ||
| 184 | - [self addSubview:pageView]; | ||
| 185 | - | ||
| 186 | - MHPage *page = [[MHPage alloc] init]; | ||
| 187 | - page.index = i; | ||
| 188 | - page.view = pageView; | ||
| 189 | - [_visiblePages addObject:page]; | ||
| 190 | - } | ||
| 191 | - } | ||
| 192 | -} | ||
| 193 | - | ||
| 194 | -- (void)reloadPages | ||
| 195 | -{ | ||
| 196 | - self.contentSize = [self contentSizeForPagingScrollView]; | ||
| 197 | - for (MHPage *page in _visiblePages) { | ||
| 198 | - [page.view removeFromSuperview]; | ||
| 199 | - } | ||
| 200 | - for (MHPage *page in _recycledPages) { | ||
| 201 | - [page.view removeFromSuperview]; | ||
| 202 | - } | ||
| 203 | - [_visiblePages removeAllObjects]; | ||
| 204 | - [_recycledPages removeAllObjects]; | ||
| 205 | - [self tilePages]; | ||
| 206 | -} | ||
| 207 | - | ||
| 208 | -- (void)scrollViewDidScroll | ||
| 209 | -{ | ||
| 210 | - [self tilePages]; | ||
| 211 | -} | ||
| 212 | - | ||
| 213 | -- (void)beforeRotation | ||
| 214 | -{ | ||
| 215 | - CGFloat offset = self.contentOffset.x; | ||
| 216 | - CGFloat pageWidth = self.bounds.size.width; | ||
| 217 | - | ||
| 218 | - if (offset >= 0) | ||
| 219 | - _firstVisiblePageIndexBeforeRotation = floorf(offset / pageWidth); | ||
| 220 | - else | ||
| 221 | - _firstVisiblePageIndexBeforeRotation = 0; | ||
| 222 | - | ||
| 223 | - _percentScrolledIntoFirstVisiblePage = offset / pageWidth - _firstVisiblePageIndexBeforeRotation; | ||
| 224 | -} | ||
| 225 | - | ||
| 226 | -- (void)afterRotation | ||
| 227 | -{ | ||
| 228 | - self.contentSize = [self contentSizeForPagingScrollView]; | ||
| 229 | - | ||
| 230 | - for (MHPage *page in _visiblePages) | ||
| 231 | - page.view.frame = [self frameForPageAtIndex:page.index]; | ||
| 232 | - | ||
| 233 | - CGFloat pageWidth = self.bounds.size.width; | ||
| 234 | - CGFloat newOffset = (_firstVisiblePageIndexBeforeRotation + _percentScrolledIntoFirstVisiblePage) * pageWidth; | ||
| 235 | - self.contentOffset = CGPointMake(newOffset, 0); | ||
| 236 | -} | ||
| 237 | - | ||
| 238 | -- (void)didReceiveMemoryWarning | ||
| 239 | -{ | ||
| 240 | - [_recycledPages removeAllObjects]; | ||
| 241 | -} | ||
| 242 | - | ||
| 243 | -@end | ||
| 244 | - | ||
| 245 | -@implementation MHPagingScrollView (UNREUSE) | ||
| 246 | - | ||
| 247 | -- (UIView *)pageViewByIndex:(NSInteger)index{ | ||
| 248 | - for (MHPage* page in _recycledPages) { | ||
| 249 | - if (page.index == index) { | ||
| 250 | - UIView *view = page.view; | ||
| 251 | - [_recycledPages removeObject:page]; | ||
| 252 | - return view; | ||
| 253 | - } | ||
| 254 | - } | ||
| 255 | - for (MHPage *page in _visiblePages) { | ||
| 256 | - if (page.index == index) { | ||
| 257 | - UIView *view = page.view; | ||
| 258 | - return view; | ||
| 259 | - } | ||
| 260 | - } | ||
| 261 | - return nil; | ||
| 262 | -} | ||
| 263 | - | ||
| 264 | -- (UIView *)selectPageView{ | ||
| 265 | - NSUInteger index = [self indexOfSelectedPage]; | ||
| 266 | - for (MHPage *page in _visiblePages) { | ||
| 267 | - if (page.index == index) { | ||
| 268 | - UIView *view = page.view; | ||
| 269 | - return view; | ||
| 270 | - } | ||
| 271 | - } | ||
| 272 | - return nil; | ||
| 273 | -} | ||
| 274 | - | ||
| 275 | -- (BOOL)isLoadedPageByIndex:(NSInteger)index{ | ||
| 276 | - | ||
| 277 | - for (MHPage* page in _recycledPages) { | ||
| 278 | - if (page.index == index) { | ||
| 279 | - return true; | ||
| 280 | - } | ||
| 281 | - } | ||
| 282 | - for (MHPage *page in _visiblePages) { | ||
| 283 | - if (page.index == index) { | ||
| 284 | - return true; | ||
| 285 | - } | ||
| 286 | - } | ||
| 287 | - return false; | ||
| 288 | - | ||
| 289 | -} | ||
| 290 | - | ||
| 291 | -- (void)preLoadedPageView:(UIView*)view index:(NSInteger)index{ | ||
| 292 | - | ||
| 293 | - MHPage *page = [[MHPage alloc] init]; | ||
| 294 | - page.index = index; | ||
| 295 | - page.view = view; | ||
| 296 | - [_recycledPages addObject:page]; | ||
| 297 | - | ||
| 298 | -} | ||
| 299 | - | ||
| 300 | -- (void)refreshPage | ||
| 301 | -{ | ||
| 302 | - [_pagingDelegate pagingScrollView:self pageForIndex:0]; | ||
| 303 | -} | ||
| 304 | - | ||
| 305 | -@end | ||
| 306 | \ No newline at end of file | 0 | \ No newline at end of file |
LiveVideoCloud/Classes/SDK/V8HorizontalPickerView/V8HorizontalPickerView.h deleted
100755 → 0
| 1 | -// | ||
| 2 | -// V8HorizontalPickerView.h | ||
| 3 | -// | ||
| 4 | -// Created by Shawn Veader on 9/17/10. | ||
| 5 | -// Copyright 2010 V8 Labs, LLC. All rights reserved. | ||
| 6 | -// | ||
| 7 | - | ||
| 8 | -#import <UIKit/UIKit.h> | ||
| 9 | -#import "V8HorizontalPickerViewProtocol.h" | ||
| 10 | - | ||
| 11 | -@interface V8HorizontalPickerView : UIView <UIScrollViewDelegate> { } | ||
| 12 | - | ||
| 13 | -// delegate and datasources to feed scroll view. this view only maintains a weak reference to these | ||
| 14 | -@property (nonatomic, assign) id <V8HorizontalPickerViewDataSource> dataSource; | ||
| 15 | -@property (nonatomic, assign) id <V8HorizontalPickerViewDelegate> delegate; | ||
| 16 | - | ||
| 17 | -@property (nonatomic, readonly) NSInteger numberOfElements; | ||
| 18 | -@property (nonatomic, readonly) NSInteger currentSelectedIndex; | ||
| 19 | - | ||
| 20 | -// what font to use for the element labels? | ||
| 21 | -@property (nonatomic, retain) UIFont *elementFont; | ||
| 22 | - | ||
| 23 | -// color of labels used in picker | ||
| 24 | -@property (nonatomic, retain) UIColor *textColor; | ||
| 25 | -@property (nonatomic, retain) UIColor *selectedTextColor; // color of current selected element | ||
| 26 | - | ||
| 27 | -// select bg image | ||
| 28 | -@property (nonatomic, retain) UIImage *currentBgImage; | ||
| 29 | -@property (nonatomic, retain) NSString *isChatRoom; | ||
| 30 | - | ||
| 31 | -// views to display on edges of picker (eg: gradients, etc) | ||
| 32 | -@property (nonatomic, retain) UIView *leftEdgeView; | ||
| 33 | -@property (nonatomic, retain) UIView *rightEdgeView; | ||
| 34 | - | ||
| 35 | -// views for left and right of scrolling area | ||
| 36 | -@property (nonatomic, retain) UIView *leftScrollEdgeView; | ||
| 37 | -@property (nonatomic, retain) UIView *rightScrollEdgeView; | ||
| 38 | - | ||
| 39 | -// padding for left/right scroll edge views | ||
| 40 | -@property (nonatomic, assign) CGFloat scrollEdgeViewPadding; | ||
| 41 | - | ||
| 42 | -@property (nonatomic, assign) NSInteger elementPadding; | ||
| 43 | -@property (nonatomic, retain) UIScrollView *scrollView; | ||
| 44 | -@property (nonatomic, retain) NSMutableArray *elementWidths; | ||
| 45 | - | ||
| 46 | -@property (nonatomic, assign) BOOL clickElementEnable; | ||
| 47 | - | ||
| 48 | -@property (nonatomic, assign) BOOL plugins; | ||
| 49 | -@property (nonatomic, assign) BOOL myVideos; | ||
| 50 | -@property (nonatomic, assign) BOOL home; | ||
| 51 | - | ||
| 52 | -- (id)initWithFrame:(CGRect)frame plugins:(BOOL)plugins myVideos:(BOOL)myVideos; | ||
| 53 | -- (id)initWithFrame:(CGRect)frame home:(BOOL)home; | ||
| 54 | - | ||
| 55 | -- (void)reloadData; | ||
| 56 | -- (void)scrollToElement:(NSInteger)index animated:(BOOL)animate; | ||
| 57 | -@end | ||
| 58 | - | ||
| 59 | -// sub-class of UILabel that knows how to change it's state | ||
| 60 | -@interface V8HorizontalPickerLabel : UILabel <V8HorizontalPickerElementState> { } | ||
| 61 | - | ||
| 62 | -@property (nonatomic, assign) BOOL selectedElement; | ||
| 63 | -@property (nonatomic, retain) UIColor *selectedStateColor; | ||
| 64 | -@property (nonatomic, retain) UIColor *normalStateColor; | ||
| 65 | - | ||
| 66 | -@end |
LiveVideoCloud/Classes/SDK/V8HorizontalPickerView/V8HorizontalPickerView.m deleted
100755 → 0
| 1 | -// | ||
| 2 | -// V8HorizontalPickerView.m | ||
| 3 | -// | ||
| 4 | -// Created by Shawn Veader on 9/17/10. | ||
| 5 | -// Copyright 2010 V8 Labs, LLC. All rights reserved. | ||
| 6 | -// | ||
| 7 | - | ||
| 8 | -#import "V8HorizontalPickerView.h" | ||
| 9 | - | ||
| 10 | -#define CurrentBgTag 9999 | ||
| 11 | - | ||
| 12 | -#pragma mark - Internal Method Interface | ||
| 13 | -@interface V8HorizontalPickerView () { | ||
| 14 | - UIScrollView *_scrollView; | ||
| 15 | - UIView *_currentBg; | ||
| 16 | - | ||
| 17 | - // collection of widths of each element. | ||
| 18 | - NSMutableArray *_elementWidths; | ||
| 19 | - | ||
| 20 | - // state keepers | ||
| 21 | - BOOL dataHasBeenLoaded; | ||
| 22 | - BOOL scrollSizeHasBeenSet; | ||
| 23 | - | ||
| 24 | - // keep track of which elements are visible for tiling | ||
| 25 | - int firstVisibleElement; | ||
| 26 | - int lastVisibleElement; | ||
| 27 | - | ||
| 28 | - NSMutableArray *_lineArray; | ||
| 29 | - BOOL _reload; | ||
| 30 | -} | ||
| 31 | - | ||
| 32 | -@end | ||
| 33 | - | ||
| 34 | - | ||
| 35 | -#pragma mark - Implementation | ||
| 36 | -@implementation V8HorizontalPickerView : UIView | ||
| 37 | - | ||
| 38 | -@synthesize dataSource, delegate; | ||
| 39 | -@synthesize numberOfElements, currentSelectedIndex; // readonly | ||
| 40 | -@synthesize elementFont, textColor, selectedTextColor, currentBgImage; | ||
| 41 | -@synthesize leftEdgeView, rightEdgeView; | ||
| 42 | -@synthesize leftScrollEdgeView, rightScrollEdgeView, scrollEdgeViewPadding,elementPadding; | ||
| 43 | - | ||
| 44 | -#pragma mark - Init/Dealloc | ||
| 45 | -- (id)initWithFrame:(CGRect)frame { | ||
| 46 | - if ((self = [super initWithFrame:frame])) { | ||
| 47 | - _elementWidths = [[NSMutableArray array] retain]; | ||
| 48 | - _lineArray = [[NSMutableArray array] retain]; | ||
| 49 | - | ||
| 50 | - [self addScrollView]; | ||
| 51 | - | ||
| 52 | - self.textColor = [UIColor blackColor]; | ||
| 53 | - self.elementFont = [UIFont systemFontOfSize:12.0f]; | ||
| 54 | - | ||
| 55 | - currentSelectedIndex = -1; // nothing is selected yet | ||
| 56 | - | ||
| 57 | - numberOfElements = 0; | ||
| 58 | - elementPadding = 8; | ||
| 59 | - dataHasBeenLoaded = NO; | ||
| 60 | - scrollSizeHasBeenSet = NO; | ||
| 61 | - | ||
| 62 | - firstVisibleElement = -1; | ||
| 63 | - lastVisibleElement = -1; | ||
| 64 | - | ||
| 65 | - scrollEdgeViewPadding = 0.0f; | ||
| 66 | - | ||
| 67 | - self.autoresizesSubviews = YES; | ||
| 68 | - _reload = NO; | ||
| 69 | - self.clickElementEnable = YES; | ||
| 70 | - } | ||
| 71 | - return self; | ||
| 72 | -} | ||
| 73 | - | ||
| 74 | -- (id)initWithFrame:(CGRect)frame plugins:(BOOL)plugins myVideos:(BOOL)myVideos | ||
| 75 | -{ | ||
| 76 | - if ((self = [super initWithFrame:frame])) { | ||
| 77 | - _plugins = plugins; | ||
| 78 | - _myVideos = myVideos; | ||
| 79 | - _elementWidths = [[NSMutableArray array] retain]; | ||
| 80 | - _lineArray = [[NSMutableArray array] retain]; | ||
| 81 | - | ||
| 82 | - [self addScrollView]; | ||
| 83 | - | ||
| 84 | - self.textColor = [UIColor blackColor]; | ||
| 85 | - self.elementFont = [UIFont systemFontOfSize:12.0f]; | ||
| 86 | - | ||
| 87 | - currentSelectedIndex = -1; // nothing is selected yet | ||
| 88 | - | ||
| 89 | - numberOfElements = 0; | ||
| 90 | - elementPadding = 8; | ||
| 91 | - dataHasBeenLoaded = NO; | ||
| 92 | - scrollSizeHasBeenSet = NO; | ||
| 93 | - | ||
| 94 | - firstVisibleElement = -1; | ||
| 95 | - lastVisibleElement = -1; | ||
| 96 | - | ||
| 97 | - scrollEdgeViewPadding = 0.0f; | ||
| 98 | - | ||
| 99 | - self.autoresizesSubviews = YES; | ||
| 100 | - _reload = NO; | ||
| 101 | - self.clickElementEnable = YES; | ||
| 102 | - } | ||
| 103 | - return self; | ||
| 104 | -} | ||
| 105 | - | ||
| 106 | -- (id)initWithFrame:(CGRect)frame home:(BOOL)home | ||
| 107 | -{ | ||
| 108 | - if ((self = [super initWithFrame:frame])) { | ||
| 109 | - | ||
| 110 | - _home = home; | ||
| 111 | - | ||
| 112 | - _elementWidths = [[NSMutableArray array] retain]; | ||
| 113 | - _lineArray = [[NSMutableArray array] retain]; | ||
| 114 | - | ||
| 115 | - [self addScrollView]; | ||
| 116 | - | ||
| 117 | - self.textColor = [UIColor blackColor]; | ||
| 118 | - self.elementFont = [UIFont systemFontOfSize:12.0f]; | ||
| 119 | - | ||
| 120 | - currentSelectedIndex = -1; // nothing is selected yet | ||
| 121 | - | ||
| 122 | - numberOfElements = 0; | ||
| 123 | - elementPadding = 8; | ||
| 124 | - dataHasBeenLoaded = NO; | ||
| 125 | - scrollSizeHasBeenSet = NO; | ||
| 126 | - | ||
| 127 | - firstVisibleElement = -1; | ||
| 128 | - lastVisibleElement = -1; | ||
| 129 | - | ||
| 130 | - scrollEdgeViewPadding = 0.0f; | ||
| 131 | - | ||
| 132 | - self.autoresizesSubviews = YES; | ||
| 133 | - _reload = NO; | ||
| 134 | - self.clickElementEnable = YES; | ||
| 135 | - } | ||
| 136 | - return self; | ||
| 137 | -} | ||
| 138 | - | ||
| 139 | -- (void)dealloc { | ||
| 140 | - _scrollView.delegate = nil; | ||
| 141 | - | ||
| 142 | - [_lineArray release]; | ||
| 143 | - [_scrollView release]; | ||
| 144 | - [_elementWidths release]; | ||
| 145 | - [elementFont release]; | ||
| 146 | - [leftEdgeView release]; | ||
| 147 | - [rightEdgeView release]; | ||
| 148 | - | ||
| 149 | - [leftScrollEdgeView release]; | ||
| 150 | - [rightScrollEdgeView release]; | ||
| 151 | - | ||
| 152 | - [textColor release]; | ||
| 153 | - [_currentBg release]; | ||
| 154 | - [super dealloc]; | ||
| 155 | -} | ||
| 156 | - | ||
| 157 | - | ||
| 158 | -#pragma mark - LayoutSubViews | ||
| 159 | -- (void)layoutSubviews { | ||
| 160 | - [super layoutSubviews]; | ||
| 161 | - | ||
| 162 | -// if (!(_isChatRoom && [_isChatRoom isEqualToString:@"yes"])) { | ||
| 163 | -// if (![self viewWithTag:1110]) { | ||
| 164 | -// UIView *line = [[UIView alloc] initWithFrame:CGRectMake(0, self.frame.size.height-0.5, self.frame.size.width, 0.5)]; | ||
| 165 | -// line.tag = 1110; | ||
| 166 | -// [self addSubview:line]; | ||
| 167 | -// line.backgroundColor = [Tools colorWithHexString:@"#d5d5d5"]; | ||
| 168 | -// [line release]; | ||
| 169 | -// } | ||
| 170 | -// } | ||
| 171 | - | ||
| 172 | - BOOL adjustWhenFinished = NO; | ||
| 173 | - | ||
| 174 | - if (!dataHasBeenLoaded) { | ||
| 175 | - [self collectData]; | ||
| 176 | - } | ||
| 177 | - if (!scrollSizeHasBeenSet) { | ||
| 178 | - adjustWhenFinished = YES; | ||
| 179 | - [self setTotalWidthOfScrollContent]; | ||
| 180 | - } | ||
| 181 | - | ||
| 182 | - SEL titleForElementSelector = @selector(horizontalPickerView:titleForElementAtIndex:); | ||
| 183 | - SEL viewForElementSelector = @selector(horizontalPickerView:viewForElementAtIndex:); | ||
| 184 | - SEL setSelectedSelector = @selector(setSelectedElement:); | ||
| 185 | - | ||
| 186 | - CGRect visibleBounds = [self bounds]; | ||
| 187 | - CGRect scaledViewFrame = CGRectZero; | ||
| 188 | - | ||
| 189 | - // remove any subviews that are no longer visible | ||
| 190 | - for (UIView *view in [_scrollView subviews]) { | ||
| 191 | - scaledViewFrame = [_scrollView convertRect:[view frame] toView:self]; | ||
| 192 | - | ||
| 193 | - // if the view doesn't intersect, it's not visible, so we can recycle it | ||
| 194 | - if (view.tag!=CurrentBgTag&&!CGRectIntersectsRect(scaledViewFrame, visibleBounds)) { | ||
| 195 | - [view removeFromSuperview]; | ||
| 196 | - }else { // if it is still visible, update it's selected state | ||
| 197 | - if ([view respondsToSelector:setSelectedSelector]) { | ||
| 198 | - // view's tag is it's index | ||
| 199 | - BOOL isSelected = (currentSelectedIndex == [self indexForElement:view]); | ||
| 200 | - // casting to V8HorizontalPickerLabel so we can call this without all the NSInvocation jazz | ||
| 201 | - [(V8HorizontalPickerLabel *)view setSelectedElement:isSelected]; | ||
| 202 | - } else { | ||
| 203 | - for (UIView *view1 in [view subviews]) { | ||
| 204 | - if ([view1 respondsToSelector:setSelectedSelector]) { | ||
| 205 | - // view's tag is it's index | ||
| 206 | - BOOL isSelected = (currentSelectedIndex == view1.tag-100); | ||
| 207 | - // casting to V8HorizontalPickerLabel so we can call this without all the NSInvocation jazz | ||
| 208 | - [(V8HorizontalPickerLabel *)view1 setSelectedElement:isSelected]; | ||
| 209 | - } | ||
| 210 | - } | ||
| 211 | - } | ||
| 212 | - } | ||
| 213 | - } | ||
| 214 | - | ||
| 215 | - // find needed elements by looking at left and right edges of frame | ||
| 216 | - CGPoint offset = _scrollView.contentOffset; | ||
| 217 | - int firstNeededElement = [self nearestElementToPoint:CGPointMake(offset.x, 0.0f)]; | ||
| 218 | - int lastNeededElement = [self nearestElementToPoint:CGPointMake(offset.x + visibleBounds.size.width, 0.0f)]; | ||
| 219 | - | ||
| 220 | - // add any views that have become visible | ||
| 221 | - UIView *view = nil; | ||
| 222 | - CGRect tmpViewFrame = CGRectZero; | ||
| 223 | - CGPoint itemViewCenter = CGPointZero; | ||
| 224 | - for (int i = firstNeededElement; i <= lastNeededElement; i++) { | ||
| 225 | - view = nil; // paranoia | ||
| 226 | - view = [_scrollView viewWithTag:[self tagForElementAtIndex:i]]; | ||
| 227 | - if (!view) { | ||
| 228 | - if (i < numberOfElements) { // make sure we are not requesting data out of range | ||
| 229 | - if (self.delegate && [self.delegate respondsToSelector:titleForElementSelector]) { | ||
| 230 | - NSString *title = [self.delegate horizontalPickerView:self titleForElementAtIndex:i]; | ||
| 231 | - view = [self labelForForElementAtIndex:i withTitle:title]; | ||
| 232 | - } else if (self.delegate && [self.delegate respondsToSelector:viewForElementSelector]) { | ||
| 233 | - view = [self.delegate horizontalPickerView:self viewForElementAtIndex:i]; | ||
| 234 | - // move view's center to the center of item's ideal frame | ||
| 235 | - tmpViewFrame = [self frameForElementAtIndex:i currentBg:NO]; | ||
| 236 | - itemViewCenter = CGPointMake((tmpViewFrame.size.width / 2.0f) + tmpViewFrame.origin.x, (tmpViewFrame.size.height / 2.0f)); | ||
| 237 | - view.center = itemViewCenter; | ||
| 238 | - } | ||
| 239 | - | ||
| 240 | - if (view) { | ||
| 241 | - // use the index as the tag so we can find it later | ||
| 242 | - view.tag = [self tagForElementAtIndex:i]; | ||
| 243 | - | ||
| 244 | - [_scrollView addSubview:view]; | ||
| 245 | - } | ||
| 246 | - } | ||
| 247 | - } | ||
| 248 | - } | ||
| 249 | - | ||
| 250 | - // add the left or right edge views if visible | ||
| 251 | - CGRect viewFrame = CGRectZero; | ||
| 252 | - if (leftScrollEdgeView) { | ||
| 253 | - viewFrame = [self frameForLeftScrollEdgeView]; | ||
| 254 | - scaledViewFrame = [_scrollView convertRect:viewFrame toView:self]; | ||
| 255 | - if (CGRectIntersectsRect(scaledViewFrame, visibleBounds) && ![leftScrollEdgeView isDescendantOfView:_scrollView]) { | ||
| 256 | - leftScrollEdgeView.frame = viewFrame; | ||
| 257 | - [_scrollView addSubview:leftScrollEdgeView]; | ||
| 258 | - } | ||
| 259 | - } | ||
| 260 | - if (rightScrollEdgeView) { | ||
| 261 | - viewFrame = [self frameForRightScrollEdgeView]; | ||
| 262 | - scaledViewFrame = [_scrollView convertRect:viewFrame toView:self]; | ||
| 263 | - if (CGRectIntersectsRect(scaledViewFrame, visibleBounds) && ![rightScrollEdgeView isDescendantOfView:_scrollView]) { | ||
| 264 | - rightScrollEdgeView.frame = viewFrame; | ||
| 265 | - [_scrollView addSubview:rightScrollEdgeView]; | ||
| 266 | - } | ||
| 267 | - } | ||
| 268 | - | ||
| 269 | - // save off what's visible now | ||
| 270 | - firstVisibleElement = firstNeededElement; | ||
| 271 | - lastVisibleElement = lastNeededElement; | ||
| 272 | - | ||
| 273 | - // determine if scroll view needs to shift in response to resizing? | ||
| 274 | - if (currentSelectedIndex > -1 && adjustWhenFinished) { | ||
| 275 | - [self scrollToElement:currentSelectedIndex animated:NO]; | ||
| 276 | - } | ||
| 277 | - | ||
| 278 | - if (_reload) { | ||
| 279 | - for (UIView *view in _lineArray) { | ||
| 280 | - [view removeFromSuperview]; | ||
| 281 | - } | ||
| 282 | - [_lineArray removeAllObjects]; | ||
| 283 | - } | ||
| 284 | - | ||
| 285 | -// if (_lineArray.count == 0) { | ||
| 286 | -// int x = 0; | ||
| 287 | -// int i = 0; | ||
| 288 | -// for (NSNumber *number in _elementWidths) { | ||
| 289 | -// if (i < _elementWidths.count-1) { | ||
| 290 | -// NSInteger width = [number integerValue]; | ||
| 291 | -// x += width; | ||
| 292 | -// UIView *line = [[UIView alloc] initWithFrame:CGRectMake(x+8*i+3, (self.bounds.size.height-15)/2, 0.5, 15)]; | ||
| 293 | -// line.backgroundColor = [Tools colorWithHexString:@"#d5d5d5"]; | ||
| 294 | -// if (_isChatRoom && [_isChatRoom isEqualToString:@"yes"]) { | ||
| 295 | -// line.backgroundColor = [UIColor whiteColor]; | ||
| 296 | -// } | ||
| 297 | -// [_lineArray addObject:line]; | ||
| 298 | -// [line release]; | ||
| 299 | -// } | ||
| 300 | -// i++; | ||
| 301 | -// } | ||
| 302 | -// if (_lineArray.count != 0) { | ||
| 303 | -// _reload = NO; | ||
| 304 | -// [self setNeedsLayout]; | ||
| 305 | -// } | ||
| 306 | -// } else { | ||
| 307 | -// for (UIView *view in _lineArray) { | ||
| 308 | -// if (view.superview == nil) { | ||
| 309 | -// [_scrollView addSubview:view]; | ||
| 310 | -// } | ||
| 311 | -// } | ||
| 312 | -// } | ||
| 313 | - | ||
| 314 | -} | ||
| 315 | - | ||
| 316 | - | ||
| 317 | -#pragma mark - Getters and Setters | ||
| 318 | -- (void)setDelegate:(id)newDelegate { | ||
| 319 | - if (delegate != newDelegate) { | ||
| 320 | - delegate = newDelegate; | ||
| 321 | - [self collectData]; | ||
| 322 | - } | ||
| 323 | -} | ||
| 324 | - | ||
| 325 | -- (void)setDataSource:(id)newDataSource { | ||
| 326 | - if (dataSource != newDataSource) { | ||
| 327 | - dataSource = newDataSource; | ||
| 328 | - [self collectData]; | ||
| 329 | - } | ||
| 330 | -} | ||
| 331 | - | ||
| 332 | -// allow the setting of this views background color to change the scroll view | ||
| 333 | -- (void)setBackgroundColor:(UIColor *)newColor { | ||
| 334 | - [super setBackgroundColor:newColor]; | ||
| 335 | - _scrollView.backgroundColor = newColor; | ||
| 336 | - // TODO: set all subviews as well? | ||
| 337 | -} | ||
| 338 | - | ||
| 339 | -- (void)setLeftEdgeView:(UIView *)leftView { | ||
| 340 | - if (leftEdgeView != leftView) { | ||
| 341 | - if (leftEdgeView) { | ||
| 342 | - [leftEdgeView removeFromSuperview]; | ||
| 343 | - [leftEdgeView release]; | ||
| 344 | - } | ||
| 345 | - leftEdgeView = [leftView retain]; | ||
| 346 | - | ||
| 347 | - CGRect tmpFrame = leftEdgeView.frame; | ||
| 348 | - tmpFrame.origin.x = 0.0f; | ||
| 349 | - tmpFrame.origin.y = 0.0f; | ||
| 350 | - leftEdgeView.frame = tmpFrame; | ||
| 351 | - [self addSubview:leftEdgeView]; | ||
| 352 | - } | ||
| 353 | -} | ||
| 354 | - | ||
| 355 | -- (void)setRightEdgeView:(UIView *)rightView { | ||
| 356 | - if (rightEdgeView != rightView) { | ||
| 357 | - if (rightEdgeView) { | ||
| 358 | - [rightEdgeView removeFromSuperview]; | ||
| 359 | - [rightEdgeView release]; | ||
| 360 | - } | ||
| 361 | - rightEdgeView = [rightView retain]; | ||
| 362 | - | ||
| 363 | - CGRect tmpFrame = rightEdgeView.frame; | ||
| 364 | - tmpFrame.origin.x = self.frame.size.width - tmpFrame.size.width; | ||
| 365 | - tmpFrame.origin.y = 0.0f; | ||
| 366 | - rightEdgeView.frame = tmpFrame; | ||
| 367 | - [self addSubview:rightEdgeView]; | ||
| 368 | - } | ||
| 369 | -} | ||
| 370 | - | ||
| 371 | -- (void)setLeftScrollEdgeView:(UIView *)leftView { | ||
| 372 | - if (leftScrollEdgeView != leftView) { | ||
| 373 | - if (leftScrollEdgeView) { | ||
| 374 | - [leftScrollEdgeView removeFromSuperview]; | ||
| 375 | - [leftScrollEdgeView release]; | ||
| 376 | - } | ||
| 377 | - leftScrollEdgeView = [leftView retain]; | ||
| 378 | - | ||
| 379 | - scrollSizeHasBeenSet = NO; | ||
| 380 | - [self setNeedsLayout]; | ||
| 381 | - } | ||
| 382 | -} | ||
| 383 | - | ||
| 384 | -- (void)setRightScrollEdgeView:(UIView *)rightView { | ||
| 385 | - if (rightScrollEdgeView != rightView) { | ||
| 386 | - if (rightScrollEdgeView) { | ||
| 387 | - [rightScrollEdgeView removeFromSuperview]; | ||
| 388 | - [rightScrollEdgeView release]; | ||
| 389 | - } | ||
| 390 | - rightScrollEdgeView = [rightView retain]; | ||
| 391 | - | ||
| 392 | - scrollSizeHasBeenSet = NO; | ||
| 393 | - [self setNeedsLayout]; | ||
| 394 | - } | ||
| 395 | -} | ||
| 396 | - | ||
| 397 | -- (void)setFrame:(CGRect)newFrame { | ||
| 398 | - if (!CGRectEqualToRect(self.frame, newFrame)) { | ||
| 399 | - // causes recalulation of offsets, etc based on new size | ||
| 400 | - scrollSizeHasBeenSet = NO; | ||
| 401 | - } | ||
| 402 | - [super setFrame:newFrame]; | ||
| 403 | -} | ||
| 404 | - | ||
| 405 | -- (void)setCurrentBgImage:(UIImage *)bgImage{ | ||
| 406 | - if (currentBgImage != bgImage) { | ||
| 407 | - if (currentBgImage) { | ||
| 408 | - [currentBgImage release]; | ||
| 409 | - } | ||
| 410 | - currentBgImage = [bgImage retain]; | ||
| 411 | - | ||
| 412 | - if (_currentBg) { | ||
| 413 | - if (_isChatRoom && [_isChatRoom isEqualToString:@"yes"]) { | ||
| 414 | - | ||
| 415 | - CGFloat y = self.plugins ? (self.bounds.size.height-27)/2 : self.height - 4; | ||
| 416 | - CGFloat height = self.plugins ? 27 : 4; | ||
| 417 | - _currentBg.frame = CGRectMake(0, y, 0, height); | ||
| 418 | - _currentBg.backgroundColor = [UIColor whiteColor]; | ||
| 419 | - } | ||
| 420 | - } | ||
| 421 | - } | ||
| 422 | -} | ||
| 423 | - | ||
| 424 | -#pragma mark - Data Fetching Methods | ||
| 425 | -- (void)reloadData { | ||
| 426 | - // remove all scrollview subviews and "recycle" them | ||
| 427 | - for (UIView *view in [_scrollView subviews]) { | ||
| 428 | - if (view.tag==CurrentBgTag) { | ||
| 429 | - view.frame = CGRectZero; | ||
| 430 | - continue; | ||
| 431 | - } | ||
| 432 | - [view removeFromSuperview]; | ||
| 433 | - } | ||
| 434 | - _reload = YES; | ||
| 435 | - firstVisibleElement = NSIntegerMax; | ||
| 436 | - lastVisibleElement = NSIntegerMin; | ||
| 437 | - | ||
| 438 | - [self collectData]; | ||
| 439 | -} | ||
| 440 | - | ||
| 441 | -- (void)collectData { | ||
| 442 | - scrollSizeHasBeenSet = NO; | ||
| 443 | - dataHasBeenLoaded = NO; | ||
| 444 | - | ||
| 445 | - [self getNumberOfElementsFromDataSource]; | ||
| 446 | - [self getElementWidthsFromDelegate]; | ||
| 447 | - [self setTotalWidthOfScrollContent]; | ||
| 448 | - | ||
| 449 | - dataHasBeenLoaded = YES; | ||
| 450 | - [self setNeedsLayout]; | ||
| 451 | - | ||
| 452 | - [self scrollToElement:currentSelectedIndex animated:NO]; | ||
| 453 | -} | ||
| 454 | - | ||
| 455 | - | ||
| 456 | -#pragma mark - Scroll To Element Method | ||
| 457 | -- (void)scrollToElement:(NSInteger)index animated:(BOOL)animate { | ||
| 458 | - if (numberOfElements < 1) { | ||
| 459 | - return ; | ||
| 460 | - }else if (index<0) { | ||
| 461 | - index = 0; | ||
| 462 | - }else if (index>numberOfElements-1) { | ||
| 463 | - index = numberOfElements-1; | ||
| 464 | - } | ||
| 465 | - | ||
| 466 | - currentSelectedIndex = index; | ||
| 467 | - | ||
| 468 | - [UIView beginAnimations:nil context:nil]; | ||
| 469 | - _currentBg.frame = [self frameForElementAtIndex:index currentBg:YES]; | ||
| 470 | - if (self.plugins) { | ||
| 471 | - _currentBg.frame = CGRectMake(_currentBg.frame.origin.x+(_currentBg.bounds.size.width-100)/2, (self.bounds.size.height-28)/2, 100, 28); | ||
| 472 | - } | ||
| 473 | -// _selectLine.frame = CGRectMake([self frameForElementAtIndex:index].origin.x, 35, [self frameForElementAtIndex:index].size.width, 2); | ||
| 474 | - [UIView commitAnimations]; | ||
| 475 | - | ||
| 476 | - int offsetX = [self offsetForElementAtIndex:index]; | ||
| 477 | - int width = [self widthOfElementAtIndex:index]; | ||
| 478 | - | ||
| 479 | - if (offsetX < _scrollView.contentOffset.x) { | ||
| 480 | - [_scrollView setContentOffset:CGPointMake(offsetX, 0) animated:animate]; | ||
| 481 | - }else if((offsetX+width) > (_scrollView.contentOffset.x+self.bounds.size.width)){ | ||
| 482 | - [_scrollView setContentOffset:CGPointMake((offsetX+width-self.bounds.size.width), 0) animated:animate]; | ||
| 483 | - } | ||
| 484 | - | ||
| 485 | - // notify delegate of the selected index | ||
| 486 | - SEL delegateCall = @selector(horizontalPickerView:didSelectElementAtIndex:); | ||
| 487 | - if (self.delegate && [self.delegate respondsToSelector:delegateCall]) { | ||
| 488 | - [self.delegate horizontalPickerView:self didSelectElementAtIndex:index]; | ||
| 489 | - } | ||
| 490 | - | ||
| 491 | -#if (__IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_4_3) | ||
| 492 | - [self setNeedsLayout]; | ||
| 493 | -#endif | ||
| 494 | -} | ||
| 495 | - | ||
| 496 | -#pragma mark - UIScrollViewDelegate Methods | ||
| 497 | -- (void)scrollViewDidScroll:(UIScrollView *)scrollView { | ||
| 498 | -#if (__IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_4_3) | ||
| 499 | - [self setNeedsLayout]; | ||
| 500 | -#endif | ||
| 501 | -} | ||
| 502 | - | ||
| 503 | -#pragma mark - View Creation Methods (Internal Methods) | ||
| 504 | -- (void)addScrollView { | ||
| 505 | - if (_scrollView == nil) { | ||
| 506 | - _scrollView = [[UIScrollView alloc] initWithFrame:self.bounds]; | ||
| 507 | - _scrollView.delegate = self; | ||
| 508 | - _scrollView.scrollEnabled = YES; | ||
| 509 | - _scrollView.scrollsToTop = NO; | ||
| 510 | - _scrollView.showsVerticalScrollIndicator = NO; | ||
| 511 | - _scrollView.showsHorizontalScrollIndicator = NO; | ||
| 512 | - _scrollView.bouncesZoom = NO; | ||
| 513 | - _scrollView.alwaysBounceHorizontal = YES; | ||
| 514 | - _scrollView.alwaysBounceVertical = NO; | ||
| 515 | - _scrollView.minimumZoomScale = 1.0; // setting min/max the same disables zooming | ||
| 516 | - _scrollView.maximumZoomScale = 1.0; | ||
| 517 | - _scrollView.contentInset = UIEdgeInsetsZero; | ||
| 518 | - _scrollView.decelerationRate = 0.1; //UIScrollViewDecelerationRateNormal; | ||
| 519 | - _scrollView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; | ||
| 520 | - _scrollView.autoresizesSubviews = YES; | ||
| 521 | - | ||
| 522 | - UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(scrollViewTapped:)]; | ||
| 523 | - [_scrollView addGestureRecognizer:tapRecognizer]; | ||
| 524 | - [tapRecognizer release]; | ||
| 525 | - | ||
| 526 | - if (self.plugins || self.myVideos || self.home) { | ||
| 527 | - | ||
| 528 | - CGFloat y = self.plugins ? (self.bounds.size.height-27)/2 : self.height - 4; | ||
| 529 | - CGFloat height = self.plugins ? 27 : 4; | ||
| 530 | - | ||
| 531 | - _currentBg = [[UIImageView alloc]init]; | ||
| 532 | - _currentBg = [[UIView alloc] initWithFrame:CGRectMake(0, y, 0, height)]; | ||
| 533 | - _currentBg.tag = CurrentBgTag; | ||
| 534 | - _currentBg.backgroundColor = self.plugins ? [UIColor colorWithHexString:@"#fff100"] : [UIColor yellowColorCNLive]; | ||
| 535 | - _currentBg.layer.borderColor = [UIColor colorWithHexString:@"#f6e80e"].CGColor; | ||
| 536 | - _currentBg.layer.borderWidth = 0.5; | ||
| 537 | - | ||
| 538 | - if (self.plugins) { | ||
| 539 | - _currentBg.layer.cornerRadius = 13.5; | ||
| 540 | - _currentBg.layer.masksToBounds = YES; | ||
| 541 | - | ||
| 542 | - } | ||
| 543 | - [_scrollView addSubview:_currentBg]; | ||
| 544 | - } | ||
| 545 | - | ||
| 546 | - [self addSubview:_scrollView]; | ||
| 547 | - | ||
| 548 | - } | ||
| 549 | -} | ||
| 550 | - | ||
| 551 | -// create a UILabel for this element. | ||
| 552 | -- (V8HorizontalPickerLabel *)labelForForElementAtIndex:(NSInteger)index withTitle:(NSString *)title { | ||
| 553 | - CGRect labelFrame = [self frameForElementAtIndex:index currentBg:NO]; | ||
| 554 | - V8HorizontalPickerLabel *elementLabel = [[V8HorizontalPickerLabel alloc] initWithFrame:labelFrame]; | ||
| 555 | - | ||
| 556 | - elementLabel.textAlignment = NSTextAlignmentCenter; | ||
| 557 | - elementLabel.backgroundColor = [UIColor clearColor]; | ||
| 558 | - elementLabel.text = title; | ||
| 559 | - elementLabel.font = self.elementFont; | ||
| 560 | - | ||
| 561 | - elementLabel.normalStateColor = self.textColor; | ||
| 562 | - elementLabel.selectedStateColor = self.selectedTextColor; | ||
| 563 | - | ||
| 564 | - elementLabel.selectedElement = (currentSelectedIndex == index); | ||
| 565 | - | ||
| 566 | - return [elementLabel autorelease]; | ||
| 567 | -} | ||
| 568 | - | ||
| 569 | - | ||
| 570 | -#pragma mark - DataSource Calling Method (Internal Method) | ||
| 571 | -- (void)getNumberOfElementsFromDataSource { | ||
| 572 | - SEL dataSourceCall = @selector(numberOfElementsInHorizontalPickerView:); | ||
| 573 | - if (self.dataSource && [self.dataSource respondsToSelector:dataSourceCall]) { | ||
| 574 | - numberOfElements = [self.dataSource numberOfElementsInHorizontalPickerView:self]; | ||
| 575 | - } else { | ||
| 576 | - numberOfElements = 0; | ||
| 577 | - } | ||
| 578 | -} | ||
| 579 | - | ||
| 580 | - | ||
| 581 | -#pragma mark - Delegate Calling Method (Internal Method) | ||
| 582 | -- (void)getElementWidthsFromDelegate { | ||
| 583 | - SEL delegateCall = @selector(horizontalPickerView:widthForElementAtIndex:); | ||
| 584 | - [_elementWidths removeAllObjects]; | ||
| 585 | - for (int i = 0; i < numberOfElements; i++) { | ||
| 586 | - if (self.delegate && [self.delegate respondsToSelector:delegateCall]) { | ||
| 587 | - NSInteger width = [self.delegate horizontalPickerView:self widthForElementAtIndex:i]; | ||
| 588 | - [_elementWidths addObject:[NSNumber numberWithInteger:width]]; | ||
| 589 | - } | ||
| 590 | - } | ||
| 591 | - | ||
| 592 | -// int x = 0; | ||
| 593 | -// for (NSNumber *number in _elementWidths) { | ||
| 594 | -// NSInteger width = [number integerValue]; | ||
| 595 | -// x += width; | ||
| 596 | -// UIView *line = [[UIView alloc] initWithFrame:CGRectMake(x, 11, 1, 15)]; | ||
| 597 | -// [_scrollView addSubview:line]; | ||
| 598 | -//// line.backgroundColor = [Utility colorWithHexString:@"#d5d5d5"]; | ||
| 599 | -// line.backgroundColor = [UIColor redColor]; | ||
| 600 | -// [line release]; | ||
| 601 | -// } | ||
| 602 | - | ||
| 603 | -} | ||
| 604 | - | ||
| 605 | - | ||
| 606 | -#pragma mark - View Calculation and Manipulation Methods (Internal Methods) | ||
| 607 | -// what is the total width of the content area? | ||
| 608 | -- (void)setTotalWidthOfScrollContent { | ||
| 609 | - NSInteger totalWidth = 0; | ||
| 610 | - | ||
| 611 | - totalWidth += [self leftScrollEdgeWidth]; | ||
| 612 | - totalWidth += [self rightScrollEdgeWidth]; | ||
| 613 | - | ||
| 614 | - // sum the width of all elements | ||
| 615 | - for (NSNumber *width in _elementWidths) { | ||
| 616 | - totalWidth += [width intValue]; | ||
| 617 | - totalWidth += elementPadding; | ||
| 618 | - } | ||
| 619 | - // TODO: is this necessary? | ||
| 620 | - totalWidth -= elementPadding; // we add "one too many" in for loop | ||
| 621 | - | ||
| 622 | - if (_scrollView) { | ||
| 623 | - // create our scroll view as wide as all the elements to be included | ||
| 624 | - _scrollView.contentSize = CGSizeMake(totalWidth, self.bounds.size.height); | ||
| 625 | - scrollSizeHasBeenSet = YES; | ||
| 626 | - } | ||
| 627 | -} | ||
| 628 | - | ||
| 629 | -// what is the left-most edge of the element at the given index? | ||
| 630 | -- (NSInteger)offsetForElementAtIndex:(NSInteger)index { | ||
| 631 | - NSInteger offset = 0; | ||
| 632 | - if (index >= [_elementWidths count]) { | ||
| 633 | - return 0; | ||
| 634 | - } | ||
| 635 | - | ||
| 636 | - offset += [self leftScrollEdgeWidth]; | ||
| 637 | - | ||
| 638 | - for (int i = 0; i < index && i < [_elementWidths count]; i++) { | ||
| 639 | - offset += [[_elementWidths safetyObjectAtIndex:i] intValue]; | ||
| 640 | - offset += elementPadding; | ||
| 641 | - } | ||
| 642 | - return offset; | ||
| 643 | -} | ||
| 644 | - | ||
| 645 | -// return the tag for an element at a given index | ||
| 646 | -- (NSInteger)tagForElementAtIndex:(NSInteger)index { | ||
| 647 | - return (index + 1) * 10; | ||
| 648 | -} | ||
| 649 | - | ||
| 650 | -// return the index given an element's tag | ||
| 651 | -- (NSInteger)indexForElement:(UIView *)element { | ||
| 652 | - return (element.tag / 10) - 1; | ||
| 653 | -} | ||
| 654 | - | ||
| 655 | -// what is the width of the element at the given index? | ||
| 656 | -- (NSInteger)widthOfElementAtIndex:(NSInteger)index { | ||
| 657 | - return [[_elementWidths safetyObjectAtIndex:index] intValue]; | ||
| 658 | -} | ||
| 659 | - | ||
| 660 | -// what is the frame for the element at the given index? | ||
| 661 | -- (CGRect)frameForElementAtIndex:(NSInteger)index currentBg:(BOOL)flag { | ||
| 662 | - CGFloat width = 0.0f; | ||
| 663 | - if ([_elementWidths count] > index) { | ||
| 664 | - width = [[_elementWidths safetyObjectAtIndex:index] intValue]; | ||
| 665 | - } | ||
| 666 | - if (flag) { | ||
| 667 | - if (_isChatRoom && [_isChatRoom isEqualToString:@"yes"]) { | ||
| 668 | - return CGRectMake([self offsetForElementAtIndex:index]-5, self.bounds.size.height-28, width+8.5, 28); | ||
| 669 | - } | ||
| 670 | - CGFloat y = self.plugins ? (self.bounds.size.height-27)/2 : self.height -4; | ||
| 671 | - CGFloat height = self.plugins ? 27 : 4; | ||
| 672 | - if (self.home) { | ||
| 673 | - return CGRectMake([self offsetForElementAtIndex:index]+8, y, width-16, height); | ||
| 674 | - } | ||
| 675 | - return CGRectMake([self offsetForElementAtIndex:index], y, width, height); | ||
| 676 | - } else { | ||
| 677 | - return CGRectMake([self offsetForElementAtIndex:index], 0.0f, width, self.frame.size.height); | ||
| 678 | - } | ||
| 679 | -} | ||
| 680 | - | ||
| 681 | -// what is the frame for the left scroll edge view? | ||
| 682 | -- (CGRect)frameForLeftScrollEdgeView { | ||
| 683 | - if (leftScrollEdgeView) { | ||
| 684 | - CGFloat scrollHeight = _scrollView.contentSize.height; | ||
| 685 | - CGFloat viewHeight = leftScrollEdgeView.frame.size.height; | ||
| 686 | - return CGRectMake(0.0f, ((scrollHeight / 2.0f) - (viewHeight / 2.0f)), | ||
| 687 | - leftScrollEdgeView.frame.size.width, viewHeight); | ||
| 688 | - } else { | ||
| 689 | - return CGRectZero; | ||
| 690 | - } | ||
| 691 | -} | ||
| 692 | - | ||
| 693 | -// what is the width of the left edge of the scroll area? | ||
| 694 | -- (CGFloat)leftScrollEdgeWidth { | ||
| 695 | - if (leftScrollEdgeView) { | ||
| 696 | - CGFloat width = leftScrollEdgeView.frame.size.width; | ||
| 697 | - width += scrollEdgeViewPadding; | ||
| 698 | - return width; | ||
| 699 | - } | ||
| 700 | - return 0.0f; | ||
| 701 | -} | ||
| 702 | - | ||
| 703 | -// what is the frame for the right scroll edge view? | ||
| 704 | -- (CGRect)frameForRightScrollEdgeView { | ||
| 705 | - if (rightScrollEdgeView) { | ||
| 706 | - CGFloat scrollWidth = _scrollView.contentSize.width; | ||
| 707 | - CGFloat scrollHeight = _scrollView.contentSize.height; | ||
| 708 | - CGFloat viewWidth = rightScrollEdgeView.frame.size.width; | ||
| 709 | - CGFloat viewHeight = rightScrollEdgeView.frame.size.height; | ||
| 710 | - return CGRectMake(scrollWidth - viewWidth, ((scrollHeight / 2.0f) - (viewHeight / 2.0f)), | ||
| 711 | - viewWidth, viewHeight); | ||
| 712 | - } else { | ||
| 713 | - return CGRectZero; | ||
| 714 | - } | ||
| 715 | -} | ||
| 716 | - | ||
| 717 | -// what is the width of the right edge of the scroll area? | ||
| 718 | -- (CGFloat)rightScrollEdgeWidth { | ||
| 719 | - if (rightScrollEdgeView) { | ||
| 720 | - CGFloat width = rightScrollEdgeView.frame.size.width; | ||
| 721 | - width += scrollEdgeViewPadding; | ||
| 722 | - return width; | ||
| 723 | - } | ||
| 724 | - return 0.0f; | ||
| 725 | -} | ||
| 726 | - | ||
| 727 | -// what is the element nearest to the given point? | ||
| 728 | -- (NSInteger)nearestElementToPoint:(CGPoint)point { | ||
| 729 | - for (int i = 0; i < numberOfElements; i++) { | ||
| 730 | - CGRect frame = [self frameForElementAtIndex:i currentBg:NO]; | ||
| 731 | - if (CGRectContainsPoint(frame, point)) { | ||
| 732 | - return i; | ||
| 733 | - } else if (point.x < frame.origin.x) { | ||
| 734 | - // if the center is before this element, go back to last one, | ||
| 735 | - // unless we're at the beginning | ||
| 736 | - if (i > 0) { | ||
| 737 | - return i - 1; | ||
| 738 | - } else { | ||
| 739 | - return 0; | ||
| 740 | - } | ||
| 741 | - break; | ||
| 742 | - } else if (point.x > frame.origin.y) { | ||
| 743 | - // if the center is past the last element, scroll to it | ||
| 744 | - if (i == numberOfElements - 1) { | ||
| 745 | - return i; | ||
| 746 | - } | ||
| 747 | - } | ||
| 748 | - } | ||
| 749 | - return 0; | ||
| 750 | -} | ||
| 751 | - | ||
| 752 | -// similar to nearestElementToPoint: however, this method does not look past beginning/end | ||
| 753 | -- (NSInteger)elementContainingPoint:(CGPoint)point { | ||
| 754 | - for (int i = 0; i < numberOfElements; i++) { | ||
| 755 | - CGRect frame = [self frameForElementAtIndex:i currentBg:NO]; | ||
| 756 | - if (CGRectContainsPoint(frame, point)) { | ||
| 757 | - return i; | ||
| 758 | - } | ||
| 759 | - } | ||
| 760 | - return -1; | ||
| 761 | -} | ||
| 762 | - | ||
| 763 | -#pragma mark - Tap Gesture Recognizer Handler Method | ||
| 764 | -// use the gesture recognizer to slide to element under tap | ||
| 765 | -- (void)scrollViewTapped:(UITapGestureRecognizer *)recognizer { | ||
| 766 | - if (!self.clickElementEnable) { | ||
| 767 | - return; | ||
| 768 | - } | ||
| 769 | - if (recognizer.state == UIGestureRecognizerStateRecognized) { | ||
| 770 | - CGPoint tapLocation = [recognizer locationInView:_scrollView]; | ||
| 771 | - NSInteger elementIndex = [self elementContainingPoint:tapLocation]; | ||
| 772 | - if (elementIndex != -1) { // point not in element | ||
| 773 | - [self scrollToElement:elementIndex animated:YES]; | ||
| 774 | - } | ||
| 775 | - } | ||
| 776 | -} | ||
| 777 | - | ||
| 778 | -@end | ||
| 779 | - | ||
| 780 | -// ------------------------------------------------------------------------ | ||
| 781 | -#pragma mark - Picker Label Implementation | ||
| 782 | -@implementation V8HorizontalPickerLabel : UILabel | ||
| 783 | - | ||
| 784 | -@synthesize selectedElement, selectedStateColor, normalStateColor; | ||
| 785 | - | ||
| 786 | -- (void)setSelectedElement:(BOOL)selected { | ||
| 787 | - if (selectedElement != selected) { | ||
| 788 | - if (selected) { | ||
| 789 | - self.textColor = self.selectedStateColor; | ||
| 790 | - } else { | ||
| 791 | - self.textColor = self.normalStateColor; | ||
| 792 | - } | ||
| 793 | - selectedElement = selected; | ||
| 794 | - [self setNeedsLayout]; | ||
| 795 | - } | ||
| 796 | -} | ||
| 797 | - | ||
| 798 | -- (void)setNormalStateColor:(UIColor *)color { | ||
| 799 | - if (normalStateColor != color) { | ||
| 800 | - [normalStateColor release]; | ||
| 801 | - normalStateColor = [color retain]; | ||
| 802 | - self.textColor = normalStateColor; | ||
| 803 | - [self setNeedsLayout]; | ||
| 804 | - } | ||
| 805 | -} | ||
| 806 | - | ||
| 807 | -@end |
LiveVideoCloud/Classes/SDK/V8HorizontalPickerView/V8HorizontalPickerViewProtocol.h deleted
100755 → 0
| 1 | -// | ||
| 2 | -// V8HorizontalPickerViewProtocol.h | ||
| 3 | -// | ||
| 4 | -// Created by Shawn Veader on 9/17/10. | ||
| 5 | -// Copyright 2010 V8 Labs, LLC. All rights reserved. | ||
| 6 | -// | ||
| 7 | - | ||
| 8 | -@class V8HorizontalPickerView; | ||
| 9 | - | ||
| 10 | -// ------------------------------------------------------------------ | ||
| 11 | -// V8HorizontalPickerView DataSource Protocol | ||
| 12 | -@protocol V8HorizontalPickerViewDataSource <NSObject> | ||
| 13 | -@required | ||
| 14 | -// data source is responsible for reporting how many elements there are | ||
| 15 | -- (NSInteger)numberOfElementsInHorizontalPickerView:(V8HorizontalPickerView *)picker; | ||
| 16 | -@end | ||
| 17 | - | ||
| 18 | - | ||
| 19 | -// ------------------------------------------------------------------ | ||
| 20 | -// V8HorizontalPickerView Delegate Protocol | ||
| 21 | -@protocol V8HorizontalPickerViewDelegate <NSObject> | ||
| 22 | - | ||
| 23 | -@optional | ||
| 24 | -// delegate callback to notify delegate selected element has changed | ||
| 25 | -- (void)horizontalPickerView:(V8HorizontalPickerView *)picker didSelectElementAtIndex:(NSInteger)index; | ||
| 26 | - | ||
| 27 | -// one of these two methods must be defined | ||
| 28 | -- (NSString *)horizontalPickerView:(V8HorizontalPickerView *)picker titleForElementAtIndex:(NSInteger)index; | ||
| 29 | -- (UIView *)horizontalPickerView:(V8HorizontalPickerView *)picker viewForElementAtIndex:(NSInteger)index; | ||
| 30 | -// any view returned from this must confirm to the V8HorizontalPickerElementState protocol | ||
| 31 | - | ||
| 32 | -@required | ||
| 33 | -// delegate is responsible for reporting the size of each element | ||
| 34 | -- (NSInteger)horizontalPickerView:(V8HorizontalPickerView *)picker widthForElementAtIndex:(NSInteger)index; | ||
| 35 | - | ||
| 36 | -@end | ||
| 37 | - | ||
| 38 | -// ------------------------------------------------------------------ | ||
| 39 | -// V8HorizontalPickerElementState Protocol | ||
| 40 | -@protocol V8HorizontalPickerElementState <NSObject> | ||
| 41 | -@required | ||
| 42 | -// element views should know how display themselves based on selected status | ||
| 43 | -- (void)setSelectedElement:(BOOL)selected; | ||
| 44 | -@end | ||
| 45 | \ No newline at end of file | 0 | \ No newline at end of file |
LiveVideoCloud/Classes/Sections/HomePageSections/JBAutoRollTableView.h deleted
100644 → 0
| 1 | -// | ||
| 2 | -// JBAutoRollTableView.h | ||
| 3 | -// LiveVideoCloud | ||
| 4 | -// | ||
| 5 | -// Created by cnliveJunBo on 17/6/22. | ||
| 6 | -// Copyright © 2017年 cnlive. All rights reserved. | ||
| 7 | -// | ||
| 8 | - | ||
| 9 | -#import <UIKit/UIKit.h> | ||
| 10 | - | ||
| 11 | -@interface JBAutoRollTableView : UITableView | ||
| 12 | - | ||
| 13 | -@property (nonatomic, strong) NSArray *news; | ||
| 14 | - | ||
| 15 | -@end |
LiveVideoCloud/Classes/Sections/HomePageSections/JBAutoRollTableView.m deleted
100644 → 0
| 1 | -// | ||
| 2 | -// JBAutoRollTableView.m | ||
| 3 | -// LiveVideoCloud | ||
| 4 | -// | ||
| 5 | -// Created by cnliveJunBo on 17/6/22. | ||
| 6 | -// Copyright © 2017年 cnlive. All rights reserved. | ||
| 7 | -// | ||
| 8 | - | ||
| 9 | -#import "JBAutoRollTableView.h" | ||
| 10 | - | ||
| 11 | -@interface JBAutoRollTableView()<UITableViewDataSource, UITableViewDelegate> { | ||
| 12 | - | ||
| 13 | - NSTimer *_timer; | ||
| 14 | - NSIndexPath *_currentIndexPath; | ||
| 15 | -} | ||
| 16 | - | ||
| 17 | -@end | ||
| 18 | - | ||
| 19 | -@implementation JBAutoRollTableView | ||
| 20 | - | ||
| 21 | -- (instancetype)initWithFrame:(CGRect)frame style:(UITableViewStyle)style | ||
| 22 | -{ | ||
| 23 | - self = [super initWithFrame:frame style:style]; | ||
| 24 | - if (self) { | ||
| 25 | - self.showsHorizontalScrollIndicator = NO; | ||
| 26 | - self.showsVerticalScrollIndicator = NO; | ||
| 27 | - self.delegate = self; | ||
| 28 | - self.dataSource = self; | ||
| 29 | - self.rowHeight = self.height; | ||
| 30 | - self.separatorStyle = UITableViewCellSeparatorStyleNone; | ||
| 31 | - self.scrollEnabled = NO; | ||
| 32 | - self.scrollsToTop = NO; | ||
| 33 | - } | ||
| 34 | - return self; | ||
| 35 | -} | ||
| 36 | - | ||
| 37 | -- (void)setNews:(NSArray *)news { | ||
| 38 | - if (_news != news) { | ||
| 39 | - _news = news; | ||
| 40 | - [self reloadData]; | ||
| 41 | - [_timer invalidate]; | ||
| 42 | - _currentIndexPath = [NSIndexPath indexPathForRow:0 inSection:0]; | ||
| 43 | - if (news.count > 1) { | ||
| 44 | - _timer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(autoRollNews) userInfo:nil repeats:YES]; | ||
| 45 | - } | ||
| 46 | - } | ||
| 47 | -} | ||
| 48 | - | ||
| 49 | -- (void)autoRollNews | ||
| 50 | -{ | ||
| 51 | - if (_news.count < 2) { | ||
| 52 | - [_timer invalidate]; | ||
| 53 | - _timer = nil; | ||
| 54 | - return; | ||
| 55 | - } | ||
| 56 | - if (_currentIndexPath.row < _news.count-1) { | ||
| 57 | - [self scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:_currentIndexPath.row + 1 inSection:0] atScrollPosition:UITableViewScrollPositionMiddle animated:YES]; | ||
| 58 | - _currentIndexPath = [NSIndexPath indexPathForRow:_currentIndexPath.row + 1 inSection:0]; | ||
| 59 | - } else { | ||
| 60 | - | ||
| 61 | - NSMutableArray *array = [NSMutableArray arrayWithArray:_news]; | ||
| 62 | - [array insertObject:[_news lastObject] atIndex:0]; | ||
| 63 | - [array removeLastObject]; | ||
| 64 | - _news = array; | ||
| 65 | - [self reloadData]; | ||
| 66 | - [self scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionMiddle animated:NO]; | ||
| 67 | - [self scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:0] atScrollPosition:UITableViewScrollPositionMiddle animated:YES]; | ||
| 68 | - _currentIndexPath = [NSIndexPath indexPathForRow:1 inSection:0]; | ||
| 69 | - } | ||
| 70 | -} | ||
| 71 | - | ||
| 72 | -#pragma mark - UITableViewDataSource !!!!!!!!!!!!!!!!!!!! | ||
| 73 | -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section | ||
| 74 | -{ | ||
| 75 | - return _news.count; | ||
| 76 | -} | ||
| 77 | - | ||
| 78 | -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath | ||
| 79 | -{ | ||
| 80 | - static NSString *identify = @"newsTableViewcell"; | ||
| 81 | - UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identify]; | ||
| 82 | - if (cell == nil) { | ||
| 83 | - cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identify]; | ||
| 84 | - cell.selectionStyle = UITableViewCellSelectionStyleNone; | ||
| 85 | - UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, self.height)]; | ||
| 86 | - label.tag = 101; | ||
| 87 | - label.textColor = [UIColor grayColorCNLive]; | ||
| 88 | - label.font = [UIFont systemFontOfSize:14]; | ||
| 89 | - [cell addSubview:label]; | ||
| 90 | - } | ||
| 91 | - ProgramModel *model = [_news safetyObjectAtIndex:indexPath.row]; | ||
| 92 | - UILabel *label = (UILabel *)[cell viewWithTag:101]; | ||
| 93 | - label.text = model.title; | ||
| 94 | - return cell; | ||
| 95 | -} | ||
| 96 | - | ||
| 97 | -#pragma mark - UITableViewDelegate !!!!!!!!!!!!!!!!!!!! | ||
| 98 | -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { | ||
| 99 | - | ||
| 100 | - [tableView deselectRowAtIndexPath:indexPath animated:YES]; | ||
| 101 | -} | ||
| 102 | - | ||
| 103 | -- (void)removeFromSuperview { | ||
| 104 | - [super removeFromSuperview]; | ||
| 105 | - | ||
| 106 | - [_timer invalidate]; | ||
| 107 | - _timer = nil; | ||
| 108 | -} | ||
| 109 | - | ||
| 110 | -@end |
LiveVideoCloud/Classes/Sections/HomePageSections/JBBannerView.h deleted
100644 → 0
| 1 | -// | ||
| 2 | -// JBBannerView.h | ||
| 3 | -// LiveVideoCloud | ||
| 4 | -// | ||
| 5 | -// Created by cnliveJunBo on 17/6/21. | ||
| 6 | -// Copyright © 2017年 cnlive. All rights reserved. | ||
| 7 | -// | ||
| 8 | - | ||
| 9 | -#import <UIKit/UIKit.h> | ||
| 10 | -@class JBBannerView; | ||
| 11 | - | ||
| 12 | -@protocol JBBannerViewDelegate <NSObject> | ||
| 13 | -@optional | ||
| 14 | -- (void)didSelectedBannerView:(JBBannerView *)banner atIndex:(NSInteger)index; | ||
| 15 | -@end | ||
| 16 | - | ||
| 17 | -@protocol JBBannerViewDatasource <NSObject> | ||
| 18 | -@required | ||
| 19 | -- (NSInteger)numberOfPages; | ||
| 20 | -- (UIView *)pageAtIndex:(NSInteger)index; | ||
| 21 | -@end | ||
| 22 | - | ||
| 23 | -@interface JBBannerView : UIView | ||
| 24 | - | ||
| 25 | -@property (nonatomic, weak) id <JBBannerViewDelegate> delegate; | ||
| 26 | -@property (nonatomic, weak) id <JBBannerViewDatasource> datasource; | ||
| 27 | -@property (nonatomic, strong) NSArray *bannerArray; | ||
| 28 | - | ||
| 29 | -@end |
LiveVideoCloud/Classes/Sections/HomePageSections/JBBannerView.m deleted
100644 → 0
| 1 | -// | ||
| 2 | -// JBBannerView.m | ||
| 3 | -// LiveVideoCloud | ||
| 4 | -// | ||
| 5 | -// Created by cnliveJunBo on 17/6/21. | ||
| 6 | -// Copyright © 2017年 cnlive. All rights reserved. | ||
| 7 | -// | ||
| 8 | - | ||
| 9 | -#import "JBBannerView.h" | ||
| 10 | - | ||
| 11 | -#define kDataScaleSeed 100 | ||
| 12 | - | ||
| 13 | -@interface JBBannerView() <UICollectionViewDelegate, UICollectionViewDataSource> { | ||
| 14 | - | ||
| 15 | - NSTimer *_timer; | ||
| 16 | - NSTimeInterval _timerDuration; | ||
| 17 | -} | ||
| 18 | - | ||
| 19 | -@property (nonatomic, strong) UICollectionView *collectionView; | ||
| 20 | -@property (nonatomic, strong) UILabel *cycleViewTitle; | ||
| 21 | - | ||
| 22 | -@end | ||
| 23 | - | ||
| 24 | -@implementation JBBannerView | ||
| 25 | - | ||
| 26 | -- (instancetype)initWithFrame:(CGRect)frame | ||
| 27 | -{ | ||
| 28 | - self = [super initWithFrame:frame]; | ||
| 29 | - if (self) { | ||
| 30 | - _timerDuration = 3.0; | ||
| 31 | - _timer = [NSTimer timerWithTimeInterval:_timerDuration target:self selector:@selector(updateTimer) userInfo:nil repeats:YES]; | ||
| 32 | - [[NSRunLoop currentRunLoop] addTimer:_timer forMode:NSRunLoopCommonModes]; | ||
| 33 | - | ||
| 34 | - [self addSubview:self.collectionView]; | ||
| 35 | - [self addSubview:self.cycleViewTitle]; | ||
| 36 | - } | ||
| 37 | - return self; | ||
| 38 | -} | ||
| 39 | - | ||
| 40 | -#pragma mark - 时钟方法 | ||
| 41 | -- (void)updateTimer { | ||
| 42 | - | ||
| 43 | - NSIndexPath *indexPath = [_collectionView indexPathsForVisibleItems].lastObject; | ||
| 44 | - NSIndexPath *newIndexPath = [NSIndexPath indexPathForItem:indexPath.item + 1 inSection:indexPath.section]; | ||
| 45 | - | ||
| 46 | - [_collectionView scrollToItemAtIndexPath:newIndexPath atScrollPosition:UICollectionViewScrollPositionLeft animated:YES]; | ||
| 47 | -} | ||
| 48 | - | ||
| 49 | -- (void)setBannerArray:(NSArray *)bannerArray { | ||
| 50 | - | ||
| 51 | - if (_bannerArray != bannerArray) { | ||
| 52 | - _bannerArray = bannerArray; | ||
| 53 | - | ||
| 54 | - | ||
| 55 | - } | ||
| 56 | -} | ||
| 57 | - | ||
| 58 | -#pragma mark - UICollectionViewDelegate !!!!!!!!!!!! | ||
| 59 | -- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { | ||
| 60 | - | ||
| 61 | - | ||
| 62 | -} | ||
| 63 | - | ||
| 64 | -- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView { | ||
| 65 | - | ||
| 66 | - [self scrollViewDidEndDecelerating:scrollView]; | ||
| 67 | -} | ||
| 68 | - | ||
| 69 | -- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { | ||
| 70 | - | ||
| 71 | - NSInteger page = scrollView.contentOffset.x / scrollView.bounds.size.width; | ||
| 72 | - | ||
| 73 | - self.cycleViewTitle.text = [NSString stringWithFormat:@" %ld",(long)(page % 3)]; | ||
| 74 | - | ||
| 75 | - NSInteger lastItem = [_collectionView numberOfItemsInSection:0]; | ||
| 76 | - | ||
| 77 | - if (page == 0 || page == (lastItem - 1)) { | ||
| 78 | - | ||
| 79 | - NSInteger offset = 3; | ||
| 80 | - | ||
| 81 | - if (page == (lastItem - 1)) { | ||
| 82 | - offset = offset - 1; | ||
| 83 | - } | ||
| 84 | - | ||
| 85 | - CGFloat width = scrollView.bounds.size.width; | ||
| 86 | - | ||
| 87 | - scrollView.contentOffset = CGPointMake(offset * width, 0); | ||
| 88 | - } | ||
| 89 | -} | ||
| 90 | - | ||
| 91 | -- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { | ||
| 92 | - | ||
| 93 | - _timer.fireDate = [NSDate distantFuture]; | ||
| 94 | -} | ||
| 95 | - | ||
| 96 | -- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { | ||
| 97 | - | ||
| 98 | - _timer.fireDate = [NSDate dateWithTimeIntervalSinceNow:_timerDuration]; | ||
| 99 | -} | ||
| 100 | - | ||
| 101 | -#pragma mark - UICollectionViewDataSource !!!!!!!!!!!! | ||
| 102 | -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { | ||
| 103 | - | ||
| 104 | - return 6; | ||
| 105 | -} | ||
| 106 | - | ||
| 107 | -- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { | ||
| 108 | - | ||
| 109 | - UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"collcellId" forIndexPath:indexPath]; | ||
| 110 | - switch (indexPath.item) { | ||
| 111 | - case 0: | ||
| 112 | - cell.backgroundColor = [UIColor yellowColor]; | ||
| 113 | - break; | ||
| 114 | - case 1: | ||
| 115 | - cell.backgroundColor = [UIColor greenColor]; | ||
| 116 | - break; | ||
| 117 | - case 2: | ||
| 118 | - cell.backgroundColor = [UIColor blueColor]; | ||
| 119 | - break; | ||
| 120 | - case 3: | ||
| 121 | - cell.backgroundColor = [UIColor yellowColor]; | ||
| 122 | - break; | ||
| 123 | - case 4: | ||
| 124 | - cell.backgroundColor = [UIColor greenColor]; | ||
| 125 | - break; | ||
| 126 | - case 5: | ||
| 127 | - cell.backgroundColor = [UIColor blueColor]; | ||
| 128 | - break; | ||
| 129 | - default: | ||
| 130 | - break; | ||
| 131 | - } | ||
| 132 | - | ||
| 133 | - return cell; | ||
| 134 | -} | ||
| 135 | - | ||
| 136 | -#pragma mark - GetMethod !!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
| 137 | -- (UICollectionView *)collectionView { | ||
| 138 | - | ||
| 139 | - if (!_collectionView) { | ||
| 140 | - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; | ||
| 141 | - layout.minimumLineSpacing = 0; | ||
| 142 | - layout.minimumInteritemSpacing = 0; | ||
| 143 | - layout.itemSize = CGSizeMake(KScreenWidth-20, (KScreenWidth-20)/2); | ||
| 144 | - layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; | ||
| 145 | - | ||
| 146 | - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(10, 10, KScreenWidth-20, (KScreenWidth-20)/2) collectionViewLayout:layout]; | ||
| 147 | - _collectionView.backgroundColor = [UIColor whiteColor]; | ||
| 148 | - _collectionView.delegate = self; | ||
| 149 | - _collectionView.dataSource = self; | ||
| 150 | - _collectionView.pagingEnabled = YES; | ||
| 151 | - _collectionView.showsVerticalScrollIndicator = NO; | ||
| 152 | - _collectionView.showsHorizontalScrollIndicator = NO; | ||
| 153 | - _collectionView.bounces = NO; | ||
| 154 | - [_collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"collcellId"]; | ||
| 155 | - } | ||
| 156 | - return _collectionView; | ||
| 157 | -} | ||
| 158 | - | ||
| 159 | -- (UILabel *)cycleViewTitle { | ||
| 160 | - | ||
| 161 | - if (!_cycleViewTitle) { | ||
| 162 | - | ||
| 163 | - _cycleViewTitle = [[UILabel alloc] initWithFrame:CGRectMake(10, self.collectionView.bottom-35, self.collectionView.width, 35)]; | ||
| 164 | - _cycleViewTitle.backgroundColor = [UIColor colorWithWhite:0 alpha:0.5]; | ||
| 165 | - _cycleViewTitle.textColor = [UIColor whiteColor]; | ||
| 166 | - _cycleViewTitle.font = [UIFont systemFontOfSize:19]; | ||
| 167 | - } | ||
| 168 | - return _cycleViewTitle; | ||
| 169 | -} | ||
| 170 | - | ||
| 171 | -- (void)removeFromSuperview { | ||
| 172 | - [super removeFromSuperview]; | ||
| 173 | - | ||
| 174 | - [_timer invalidate]; | ||
| 175 | - _timer = nil; | ||
| 176 | -} | ||
| 177 | - | ||
| 178 | -@end |
LiveVideoCloud/Classes/Sections/HomePageSections/JBSearchView.h deleted
100644 → 0
LiveVideoCloud/Classes/Sections/HomePageSections/JBSearchView.m deleted
100644 → 0
| 1 | -// | ||
| 2 | -// JBSearchView.m | ||
| 3 | -// LiveVideoCloud | ||
| 4 | -// | ||
| 5 | -// Created by cnliveJunBo on 17/6/22. | ||
| 6 | -// Copyright © 2017年 cnlive. All rights reserved. | ||
| 7 | -// | ||
| 8 | - | ||
| 9 | -#import "JBSearchView.h" | ||
| 10 | - | ||
| 11 | -@interface JBSearchView() | ||
| 12 | - | ||
| 13 | -@property (nonatomic, strong) UIButton *searchBtn; | ||
| 14 | -@property (nonatomic, strong) UIView *searchLine; | ||
| 15 | -@property (nonatomic, strong) UIView *sortBtnBackground; | ||
| 16 | - | ||
| 17 | -@end | ||
| 18 | - | ||
| 19 | -@implementation JBSearchView | ||
| 20 | - | ||
| 21 | -- (instancetype)initWithFrame:(CGRect)frame | ||
| 22 | -{ | ||
| 23 | - self = [super initWithFrame:frame]; | ||
| 24 | - if (self) { | ||
| 25 | - [self addSubview:self.searchBtn]; | ||
| 26 | - } | ||
| 27 | - return self; | ||
| 28 | -} | ||
| 29 | - | ||
| 30 | -- (void)setSortArray:(NSArray *)sortArray { | ||
| 31 | - | ||
| 32 | - if (_sortArray != sortArray) { | ||
| 33 | - _sortArray = sortArray; | ||
| 34 | - } | ||
| 35 | - | ||
| 36 | - if ([Tools isArray:sortArray]) { | ||
| 37 | - | ||
| 38 | - [self addSubview:self.sortBtnBackground]; | ||
| 39 | - CGFloat width = 13; | ||
| 40 | - for (int i = 0; i < sortArray.count; i++) { | ||
| 41 | - NSDictionary *dic = [sortArray safetyObjectAtIndex:i]; | ||
| 42 | - NSString *name = dic[@"name"]; | ||
| 43 | - CGRect rect = [name boundingRectWithSize:CGSizeMake(0, 0) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName: [UIFont systemFontOfSize:15]} context:nil]; | ||
| 44 | - UIButton *sortBtn = [UIButton buttonWithType:UIButtonTypeCustom]; | ||
| 45 | - sortBtn.tag = 100+i; | ||
| 46 | - sortBtn.frame = CGRectMake(width, 0, rect.size.width, 33); | ||
| 47 | - sortBtn.titleLabel.font = [UIFont systemFontOfSize:14]; | ||
| 48 | - [sortBtn setTitle:name forState:UIControlStateNormal]; | ||
| 49 | - [sortBtn setTitleColor:[UIColor grayColorCNLive] forState:UIControlStateNormal]; | ||
| 50 | - [sortBtn addTarget:self action:@selector(sortBtnAction:) forControlEvents:UIControlEventTouchUpInside]; | ||
| 51 | - [self.sortBtnBackground addSubview:sortBtn]; | ||
| 52 | - width += rect.size.width + 13; | ||
| 53 | - } | ||
| 54 | - self.sortBtnBackground.width = width; | ||
| 55 | - self.sortBtnBackground.x = KScreenWidth-self.sortBtnBackground.width-10; | ||
| 56 | - self.searchBtn.width = KScreenWidth-20-7-self.sortBtnBackground.width; | ||
| 57 | - [self addSubview:self.sortBtnBackground]; | ||
| 58 | - | ||
| 59 | - } else { | ||
| 60 | - | ||
| 61 | - self.searchBtn.width = KScreenWidth-20; | ||
| 62 | - [self.sortBtnBackground removeFromSuperview]; | ||
| 63 | - } | ||
| 64 | -} | ||
| 65 | - | ||
| 66 | -#pragma mark - ACtion !!!!!!!!!!!!!!!!!!!!!!! | ||
| 67 | -- (void)searchBtnAction { | ||
| 68 | - | ||
| 69 | - NSLog(@"搜索!!!!!!"); | ||
| 70 | -} | ||
| 71 | - | ||
| 72 | -- (void)sortBtnAction:(UIButton *)button | ||
| 73 | -{ | ||
| 74 | - NSLog(@"分类按钮!!!!!"); | ||
| 75 | - | ||
| 76 | - NSDictionary *dic = [_sortArray safetyObjectAtIndex:button.tag-100]; | ||
| 77 | -// SortViewController *sort=[[SortViewController alloc] init]; | ||
| 78 | -// sort.searchBtn = YES; | ||
| 79 | -// sort.title = _model.title; | ||
| 80 | -// sort.cid = self.model.cid; | ||
| 81 | -// if ([Tools isDictionary:dic]) { | ||
| 82 | -// sort.sortId = dic[@"id"]; | ||
| 83 | -// sort.sortType = dic[@"type"]; | ||
| 84 | -// } | ||
| 85 | -// [self.viewController.navigationController pushViewController:sort animated:YES]; | ||
| 86 | -} | ||
| 87 | - | ||
| 88 | -#pragma mark - GetMethod !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
| 89 | -- (UIButton *)searchBtn { | ||
| 90 | - if (!_searchBtn) { | ||
| 91 | - _searchBtn = [UIButton buttonWithType:UIButtonTypeCustom]; | ||
| 92 | - _searchBtn.frame = CGRectMake(10, 6, KScreenWidth-20, 33); | ||
| 93 | - [_searchBtn setImage:[UIImage imageNamed:@"search"] forState:UIControlStateNormal]; | ||
| 94 | - [_searchBtn setTitle:@"搜索" forState:UIControlStateNormal]; | ||
| 95 | - [_searchBtn setTitleColor:[UIColor grayColor] forState:UIControlStateNormal]; | ||
| 96 | - [_searchBtn setImageEdgeInsets:UIEdgeInsetsMake(0, -5, 0, 0)]; | ||
| 97 | - _searchBtn.titleLabel.font = [UIFont systemFontOfSize:14]; | ||
| 98 | - _searchBtn.backgroundColor = [UIColor whiteColor]; | ||
| 99 | - _searchBtn.layer.cornerRadius = 16; | ||
| 100 | - _searchBtn.layer.masksToBounds = YES; | ||
| 101 | - [_searchBtn addTarget:self action:@selector(searchBtnAction) forControlEvents:UIControlEventTouchUpInside]; | ||
| 102 | - } | ||
| 103 | - return _searchBtn; | ||
| 104 | -} | ||
| 105 | - | ||
| 106 | -- (UIView *)sortBtnBackground | ||
| 107 | -{ | ||
| 108 | - if (!_sortBtnBackground) { | ||
| 109 | - _sortBtnBackground = [[UIView alloc] initWithFrame:CGRectMake(0, 6, 0, 33)]; | ||
| 110 | - _sortBtnBackground.backgroundColor = [UIColor whiteColor]; | ||
| 111 | - _sortBtnBackground.layer.cornerRadius = 16; | ||
| 112 | - _sortBtnBackground.layer.masksToBounds = YES; | ||
| 113 | - } | ||
| 114 | - return _sortBtnBackground; | ||
| 115 | -} | ||
| 116 | - | ||
| 117 | -@end |
LiveVideoCloud/Classes/Sections/HomePageSections/LVCBannerAndMarqueeModel.h deleted
100644 → 0
| 1 | -// | ||
| 2 | -// LVCBannerAndMarqueeModel.h | ||
| 3 | -// LiveVideoCloud | ||
| 4 | -// | ||
| 5 | -// Created by cnliveJunBo on 17/6/20. | ||
| 6 | -// Copyright © 2017年 cnlive. All rights reserved. | ||
| 7 | -// | ||
| 8 | - | ||
| 9 | -#import "BaseModel.h" | ||
| 10 | - | ||
| 11 | -@interface LVCBannerAndMarqueeModel : BaseModel // channels 中 programs 也用这个model | ||
| 12 | - | ||
| 13 | -@property (nonatomic, copy)NSString *url; | ||
| 14 | -@property (nonatomic, copy)NSString *img; | ||
| 15 | -@property (nonatomic, copy)NSString *mediaId; | ||
| 16 | -@property (nonatomic, copy)NSString *title; | ||
| 17 | -@property (nonatomic, copy)NSString *vipFlag; | ||
| 18 | -@property (nonatomic, copy)NSString *docID; | ||
| 19 | -@property (nonatomic, copy)NSString *picType; //列表显示图片类型 H 横图 V 竖图 M 明星人气榜 | ||
| 20 | -@property (nonatomic, copy)NSString *subTitle; | ||
| 21 | -@property (nonatomic, copy)NSString *type; //节目类型 live:直播,program:普通视频,web:网页,series:连续剧,album:专辑 | ||
| 22 | - | ||
| 23 | -//@property (nonatomic, copy)NSString *playMediaId; | ||
| 24 | -//@property (nonatomic, copy)NSString *desc; | ||
| 25 | -//@property (nonatomic, copy)NSString *itemId; | ||
| 26 | -//@property (nonatomic, copy)NSString *activityId; | ||
| 27 | - | ||
| 28 | -@end |
LiveVideoCloud/Classes/Sections/HomePageSections/LVCBannerAndMarqueeModel.m deleted
100644 → 0
LiveVideoCloud/Classes/Sections/HomePageSections/LVCBigHorizontalCollectionViewCell.h deleted
100644 → 0
| 1 | -// | ||
| 2 | -// LVCBigHorizontalCollectionViewCell.h | ||
| 3 | -// LiveVideoCloud | ||
| 4 | -// | ||
| 5 | -// Created by cnliveJunBo on 17/6/23. | ||
| 6 | -// Copyright © 2017年 cnlive. All rights reserved. | ||
| 7 | -// | ||
| 8 | - | ||
| 9 | -#import <UIKit/UIKit.h> | ||
| 10 | - | ||
| 11 | -@interface LVCBigHorizontalCollectionViewCell : UICollectionViewCell | ||
| 12 | - | ||
| 13 | -@property (nonatomic, strong)ProgramModel *model; | ||
| 14 | -@property (nonatomic, strong)ProgramModel *liveModel; | ||
| 15 | - | ||
| 16 | -@end |
LiveVideoCloud/Classes/Sections/HomePageSections/LVCBigHorizontalCollectionViewCell.m deleted
100644 → 0
| 1 | -// | ||
| 2 | -// LVCBigHorizontalCollectionViewCell.m | ||
| 3 | -// LiveVideoCloud | ||
| 4 | -// | ||
| 5 | -// Created by cnliveJunBo on 17/6/23. | ||
| 6 | -// Copyright © 2017年 cnlive. All rights reserved. | ||
| 7 | -// | ||
| 8 | - | ||
| 9 | -#import "LVCBigHorizontalCollectionViewCell.h" | ||
| 10 | - | ||
| 11 | -@interface LVCBigHorizontalCollectionViewCell() { | ||
| 12 | - | ||
| 13 | - CGFloat _x; | ||
| 14 | -} | ||
| 15 | - | ||
| 16 | -@property (nonatomic, strong) UIImageView *imageView; | ||
| 17 | -@property (nonatomic, strong) UILabel *title; | ||
| 18 | -@property (nonatomic, strong) UILabel *detail; | ||
| 19 | -@property (nonatomic, strong) UIImageView *typeImage; //节目类型角标 | ||
| 20 | - | ||
| 21 | -@end | ||
| 22 | - | ||
| 23 | -@implementation LVCBigHorizontalCollectionViewCell | ||
| 24 | - | ||
| 25 | -- (instancetype)initWithFrame:(CGRect)frame | ||
| 26 | -{ | ||
| 27 | - self = [super initWithFrame:frame]; | ||
| 28 | - if (self) { | ||
| 29 | - if ([UIDevice currentDevice].systemVersion.floatValue >= 10) { | ||
| 30 | - _x = 0; | ||
| 31 | - } else { | ||
| 32 | - _x = 10; | ||
| 33 | - } | ||
| 34 | - [self.contentView addSubview:self.imageView]; | ||
| 35 | - [self.contentView addSubview:self.title]; | ||
| 36 | - [self.contentView addSubview:self.detail]; | ||
| 37 | - [self.imageView addSubview:self.typeImage]; | ||
| 38 | - } | ||
| 39 | - return self; | ||
| 40 | -} | ||
| 41 | - | ||
| 42 | -- (void)setModel:(ProgramModel *)model { | ||
| 43 | - | ||
| 44 | - if (_model != model) { | ||
| 45 | - _model = model; | ||
| 46 | - } | ||
| 47 | -} | ||
| 48 | - | ||
| 49 | -- (void)setLiveModel:(ProgramModel *)liveModel { | ||
| 50 | - | ||
| 51 | - if (_liveModel != liveModel) { | ||
| 52 | - _liveModel = liveModel; | ||
| 53 | - } | ||
| 54 | -} | ||
| 55 | - | ||
| 56 | -#pragma mark - GetMethod !!!!!!!!!!!!!!!!!! | ||
| 57 | -- (UIImageView *)imageView | ||
| 58 | -{ | ||
| 59 | - if (!_imageView) { | ||
| 60 | - _imageView = [[UIImageView alloc] initWithFrame:CGRectMake(_x, 0, self.contentView.width-20, (self.contentView.width-20)/2)]; | ||
| 61 | - _imageView.backgroundColor = [UIColor grayColor]; | ||
| 62 | - } | ||
| 63 | - return _imageView; | ||
| 64 | -} | ||
| 65 | - | ||
| 66 | -- (UILabel *)title | ||
| 67 | -{ | ||
| 68 | - if (!_title) { | ||
| 69 | - _title = [[UILabel alloc] initWithFrame:CGRectMake(_x, self.imageView.bottom+7, self.contentView.width-10, 12)]; | ||
| 70 | - _title.font = [UIFont systemFontOfSize:14]; | ||
| 71 | - _title.textColor = [UIColor blackColorCNLive]; | ||
| 72 | - } | ||
| 73 | - return _title; | ||
| 74 | -} | ||
| 75 | - | ||
| 76 | -- (UILabel *)detail | ||
| 77 | -{ | ||
| 78 | - if (!_detail) { | ||
| 79 | - _detail = [[UILabel alloc] initWithFrame:CGRectMake(_x, self.title.bottom+7, self.contentView.width-10, 11)]; | ||
| 80 | - _detail.font = [UIFont systemFontOfSize:12]; | ||
| 81 | - _detail.textColor = [UIColor grayColorCNLive]; | ||
| 82 | - } | ||
| 83 | - return _detail; | ||
| 84 | -} | ||
| 85 | - | ||
| 86 | -- (UIImageView *)typeImage | ||
| 87 | -{ | ||
| 88 | - if (!_typeImage) { | ||
| 89 | - _typeImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 39, 39)]; | ||
| 90 | - } | ||
| 91 | - return _typeImage; | ||
| 92 | -} | ||
| 93 | - | ||
| 94 | -@end |
LiveVideoCloud/Classes/Sections/HomePageSections/LVCBqWqXgModel.h deleted
100644 → 0
| 1 | -// | ||
| 2 | -// LVCBqWqXgModel.h | ||
| 3 | -// LiveVideoCloud | ||
| 4 | -// | ||
| 5 | -// Created by cnliveJunBo on 17/6/20. | ||
| 6 | -// Copyright © 2017年 cnlive. All rights reserved. | ||
| 7 | -// | ||
| 8 | - | ||
| 9 | -#import "BaseModel.h" | ||
| 10 | - | ||
| 11 | -@interface LVCBqWqXgModel : BaseModel | ||
| 12 | - | ||
| 13 | -// 本期看点、往期回看、相关视频、相关明星 公共属性 | ||
| 14 | -@property (nonatomic, copy)NSString *title; | ||
| 15 | -@property (nonatomic, copy)NSString *img; | ||
| 16 | -// 本期看点、往期回看、相关视频 公共属性 | ||
| 17 | -@property (nonatomic, copy)NSString *mediaId; | ||
| 18 | -@property (nonatomic, copy)NSString *docSubTitle; | ||
| 19 | -// 相关视频、相关明星 公共属性 | ||
| 20 | -@property (nonatomic, copy)NSString *docID; | ||
| 21 | -@property (nonatomic, copy)NSString *type; | ||
| 22 | -// 相关视频 | ||
| 23 | -@property (nonatomic, copy)NSString *MAM_PosterUrl; | ||
| 24 | -@property (nonatomic, copy)NSString *MAM_SmallPosterUrl; | ||
| 25 | -@property (nonatomic, copy)NSString *docDescription; | ||
| 26 | -@property (nonatomic, copy)NSString *vipFlag; | ||
| 27 | -@property (nonatomic, copy)NSString *MAM_BigPostUrl; | ||
| 28 | -// 相关明星 | ||
| 29 | -@property (nonatomic, copy)NSString *support; | ||
| 30 | -@property (nonatomic, copy)NSString *voteRule; | ||
| 31 | - | ||
| 32 | -// 用于判断播放底页里本期看点、往期回看、相关视频中,播放的视频是否高亮显示 | ||
| 33 | -@property (nonatomic, assign)BOOL isPlaying; | ||
| 34 | -@property (nonatomic, copy)NSString *module; | ||
| 35 | - | ||
| 36 | -@end |
LiveVideoCloud/Classes/Sections/HomePageSections/LVCBqWqXgModel.m deleted
100644 → 0
LiveVideoCloud/Classes/Sections/HomePageSections/LVCChannelDetailModel.h deleted
100644 → 0
| 1 | -// | ||
| 2 | -// LVCChannelDetailModel.h | ||
| 3 | -// LiveVideoCloud | ||
| 4 | -// | ||
| 5 | -// Created by cnliveJunBo on 17/6/20. | ||
| 6 | -// Copyright © 2017年 cnlive. All rights reserved. | ||
| 7 | -// | ||
| 8 | - | ||
| 9 | -#import "BaseModel.h" | ||
| 10 | - | ||
| 11 | -@interface LVCChannelDetailModel : BaseModel | ||
| 12 | - | ||
| 13 | -@property (nonatomic, strong)NSString *cid; | ||
| 14 | -@property (nonatomic, strong)NSString *title; | ||
| 15 | -@property (nonatomic, strong)NSString *channelType; | ||
| 16 | -@property (nonatomic, strong)NSArray *programs; | ||
| 17 | -@property (nonatomic, strong)NSString *categoryType; | ||
| 18 | - | ||
| 19 | -@end |
LiveVideoCloud/Classes/Sections/HomePageSections/LVCChannelDetailModel.m deleted
100644 → 0
LiveVideoCloud/Classes/Sections/HomePageSections/LVCChannelPagingView.h deleted
100644 → 0
| 1 | -// | ||
| 2 | -// LVCChannelPagingView.h | ||
| 3 | -// LiveVideoCloud | ||
| 4 | -// | ||
| 5 | -// Created by cnliveJunBo on 17/6/19. | ||
| 6 | -// Copyright © 2017年 cnlive. All rights reserved. | ||
| 7 | -// | ||
| 8 | - | ||
| 9 | -#import <UIKit/UIKit.h> | ||
| 10 | - | ||
| 11 | -@interface LVCChannelPagingView : UIView | ||
| 12 | - | ||
| 13 | -@property (nonatomic, strong) LVCHomePageListModel *model; | ||
| 14 | - | ||
| 15 | -@end |
LiveVideoCloud/Classes/Sections/HomePageSections/LVCChannelPagingView.m deleted
100644 → 0
| 1 | -// | ||
| 2 | -// LVCChannelPagingView.m | ||
| 3 | -// LiveVideoCloud | ||
| 4 | -// | ||
| 5 | -// Created by cnliveJunBo on 17/6/19. | ||
| 6 | -// Copyright © 2017年 cnlive. All rights reserved. | ||
| 7 | -// | ||
| 8 | - | ||
| 9 | -#import "LVCChannelPagingView.h" | ||
| 10 | -#import "LVCMainHeaderCollectionReusableView.h" | ||
| 11 | -#import "LVCSectionHeaderCollectionReusableView.h" | ||
| 12 | -#import "LVCMainHorizontalCollectionViewCell.h" | ||
| 13 | -#import "JBSearchView.h" | ||
| 14 | - | ||
| 15 | -static NSString *mainHeaderId = @"mainHeader"; | ||
| 16 | -static NSString *SectionHeaderId = @"SectionHeader"; | ||
| 17 | -static NSString *MainHorizontalCellId = @"MainHorizontalCell"; | ||
| 18 | - | ||
| 19 | -@interface LVCChannelPagingView() <UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout> { | ||
| 20 | - | ||
| 21 | - BOOL _hasSearchBox; //是否显示搜索框 | ||
| 22 | - NSArray *_searchColumnArray; | ||
| 23 | - NSMutableArray *_banners; | ||
| 24 | - NSMutableArray *_marquees; | ||
| 25 | - NSMutableArray *_channels; | ||
| 26 | - LVCMainHeaderCollectionReusableView *_mainHeader; | ||
| 27 | - CGFloat _collectionOffsetY; | ||
| 28 | -} | ||
| 29 | - | ||
| 30 | -@property (nonatomic, strong)UICollectionView *collectionView; | ||
| 31 | -//@property (nonatomic, strong)UIView *searchBackground; | ||
| 32 | -@property (nonatomic, strong)JBSearchView *searchView; | ||
| 33 | -//@property (nonatomic, strong)UIButton *searchBtn; | ||
| 34 | -@property (nonatomic, strong)UIView *searchLine; | ||
| 35 | -@property (nonatomic, strong)UILabel *searchHotLab; | ||
| 36 | - | ||
| 37 | -@end | ||
| 38 | - | ||
| 39 | -@implementation LVCChannelPagingView | ||
| 40 | - | ||
| 41 | -- (instancetype)initWithFrame:(CGRect)frame | ||
| 42 | -{ | ||
| 43 | - self = [super initWithFrame:frame]; | ||
| 44 | - if (self) { | ||
| 45 | - [self addSubview:self.collectionView]; | ||
| 46 | - _banners = [[NSMutableArray alloc] init]; | ||
| 47 | - _marquees = [[NSMutableArray alloc] init]; | ||
| 48 | - _channels = [[NSMutableArray alloc] init]; | ||
| 49 | - } | ||
| 50 | - return self; | ||
| 51 | -} | ||
| 52 | - | ||
| 53 | -- (void)setModel:(LVCHomePageListModel *)model { | ||
| 54 | - | ||
| 55 | - if (_model != model) { | ||
| 56 | - _model = model; | ||
| 57 | - } | ||
| 58 | - [self requestAppindex]; | ||
| 59 | -} | ||
| 60 | - | ||
| 61 | -#pragma mark - 请求数据 | ||
| 62 | -- (void)requestAppindex { | ||
| 63 | - | ||
| 64 | - NSString *uid; | ||
| 65 | - if ([UserTools isLogin]) { | ||
| 66 | - uid = [UserInformationModel manager].uid; | ||
| 67 | - } else { | ||
| 68 | - uid = [NSString stringWithFormat:@"%u", arc4random()%3]; | ||
| 69 | - } | ||
| 70 | - NSString *tm = [NSString stringWithFormat:@"%u_%@", arc4random()%10, uid]; | ||
| 71 | - | ||
| 72 | - NSDictionary *parameter = @{@"cid": self.model.cid ? self.model.cid : @"", | ||
| 73 | - @"tm": tm}; | ||
| 74 | - | ||
| 75 | - NSString *url; | ||
| 76 | - if ([self.model.cid isEqualToString:@"tj/"]) { | ||
| 77 | - url = Appindexpage; | ||
| 78 | - } else { | ||
| 79 | - url = Appindex; | ||
| 80 | - } | ||
| 81 | - | ||
| 82 | - [[AFHTTPRequestOperationManager manager] GET:url parameters:[self addParameters:parameter] success:^(AFHTTPRequestOperation *operation, id responseObject) { | ||
| 83 | - | ||
| 84 | - responseObject = [responseObject validatedDictionary]; | ||
| 85 | - | ||
| 86 | - _hasSearchBox = [responseObject[@"searchCategory"] isEqualToString:@"false"] ? NO : YES; | ||
| 87 | - | ||
| 88 | - self.searchHotLab.text = responseObject[@"placeHolder"]; | ||
| 89 | - | ||
| 90 | - //是否显示搜索旁边的分类 | ||
| 91 | - _searchColumnArray = responseObject[@"searchColumn"]; | ||
| 92 | - | ||
| 93 | - if ([Tools isArray:_searchColumnArray]) { | ||
| 94 | - | ||
| 95 | - // 搜索旁的分类 | ||
| 96 | - } else { | ||
| 97 | - | ||
| 98 | -// self.searchBtn.width = KScreenWidth - 20; | ||
| 99 | - } | ||
| 100 | - | ||
| 101 | - if (responseObject[@"banner"] && [responseObject[@"banner"] isKindOfClass:[NSArray class]]) { | ||
| 102 | - for (NSDictionary *dic in responseObject[@"banner"]) { | ||
| 103 | - LVCBannerAndMarqueeModel *model = [LVCBannerAndMarqueeModel modelWithDic:dic]; | ||
| 104 | - if (model) { | ||
| 105 | - [_banners addObject:model]; | ||
| 106 | - } | ||
| 107 | - } | ||
| 108 | - } | ||
| 109 | - if (responseObject[@"marquee"] && [responseObject[@"marquee"] isKindOfClass:[NSArray class]]) { | ||
| 110 | - for (NSDictionary *dic in responseObject[@"marquee"]) { | ||
| 111 | - LVCBannerAndMarqueeModel *model = [LVCBannerAndMarqueeModel modelWithDic:dic]; | ||
| 112 | - if (model) { | ||
| 113 | - [_marquees addObject:model]; | ||
| 114 | - } | ||
| 115 | - } | ||
| 116 | - } | ||
| 117 | - if (responseObject[@"channels"] && [responseObject[@"channels"] isKindOfClass:[NSArray class]]) { | ||
| 118 | - | ||
| 119 | - for (NSDictionary *dic in responseObject[@"channels"]) { | ||
| 120 | - LVCChannelDetailModel *model = [LVCChannelDetailModel modelWithDic:dic]; | ||
| 121 | - NSMutableArray *programs = [[NSMutableArray alloc] init]; | ||
| 122 | - | ||
| 123 | - if (dic[@"programs"] && [dic[@"programs"] isKindOfClass:[NSArray class]]) { | ||
| 124 | - for (NSDictionary *program in dic[@"programs"]) { | ||
| 125 | - id programModel; | ||
| 126 | - if ([model.channelType isEqualToString:@"M"]) { | ||
| 127 | - programModel = [LVCBqWqXgModel modelWithDic:program]; | ||
| 128 | - } else { | ||
| 129 | - programModel = [LVCBannerAndMarqueeModel modelWithDic:program]; | ||
| 130 | - } | ||
| 131 | - if (programModel) { | ||
| 132 | - [programs addObject:programModel]; | ||
| 133 | - } | ||
| 134 | - } | ||
| 135 | - } | ||
| 136 | - model.programs = [[NSArray alloc] initWithArray:programs]; | ||
| 137 | - if (model && [Tools isArray:model.programs]) { | ||
| 138 | - [_channels addObject:model]; | ||
| 139 | - } | ||
| 140 | - } | ||
| 141 | - } | ||
| 142 | - [self.collectionView reloadData]; | ||
| 143 | - | ||
| 144 | - } failure:^(AFHTTPRequestOperation *operation, NSError *error) { | ||
| 145 | - | ||
| 146 | - | ||
| 147 | - }]; | ||
| 148 | -} | ||
| 149 | - | ||
| 150 | -#pragma mark - UICollectionViewDelegate !!!!!!!!!!!!!!!!!!!!!!!!! | ||
| 151 | -- (void)scrollViewDidScroll:(UIScrollView *)scrollView { | ||
| 152 | - | ||
| 153 | - if (_hasSearchBox) { | ||
| 154 | - | ||
| 155 | - if (scrollView == self.collectionView) { | ||
| 156 | - | ||
| 157 | - if (scrollView.contentOffset.y <= 0) { | ||
| 158 | - | ||
| 159 | - self.searchView.y = 0; | ||
| 160 | - if (_channels.count > 0) { | ||
| 161 | - [_mainHeader addSubview:self.searchView]; | ||
| 162 | - } else { | ||
| 163 | - [self.collectionView addSubview:self.searchView]; | ||
| 164 | - } | ||
| 165 | - _collectionOffsetY = scrollView.contentOffset.y; | ||
| 166 | - } else { | ||
| 167 | - | ||
| 168 | - if (scrollView.contentOffset.y >= 45) { | ||
| 169 | - if (self.searchView.superview != self) { | ||
| 170 | - self.searchView.y = -45; | ||
| 171 | - [self.searchView addSubview:self.searchLine]; | ||
| 172 | - [self addSubview:self.searchView]; | ||
| 173 | - } | ||
| 174 | - } | ||
| 175 | - if (scrollView.contentOffset.y-_collectionOffsetY > 0) { | ||
| 176 | - _collectionOffsetY = scrollView.contentOffset.y; | ||
| 177 | - [UIView animateWithDuration:0.2 animations:^{ | ||
| 178 | - self.searchView.y = -45; | ||
| 179 | - }]; | ||
| 180 | - } else { | ||
| 181 | - _collectionOffsetY = scrollView.contentOffset.y; | ||
| 182 | - [UIView animateWithDuration:0.2 animations:^{ | ||
| 183 | - self.searchView.y = 0; | ||
| 184 | - }]; | ||
| 185 | - } | ||
| 186 | - } | ||
| 187 | - } | ||
| 188 | - } | ||
| 189 | -} | ||
| 190 | - | ||
| 191 | -- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { | ||
| 192 | - | ||
| 193 | - | ||
| 194 | -} | ||
| 195 | - | ||
| 196 | -#pragma mark - UICollectionViewDataSource !!!!!!!!!!!!!!!!!!!!!!!!! | ||
| 197 | -- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { | ||
| 198 | - | ||
| 199 | - return 4; | ||
| 200 | -} | ||
| 201 | - | ||
| 202 | -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { | ||
| 203 | - | ||
| 204 | - return 6; | ||
| 205 | -} | ||
| 206 | - | ||
| 207 | -- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { | ||
| 208 | - | ||
| 209 | - LVCMainHorizontalCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:MainHorizontalCellId forIndexPath:indexPath]; | ||
| 210 | - cell.backgroundColor = [UIColor blueColor]; | ||
| 211 | - return cell; | ||
| 212 | -} | ||
| 213 | - | ||
| 214 | -- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath { | ||
| 215 | - | ||
| 216 | - if (indexPath.section == 0) { | ||
| 217 | - _mainHeader = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:mainHeaderId forIndexPath:indexPath]; | ||
| 218 | - _mainHeader.backgroundColor = [UIColor redColor]; | ||
| 219 | - if (!self.searchView.superview) { | ||
| 220 | - [_mainHeader addSubview:self.searchView]; | ||
| 221 | - } | ||
| 222 | - _mainHeader.banners = _banners; | ||
| 223 | - return _mainHeader; | ||
| 224 | - } else { | ||
| 225 | - LVCSectionHeaderCollectionReusableView *view = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:SectionHeaderId forIndexPath:indexPath]; | ||
| 226 | - view.backgroundColor = [UIColor yellowColor]; | ||
| 227 | - | ||
| 228 | - LVCChannelDetailModel *model = [[LVCChannelDetailModel alloc] init]; | ||
| 229 | - model.title = [NSString stringWithFormat:@"这是第%ld组",(long)indexPath.section]; | ||
| 230 | - view.model = model; | ||
| 231 | - | ||
| 232 | - return view; | ||
| 233 | - } | ||
| 234 | - return nil; | ||
| 235 | -} | ||
| 236 | - | ||
| 237 | -#pragma mark - UICollectionViewDelegateFlowLayout !!!!!!!!!!!!!!!!!!!!!!!!! | ||
| 238 | -- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { | ||
| 239 | - | ||
| 240 | - return CGSizeMake(KScreenWidth*0.4, 80); | ||
| 241 | -} | ||
| 242 | - | ||
| 243 | -- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section { | ||
| 244 | - | ||
| 245 | - if (section == 0) { | ||
| 246 | - return UIEdgeInsetsMake(0, 0, 0, 0); | ||
| 247 | - } | ||
| 248 | - return UIEdgeInsetsMake(5, 10, 5, 4); | ||
| 249 | -} | ||
| 250 | - | ||
| 251 | -- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section { | ||
| 252 | - | ||
| 253 | - if (section == 0) { | ||
| 254 | - return CGSizeMake(KScreenWidth, 300); | ||
| 255 | - } else { | ||
| 256 | - return CGSizeMake(KScreenWidth, 47); | ||
| 257 | - } | ||
| 258 | -} | ||
| 259 | - | ||
| 260 | -#pragma mark - GetMethod !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
| 261 | -- (UICollectionView *)collectionView { | ||
| 262 | - | ||
| 263 | - if (!_collectionView) { | ||
| 264 | - | ||
| 265 | - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; | ||
| 266 | - layout.minimumLineSpacing = 10; | ||
| 267 | - layout.minimumInteritemSpacing = 0; | ||
| 268 | - | ||
| 269 | - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight - 64 - 49) collectionViewLayout:layout]; | ||
| 270 | - _collectionView.delegate = self; | ||
| 271 | - _collectionView.dataSource = self; | ||
| 272 | - _collectionView.backgroundColor = [UIColor whiteColor]; | ||
| 273 | - [_collectionView registerClass:[LVCMainHeaderCollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:mainHeaderId]; | ||
| 274 | - | ||
| 275 | - [_collectionView registerClass:[LVCSectionHeaderCollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:SectionHeaderId]; | ||
| 276 | - | ||
| 277 | - [_collectionView registerClass:[LVCMainHorizontalCollectionViewCell class] forCellWithReuseIdentifier:MainHorizontalCellId]; | ||
| 278 | - } | ||
| 279 | - return _collectionView; | ||
| 280 | -} | ||
| 281 | - | ||
| 282 | -- (JBSearchView *)searchView { | ||
| 283 | - | ||
| 284 | - if (!_searchView) { | ||
| 285 | - _searchView = [[JBSearchView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 45)]; | ||
| 286 | - _searchView.backgroundColor = [UIColor backgroundColor]; | ||
| 287 | - | ||
| 288 | - NSMutableArray *arrayM = [[NSMutableArray alloc] init]; | ||
| 289 | - NSDictionary *dict1 = @{@"name":@"liveShow"}; | ||
| 290 | - [arrayM addObject:dict1]; | ||
| 291 | - NSDictionary *dict2 = @{@"name":@"全部"}; | ||
| 292 | - [arrayM addObject:dict2]; | ||
| 293 | - _searchView.sortArray = arrayM; | ||
| 294 | - | ||
| 295 | - } | ||
| 296 | - return _searchView; | ||
| 297 | -} | ||
| 298 | - | ||
| 299 | -- (UIView *)searchLine { | ||
| 300 | - | ||
| 301 | - if (!_searchLine) { | ||
| 302 | - _searchLine = [[UIView alloc] initWithFrame:CGRectMake(0, 44.5, KScreenWidth, 0.5)]; | ||
| 303 | - _searchLine.backgroundColor = [UIColor navigationLineColor]; | ||
| 304 | - } | ||
| 305 | - return _searchLine; | ||
| 306 | -} | ||
| 307 | - | ||
| 308 | -//- (UILabel *)searchHotLab { | ||
| 309 | -// | ||
| 310 | -// if (!_searchHotLab) { | ||
| 311 | -// _searchHotLab = [[UILabel alloc] initWithFrame:CGRectMake(35, 0, self.searchBtn.width-45, self.searchBtn.height)]; | ||
| 312 | -// _searchHotLab.textColor = [UIColor grayColorCNLive]; | ||
| 313 | -// _searchHotLab.font = [UIFont systemFontOfSize:14]; | ||
| 314 | -// } | ||
| 315 | -// return _searchHotLab; | ||
| 316 | -//} | ||
| 317 | - | ||
| 318 | -// ------------------------------------------分割线--------------------------------------------------- | ||
| 319 | -- (NSDictionary *)addParameters:(NSDictionary *)dict { | ||
| 320 | - | ||
| 321 | - if (![dict isKindOfClass:[NSDictionary class]]) { | ||
| 322 | - return dict; | ||
| 323 | - } | ||
| 324 | - if (!dict) { | ||
| 325 | - return @{@"appid": JBAppId, @"plat": @"i", @"version": JBAppVersion}; | ||
| 326 | - } else { | ||
| 327 | - NSMutableDictionary *dic = [[NSMutableDictionary alloc] initWithDictionary:dict]; | ||
| 328 | - [dic addEntriesFromDictionary:@{@"appid": JBAppId, @"plat": @"i", @"version": JBAppVersion}]; | ||
| 329 | - return [[NSDictionary alloc] initWithDictionary:dic]; | ||
| 330 | - } | ||
| 331 | -} | ||
| 332 | - | ||
| 333 | -@end |
LiveVideoCloud/Classes/Sections/HomePageSections/LVCHomePageListModel.h deleted
100644 → 0
| 1 | -// | ||
| 2 | -// LVCHomePageListModel.h | ||
| 3 | -// LiveVideoCloud | ||
| 4 | -// | ||
| 5 | -// Created by cnliveJunBo on 17/6/12. | ||
| 6 | -// Copyright © 2017年 cnlive. All rights reserved. | ||
| 7 | -// | ||
| 8 | - | ||
| 9 | -#import "BaseModel.h" | ||
| 10 | - | ||
| 11 | -@interface LVCHomePageListModel : NSObject | ||
| 12 | - | ||
| 13 | -@property (nonatomic, copy) NSString *cid; | ||
| 14 | -@property (nonatomic, copy) NSString *img; | ||
| 15 | -@property (nonatomic, copy) NSString *title; | ||
| 16 | -@property (nonatomic, copy) NSString *type; | ||
| 17 | -@property (nonatomic, copy) NSString *url; | ||
| 18 | - | ||
| 19 | -@end |
LiveVideoCloud/Classes/Sections/HomePageSections/LVCHomePageListModel.m deleted
100644 → 0
LiveVideoCloud/Classes/Sections/HomePageSections/LVCHomePageViewController.h deleted
100644 → 0
LiveVideoCloud/Classes/Sections/HomePageSections/LVCHomePageViewController.m deleted
100644 → 0
| 1 | -// | ||
| 2 | -// LVCHomePageViewController.m | ||
| 3 | -// LiveVideoCloud | ||
| 4 | -// | ||
| 5 | -// Created by cnliveJunBo on 17/6/9. | ||
| 6 | -// Copyright © 2017年 cnlive. All rights reserved. | ||
| 7 | -// | ||
| 8 | - | ||
| 9 | -#import "LVCHomePageViewController.h" | ||
| 10 | -#import "LVCChannelPagingView.h" | ||
| 11 | - | ||
| 12 | -@interface LVCHomePageViewController ()<V8HorizontalPickerViewDataSource, V8HorizontalPickerViewDelegate,MHPagingScrollViewDelegate,UIScrollViewDelegate> { | ||
| 13 | - | ||
| 14 | - NSMutableArray <LVCHomePageListModel *> *_titleArr; | ||
| 15 | - CGFloat _titleSpace; | ||
| 16 | -} | ||
| 17 | - | ||
| 18 | -@property (nonatomic, strong)V8HorizontalPickerView *titleView; | ||
| 19 | -@property (nonatomic, strong)MHPagingScrollView *pageView; | ||
| 20 | -@property (nonatomic, strong)UIButton *reloadBtn; | ||
| 21 | -@property (nonatomic, strong)UILabel *reloadLab; | ||
| 22 | -@end | ||
| 23 | - | ||
| 24 | -@implementation LVCHomePageViewController | ||
| 25 | - | ||
| 26 | -- (void)viewWillAppear:(BOOL)animated | ||
| 27 | -{ | ||
| 28 | - [super viewWillAppear:animated]; | ||
| 29 | - [self pagingScrollView:self.pageView pageForIndex:self.pageView.indexOfSelectedPage]; | ||
| 30 | -} | ||
| 31 | - | ||
| 32 | -- (void)viewDidLoad { | ||
| 33 | - [super viewDidLoad]; | ||
| 34 | - | ||
| 35 | -// [[NSNotificationCenter defaultCenter] addObserver:self | ||
| 36 | -// selector:@selector(appBecomeActive) | ||
| 37 | -// name:UIApplicationDidBecomeActiveNotification | ||
| 38 | -// object:nil]; | ||
| 39 | - | ||
| 40 | - _titleArr = [[NSMutableArray alloc] init]; | ||
| 41 | - | ||
| 42 | - [self getChannelList]; | ||
| 43 | - | ||
| 44 | - self.navigationItem.titleView = self.titleView; | ||
| 45 | - [self.view addSubview:self.pageView]; | ||
| 46 | - [_pageView reloadPages]; | ||
| 47 | - [_titleView reloadData]; | ||
| 48 | -} | ||
| 49 | - | ||
| 50 | -#pragma mark - 请求频道列表 | ||
| 51 | -- (void)getChannelList { | ||
| 52 | - | ||
| 53 | - NSDictionary *para = @{@"appid": @"hdtv", | ||
| 54 | - @"plat": @"i", | ||
| 55 | - @"version": @"5.5.2.052420"}; //[NSDictionary CommonParameters] | ||
| 56 | - | ||
| 57 | - MBProgressHUD *waitHUD = [Tools showActivityHudInView:self.view withString:@"加载中..."]; | ||
| 58 | - [[AFHTTPRequestOperationManager manager] GET:AllChannellist parameters:para success:^(AFHTTPRequestOperation *operation, id responseObject) { | ||
| 59 | - | ||
| 60 | - [waitHUD hide:NO]; | ||
| 61 | - [self.reloadBtn removeFromSuperview]; | ||
| 62 | - responseObject = [responseObject validatedDictionary]; | ||
| 63 | - | ||
| 64 | - if ([[NSString stringWithFormat:@"%@",responseObject[@"errorCode"]] isEqualToString:@"0"]) { | ||
| 65 | - | ||
| 66 | - if ([Tools isArray:responseObject[@"channels"]]) { | ||
| 67 | - | ||
| 68 | - for (NSDictionary *dict in responseObject[@"channels"]) { | ||
| 69 | - | ||
| 70 | - LVCHomePageListModel *model = [[LVCHomePageListModel alloc] init]; | ||
| 71 | - [model setValuesForKeysWithDictionary:dict]; | ||
| 72 | - [_titleArr addObject:model]; | ||
| 73 | - } | ||
| 74 | - | ||
| 75 | - CGFloat width = 0; | ||
| 76 | - for (LVCHomePageListModel *model in _titleArr) { | ||
| 77 | - CGSize size = [model.title sizeWithAttributes:@{NSFontAttributeName:self.titleView.elementFont}]; | ||
| 78 | - width += size.width+5; | ||
| 79 | - } | ||
| 80 | - if (width < self.titleView.width) { | ||
| 81 | - _titleSpace = (self.titleView.width-width)/_titleArr.count; | ||
| 82 | - } else { | ||
| 83 | - _titleSpace = 0; | ||
| 84 | - } | ||
| 85 | - | ||
| 86 | - [_titleView reloadData]; | ||
| 87 | - [_pageView reloadPages]; | ||
| 88 | - | ||
| 89 | - // /*-----------------列表数据处理----------------*/ | ||
| 90 | - // [CNHDTVStatManager PVStatForPage:@"tj/" userID:[UserInformationModel manager].uid]; | ||
| 91 | - // NSMutableArray *normalArray = [[NSMutableArray alloc] initWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:NormalChannelArray]]; | ||
| 92 | - // NSMutableArray *otherArray = [[NSMutableArray alloc] initWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:OtherChannelArray]]; | ||
| 93 | - // | ||
| 94 | - // NSArray *channelsArray = responseObject[@"channels"]; | ||
| 95 | - | ||
| 96 | - | ||
| 97 | -// /*-----------------根据频道列表网络数据的变化来对本地数据进行处理----------------*/ | ||
| 98 | - // //将新增的频道添加到常用频道 | ||
| 99 | - // for (NSDictionary *dic in channelsArray) { | ||
| 100 | - // if (![normalArray containsObject:dic]) { | ||
| 101 | - // [normalArray addObject:dic]; | ||
| 102 | - // } | ||
| 103 | - // } | ||
| 104 | - // | ||
| 105 | - // //从常用频道和其他频道中删除网络数据中没有的数据 | ||
| 106 | - // NSMutableArray *tempNormalArray = [normalArray mutableCopy]; | ||
| 107 | - // for (NSDictionary *dic in tempNormalArray) { | ||
| 108 | - // if (![channelsArray containsObject:dic]) { | ||
| 109 | - // [normalArray removeObject:dic]; | ||
| 110 | - // } | ||
| 111 | - // } | ||
| 112 | - // | ||
| 113 | - // NSMutableArray *tempOtherArray = [otherArray mutableCopy]; | ||
| 114 | - // for (NSDictionary *dic in tempOtherArray) { | ||
| 115 | - // if (![channelsArray containsObject:dic]) { | ||
| 116 | - // [otherArray removeObject:dic]; | ||
| 117 | - // } | ||
| 118 | - // } | ||
| 119 | - // | ||
| 120 | - // [[NSUserDefaults standardUserDefaults] setObject:normalArray forKey:NormalChannelArray]; | ||
| 121 | - // [[NSUserDefaults standardUserDefaults] setObject:otherArray forKey:OtherChannelArray]; | ||
| 122 | - // [[NSUserDefaults standardUserDefaults] synchronize]; | ||
| 123 | - | ||
| 124 | - } | ||
| 125 | - else { | ||
| 126 | - | ||
| 127 | - [Tools showHUDInView:self.view withString:@"获取数据失败" autoHide:YES]; | ||
| 128 | - } | ||
| 129 | - | ||
| 130 | - | ||
| 131 | - } else { | ||
| 132 | - | ||
| 133 | - [Tools showHUDInView:self.view withString:@"获取数据失败" autoHide:YES]; | ||
| 134 | - } | ||
| 135 | - | ||
| 136 | - self.reloadLab.text = @"暂无数据"; | ||
| 137 | - | ||
| 138 | - } failure:^(AFHTTPRequestOperation *operation, NSError *error) { | ||
| 139 | - | ||
| 140 | - [waitHUD hide:NO]; | ||
| 141 | - [self.reloadBtn removeFromSuperview]; | ||
| 142 | - self.reloadLab.text = @"您好像掉线了"; | ||
| 143 | - }]; | ||
| 144 | -} | ||
| 145 | - | ||
| 146 | -#pragma mark - V8HorizontalPickerViewDataSource | ||
| 147 | - | ||
| 148 | -- (NSInteger)numberOfElementsInHorizontalPickerView:(V8HorizontalPickerView *)picker | ||
| 149 | -{ | ||
| 150 | - return _titleArr.count; | ||
| 151 | -} | ||
| 152 | - | ||
| 153 | -#pragma mark - V8HorizontalPickerViewDelegate | ||
| 154 | - | ||
| 155 | -- (NSString *)horizontalPickerView:(V8HorizontalPickerView *)picker titleForElementAtIndex:(NSInteger)index | ||
| 156 | -{ | ||
| 157 | - return _titleArr[index].title; | ||
| 158 | -} | ||
| 159 | - | ||
| 160 | -- (NSInteger)horizontalPickerView:(V8HorizontalPickerView *)picker widthForElementAtIndex:(NSInteger)index | ||
| 161 | -{ | ||
| 162 | - | ||
| 163 | - if (_titleSpace != 0) { | ||
| 164 | - | ||
| 165 | - CGSize size = [_titleArr[index].title sizeWithAttributes:@{NSFontAttributeName:self.titleView.elementFont}]; | ||
| 166 | - return size.width +_titleSpace; | ||
| 167 | - } else { | ||
| 168 | - | ||
| 169 | - CGSize size = [_titleArr[index].title sizeWithAttributes:@{NSFontAttributeName:self.titleView.elementFont}]; | ||
| 170 | - return size.width + 15; | ||
| 171 | - } | ||
| 172 | -} | ||
| 173 | - | ||
| 174 | -- (void)horizontalPickerView:(V8HorizontalPickerView *)picker didSelectElementAtIndex:(NSInteger)index | ||
| 175 | -{ | ||
| 176 | - if (self.pageView.indexOfSelectedPage != index) { | ||
| 177 | - [self.pageView selectPageAtIndex:index animated:YES]; | ||
| 178 | - } | ||
| 179 | -} | ||
| 180 | - | ||
| 181 | -#pragma mark - UIScrollViewDelegate | ||
| 182 | - | ||
| 183 | -- (void)scrollViewDidScroll:(UIScrollView *)scrollView | ||
| 184 | -{ | ||
| 185 | - | ||
| 186 | - if (self.titleView.currentSelectedIndex != self.pageView.indexOfSelectedPage) { | ||
| 187 | - | ||
| 188 | - [self.titleView scrollToElement:self.pageView.indexOfSelectedPage animated:YES]; | ||
| 189 | - | ||
| 190 | - } | ||
| 191 | - [self.pageView scrollViewDidScroll]; | ||
| 192 | - | ||
| 193 | -} | ||
| 194 | - | ||
| 195 | -#pragma mark - MHPagingScrollViewDelegate | ||
| 196 | - | ||
| 197 | -- (NSUInteger)numberOfPagesInPagingScrollView:(MHPagingScrollView *)pagingScrollView | ||
| 198 | -{ | ||
| 199 | - return _titleArr.count; | ||
| 200 | -} | ||
| 201 | - | ||
| 202 | -- (UIView *)pagingScrollView:(MHPagingScrollView *)pagingScrollView pageForIndex:(NSUInteger)index | ||
| 203 | -{ | ||
| 204 | - LVCHomePageListModel *model = [_titleArr safetyObjectAtIndex:index]; | ||
| 205 | - | ||
| 206 | - if ([model.type isEqualToString:@"channel"] || [model.type isEqualToString:@"tuijian"]) { | ||
| 207 | - | ||
| 208 | - LVCChannelPagingView *channelView = (LVCChannelPagingView *)[pagingScrollView pageViewByIndex:index]; | ||
| 209 | - if (!channelView) { | ||
| 210 | - channelView = [[LVCChannelPagingView alloc] initWithFrame:self.pageView.bounds]; | ||
| 211 | - channelView.model = _titleArr[index]; | ||
| 212 | - } | ||
| 213 | - return channelView; | ||
| 214 | - | ||
| 215 | - } else if ([model.type isEqualToString:@"news"]) { | ||
| 216 | - | ||
| 217 | - UIView *view2 = [pagingScrollView pageViewByIndex:index]; | ||
| 218 | - if (!view2) { | ||
| 219 | - view2 = [[UIView alloc] init]; | ||
| 220 | - } | ||
| 221 | - view2.backgroundColor = [UIColor redColor]; | ||
| 222 | - return view2; | ||
| 223 | -// LVCUGCLiveListView *liveListView = (LVCUGCLiveListView *)[pagingScrollView pageViewByIndex:index]; | ||
| 224 | -// if (!liveListView) { | ||
| 225 | -// liveListView = [[LVCUGCLiveListView alloc] initWithFrame:CGRectMake(0, 64, SCREEN_WIDTH, SCREEN_HEIGHT - 114)]; | ||
| 226 | -// } else { | ||
| 227 | -// [liveListView isNeedToRefresh]; | ||
| 228 | -// } | ||
| 229 | -// liveListView.scrollToTop = YES; | ||
| 230 | -// return liveListView; | ||
| 231 | - } else if ([model.type isEqualToString:@"link"]) { | ||
| 232 | - | ||
| 233 | - UIView *view1 = [pagingScrollView pageViewByIndex:index]; | ||
| 234 | - if (!view1) { | ||
| 235 | - view1 = [[UIView alloc] init]; | ||
| 236 | - } | ||
| 237 | - view1.backgroundColor = [UIColor yellowColor]; | ||
| 238 | - return view1; | ||
| 239 | - } | ||
| 240 | - | ||
| 241 | - return nil; | ||
| 242 | -} | ||
| 243 | - | ||
| 244 | -#pragma mark - Action !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
| 245 | - | ||
| 246 | -#pragma mark - GetMetohd !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
| 247 | -- (V8HorizontalPickerView *)titleView | ||
| 248 | -{ | ||
| 249 | - if (!_titleView) { | ||
| 250 | - | ||
| 251 | - _titleView = [[V8HorizontalPickerView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH-120, 44) home:YES]; | ||
| 252 | - _titleView.textColor = [UIColor colorWithHexString:@"#7e7e7d"]; | ||
| 253 | - _titleView.selectedTextColor = [UIColor blackColorCNLive]; | ||
| 254 | - _titleView.delegate = self; | ||
| 255 | - _titleView.dataSource = self; | ||
| 256 | - _titleView.elementFont = [UIFont boldSystemFontOfSize:18]; | ||
| 257 | - _titleView.scrollView.scrollsToTop = NO; | ||
| 258 | - | ||
| 259 | - } | ||
| 260 | - return _titleView; | ||
| 261 | -} | ||
| 262 | - | ||
| 263 | -- (MHPagingScrollView *)pageView | ||
| 264 | -{ | ||
| 265 | - if (!_pageView) { | ||
| 266 | - _pageView = [[MHPagingScrollView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT-49)]; | ||
| 267 | - _pageView.pagingDelegate = self; | ||
| 268 | - _pageView.delegate = self; | ||
| 269 | - _pageView.scrollsToTop = NO; | ||
| 270 | - _pageView.bounces = NO; | ||
| 271 | - } | ||
| 272 | - return _pageView; | ||
| 273 | -} | ||
| 274 | - | ||
| 275 | -- (UIButton *)reloadBtn | ||
| 276 | -{ | ||
| 277 | - if (!_reloadBtn) { | ||
| 278 | - _reloadBtn = [self getReloadBtn]; | ||
| 279 | - _reloadBtn.frame = self.view.bounds; | ||
| 280 | - [_reloadBtn addTarget:self action:@selector(getChannelList) forControlEvents:UIControlEventTouchUpInside]; | ||
| 281 | - [_reloadBtn addSubview:self.reloadLab]; | ||
| 282 | - } | ||
| 283 | - return _reloadBtn; | ||
| 284 | -} | ||
| 285 | - | ||
| 286 | -- (UILabel *)reloadLab | ||
| 287 | -{ | ||
| 288 | - if (!_reloadLab) { | ||
| 289 | - _reloadLab = [self getReloadLab]; | ||
| 290 | - _reloadLab.frame = CGRectMake(0, self.view.height/2+30, self.view.width, 20); | ||
| 291 | - } | ||
| 292 | - return _reloadLab; | ||
| 293 | -} | ||
| 294 | - | ||
| 295 | -// ------------------------------------------分割线--------------------------------------------------- | ||
| 296 | - | ||
| 297 | -- (nonnull UIButton *)getReloadBtn | ||
| 298 | -{ | ||
| 299 | - UIButton *reloadBtn = [UIButton buttonWithType:UIButtonTypeCustom]; | ||
| 300 | - reloadBtn.frame = CGRectMake(0, 0, 200, 200); | ||
| 301 | - [reloadBtn setImage:[UIImage imageNamed:@"load_04"] forState:UIControlStateNormal]; | ||
| 302 | - [reloadBtn setImage:[UIImage imageNamed:@"load_04"] forState:UIControlStateHighlighted]; | ||
| 303 | - return reloadBtn; | ||
| 304 | -} | ||
| 305 | - | ||
| 306 | -- (nonnull UILabel *)getReloadLab | ||
| 307 | -{ | ||
| 308 | - UILabel *reloadLab = [[UILabel alloc] initWithFrame:CGRectMake(0, 130, 200, 20)]; | ||
| 309 | - reloadLab.textAlignment = NSTextAlignmentCenter; | ||
| 310 | - reloadLab.textColor = [UIColor colorWithHexString:@"bdbcbc"]; | ||
| 311 | - return reloadLab; | ||
| 312 | -} | ||
| 313 | - | ||
| 314 | -- (void)didReceiveMemoryWarning { | ||
| 315 | - [super didReceiveMemoryWarning]; | ||
| 316 | - // Dispose of any resources that can be recreated. | ||
| 317 | -} | ||
| 318 | - | ||
| 319 | -@end |
LiveVideoCloud/Classes/Sections/HomePageSections/LVCMainHeaderCollectionReusableView.h deleted
100644 → 0
| 1 | -// | ||
| 2 | -// LVCMainHeaderCollectionReusableView.h | ||
| 3 | -// LiveVideoCloud | ||
| 4 | -// | ||
| 5 | -// Created by cnliveJunBo on 17/6/20. | ||
| 6 | -// Copyright © 2017年 cnlive. All rights reserved. | ||
| 7 | -// | ||
| 8 | - | ||
| 9 | -#import <UIKit/UIKit.h> | ||
| 10 | - | ||
| 11 | -@interface LVCMainHeaderCollectionReusableView : UICollectionReusableView | ||
| 12 | - | ||
| 13 | -@property (nonatomic, assign) BOOL live; | ||
| 14 | -@property (nonatomic, strong) NSArray *banners; | ||
| 15 | -@property (nonatomic, strong) NSArray *marquees; | ||
| 16 | - | ||
| 17 | -@end |
LiveVideoCloud/Classes/Sections/HomePageSections/LVCMainHeaderCollectionReusableView.m deleted
100644 → 0
| 1 | -// | ||
| 2 | -// LVCMainHeaderCollectionReusableView.m | ||
| 3 | -// LiveVideoCloud | ||
| 4 | -// | ||
| 5 | -// Created by cnliveJunBo on 17/6/20. | ||
| 6 | -// Copyright © 2017年 cnlive. All rights reserved. | ||
| 7 | -// | ||
| 8 | - | ||
| 9 | -#import "LVCMainHeaderCollectionReusableView.h" | ||
| 10 | -#import "JBBannerView.h" | ||
| 11 | -#import "JBAutoRollTableView.h" | ||
| 12 | - | ||
| 13 | -@interface LVCMainHeaderCollectionReusableView() | ||
| 14 | - | ||
| 15 | -@property (nonatomic, strong) JBBannerView *bannerView; | ||
| 16 | -@property (nonatomic, strong) JBAutoRollTableView *rollTableView; | ||
| 17 | - | ||
| 18 | -@end | ||
| 19 | - | ||
| 20 | -@implementation LVCMainHeaderCollectionReusableView | ||
| 21 | - | ||
| 22 | -- (instancetype)initWithFrame:(CGRect)frame | ||
| 23 | -{ | ||
| 24 | - self = [super initWithFrame:frame]; | ||
| 25 | - if (self) { | ||
| 26 | - [self addSubview:self.bannerView]; | ||
| 27 | - [self addSubview:self.rollTableView]; | ||
| 28 | - } | ||
| 29 | - return self; | ||
| 30 | -} | ||
| 31 | - | ||
| 32 | -- (void)setBanners:(NSArray *)banners { | ||
| 33 | - | ||
| 34 | - if (_banners != banners) { | ||
| 35 | - _banners = banners; | ||
| 36 | - } | ||
| 37 | - _bannerView.bannerArray = banners; | ||
| 38 | -} | ||
| 39 | - | ||
| 40 | -#pragma mark - GetMethod !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
| 41 | -- (JBBannerView *)bannerView { | ||
| 42 | - | ||
| 43 | - if (!_bannerView) { | ||
| 44 | - _bannerView = [[JBBannerView alloc] initWithFrame:CGRectMake(0, 70, self.bounds.size.width, self.bounds.size.width / 2 + 10)]; | ||
| 45 | - _bannerView.backgroundColor = [UIColor purpleColor]; | ||
| 46 | - } | ||
| 47 | - return _bannerView; | ||
| 48 | -} | ||
| 49 | - | ||
| 50 | -- (JBAutoRollTableView *)rollTableView { | ||
| 51 | - | ||
| 52 | - if (!_rollTableView) { | ||
| 53 | - _rollTableView = [[JBAutoRollTableView alloc] initWithFrame:CGRectMake(39, 250, KScreenWidth-40-25+6, 36) style:UITableViewStylePlain]; | ||
| 54 | - | ||
| 55 | - NSMutableArray *arrayM = [[NSMutableArray alloc] init]; | ||
| 56 | - ProgramModel *model1 = [[ProgramModel alloc] init]; | ||
| 57 | - model1.title = @"嘉华大厦十大富豪榜"; | ||
| 58 | - [arrayM addObject:model1]; | ||
| 59 | - ProgramModel *model2 = [[ProgramModel alloc] init]; | ||
| 60 | - model2.title = @"思考很久案发的感受"; | ||
| 61 | - [arrayM addObject:model2]; | ||
| 62 | - ProgramModel *model3 = [[ProgramModel alloc] init]; | ||
| 63 | - model3.title = @"模拟电路罚款金额虽"; | ||
| 64 | - [arrayM addObject:model3]; | ||
| 65 | - _rollTableView.news = arrayM; | ||
| 66 | - } | ||
| 67 | - return _rollTableView; | ||
| 68 | -} | ||
| 69 | - | ||
| 70 | -@end |
LiveVideoCloud/Classes/Sections/HomePageSections/LVCMainHorizontalCollectionViewCell.h deleted
100644 → 0
| 1 | -// | ||
| 2 | -// LVCMainHorizontalCollectionViewCell.h | ||
| 3 | -// LiveVideoCloud | ||
| 4 | -// | ||
| 5 | -// Created by cnliveJunBo on 17/6/20. | ||
| 6 | -// Copyright © 2017年 cnlive. All rights reserved. | ||
| 7 | -// | ||
| 8 | - | ||
| 9 | -#import <UIKit/UIKit.h> | ||
| 10 | - | ||
| 11 | -@interface LVCMainHorizontalCollectionViewCell : UICollectionViewCell | ||
| 12 | - | ||
| 13 | -@end |
LiveVideoCloud/Classes/Sections/HomePageSections/LVCMainHorizontalCollectionViewCell.m deleted
100644 → 0
| 1 | -// | ||
| 2 | -// LVCMainHorizontalCollectionViewCell.m | ||
| 3 | -// LiveVideoCloud | ||
| 4 | -// | ||
| 5 | -// Created by cnliveJunBo on 17/6/20. | ||
| 6 | -// Copyright © 2017年 cnlive. All rights reserved. | ||
| 7 | -// | ||
| 8 | - | ||
| 9 | -#import "LVCMainHorizontalCollectionViewCell.h" | ||
| 10 | - | ||
| 11 | -@implementation LVCMainHorizontalCollectionViewCell | ||
| 12 | - | ||
| 13 | -@end |
LiveVideoCloud/Classes/Sections/HomePageSections/LVCSectionHeaderCollectionReusableView.h deleted
100644 → 0
| 1 | -// | ||
| 2 | -// LVCSectionHeaderCollectionReusableView.h | ||
| 3 | -// LiveVideoCloud | ||
| 4 | -// | ||
| 5 | -// Created by cnliveJunBo on 17/6/20. | ||
| 6 | -// Copyright © 2017年 cnlive. All rights reserved. | ||
| 7 | -// | ||
| 8 | - | ||
| 9 | -#import <UIKit/UIKit.h> | ||
| 10 | - | ||
| 11 | -@interface LVCSectionHeaderCollectionReusableView : UICollectionReusableView | ||
| 12 | - | ||
| 13 | -@property (nonatomic, strong)LVCChannelDetailModel *model; | ||
| 14 | -@property (nonatomic, assign)BOOL sort; | ||
| 15 | -@property (nonatomic, assign)BOOL live; | ||
| 16 | -@property (nonatomic, strong)NSString *channelId; | ||
| 17 | -@property (nonatomic, strong)NSString *channelName; | ||
| 18 | - | ||
| 19 | -@end |
LiveVideoCloud/Classes/Sections/HomePageSections/LVCSectionHeaderCollectionReusableView.m deleted
100644 → 0
| 1 | -// | ||
| 2 | -// LVCSectionHeaderCollectionReusableView.m | ||
| 3 | -// LiveVideoCloud | ||
| 4 | -// | ||
| 5 | -// Created by cnliveJunBo on 17/6/20. | ||
| 6 | -// Copyright © 2017年 cnlive. All rights reserved. | ||
| 7 | -// | ||
| 8 | - | ||
| 9 | -#import "LVCSectionHeaderCollectionReusableView.h" | ||
| 10 | - | ||
| 11 | -@interface LVCSectionHeaderCollectionReusableView() | ||
| 12 | - | ||
| 13 | -@property (nonatomic, strong)UIButton *button; | ||
| 14 | -@property (nonatomic, strong)UIImageView *arrow; | ||
| 15 | - | ||
| 16 | -@end | ||
| 17 | - | ||
| 18 | -@implementation LVCSectionHeaderCollectionReusableView | ||
| 19 | - | ||
| 20 | -- (instancetype)initWithFrame:(CGRect)frame | ||
| 21 | -{ | ||
| 22 | - self = [super initWithFrame:frame]; | ||
| 23 | - if (self) { | ||
| 24 | - UIView *intervalView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.width, 6)]; | ||
| 25 | - intervalView.backgroundColor = [UIColor backgroundColor]; | ||
| 26 | - [self addSubview:intervalView]; | ||
| 27 | - [self addSubview:self.button]; | ||
| 28 | - [self addSubview:self.arrow]; | ||
| 29 | - } | ||
| 30 | - return self; | ||
| 31 | -} | ||
| 32 | - | ||
| 33 | -- (void)setModel:(LVCChannelDetailModel *)model { | ||
| 34 | - if (_model != model) { | ||
| 35 | - _model = model; | ||
| 36 | - } | ||
| 37 | - [self.button setTitle:[NSString stringWithFormat:@" %@", model.title] forState:UIControlStateNormal]; | ||
| 38 | -} | ||
| 39 | - | ||
| 40 | -#pragma mark - ACtion !!!!!!!!!!!!!!!!!!!!!!!!!! | ||
| 41 | -- (void)buttonAction { | ||
| 42 | - | ||
| 43 | - NSLog(@"跳转更多!!!!!!!!!!!!!!"); | ||
| 44 | -} | ||
| 45 | - | ||
| 46 | -#pragma mark - GetMethod !!!!!!!!!!!!!!!!!!!!!!!! | ||
| 47 | -- (UIButton *)button { | ||
| 48 | - | ||
| 49 | - if (!_button) { | ||
| 50 | - _button = [UIButton buttonWithType:UIButtonTypeCustom]; | ||
| 51 | - _button.frame = CGRectMake(0, 6, self.frame.size.width, 47); | ||
| 52 | - [_button setTitleColor:[UIColor blackColorCNLive] forState:UIControlStateNormal]; | ||
| 53 | - _button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; | ||
| 54 | - [_button addTarget:self action:@selector(buttonAction) forControlEvents:UIControlEventTouchUpInside]; | ||
| 55 | - _button.titleLabel.font = [UIFont boldSystemFontOfSize:18]; | ||
| 56 | - } | ||
| 57 | - return _button; | ||
| 58 | -} | ||
| 59 | - | ||
| 60 | -- (UIImageView *)arrow { | ||
| 61 | - | ||
| 62 | - if (!_arrow) { | ||
| 63 | - _arrow = [[UIImageView alloc] initWithFrame:CGRectMake(KScreenWidth-5-15, 19, 15, 21)]; | ||
| 64 | - _arrow.image = [UIImage imageNamed:@"gengduo"]; | ||
| 65 | - } | ||
| 66 | - return _arrow; | ||
| 67 | -} | ||
| 68 | - | ||
| 69 | -@end |
LiveVideoCloud/Classes/Sections/Mine/Controllers/LVCMineViewController.m
LiveVideoCloud/PrefixHeader.pch
| @@ -29,45 +29,31 @@ | @@ -29,45 +29,31 @@ | ||
| 29 | #import <CNLivePlayerSDK/CNLiveWebcastManager.h> | 29 | #import <CNLivePlayerSDK/CNLiveWebcastManager.h> |
| 30 | #import <CNLiveMsgTools/CNLiveMsgManager.h> | 30 | #import <CNLiveMsgTools/CNLiveMsgManager.h> |
| 31 | #import <CNLiveChatManager/CNLiveChatManager.h> | 31 | #import <CNLiveChatManager/CNLiveChatManager.h> |
| 32 | - #import "V8HorizontalPickerView.h" | ||
| 33 | - #import "MHPagingScrollView.h" | ||
| 34 | - #import "LVCHomePageListModel.h" | ||
| 35 | - #import "LVCBannerAndMarqueeModel.h" | ||
| 36 | -#include "LVCChannelDetailModel.h" | ||
| 37 | -#import "LVCBqWqXgModel.h" | ||
| 38 | -#import "LVCCommentModel.h" | ||
| 39 | - | ||
| 40 | -#import <CNLiveUserSystemSDK/CNLiveUserSystemCenter.h> | ||
| 41 | - | ||
| 42 | -#import "Common.h" | ||
| 43 | -#import "MJExtension.h"// | ||
| 44 | -#import "CNLiveMacro.h"// | ||
| 45 | -#import "NSNumber+ScaleHeight.h"//高度适配 | ||
| 46 | -#import "AFNetworking.h" | ||
| 47 | -#import "UIImageView+WebCache.h" | ||
| 48 | -//#import "NSDictionary+Safety.h" | ||
| 49 | -#import "Tools.h" | ||
| 50 | -#import "MJRefresh.h" | ||
| 51 | -#import <ImageIO/ImageIO.h>// | ||
| 52 | -#import "UIImage+ScaleImageSize.h"// | ||
| 53 | -//#import "CNRefreshHeader.h"// | ||
| 54 | -#import "UIView+ViewController.h" | ||
| 55 | -//#import "MBProgressHUD.h" | ||
| 56 | -#import "SevenSwitch.h" | ||
| 57 | -#import "DESUtility.h" | ||
| 58 | -//#import "CNLiveXMPPMessage.h" | ||
| 59 | -#import "UserInformationModel.h" | ||
| 60 | -//#import "EncryptAndDecrypt.h" | ||
| 61 | -//#import "Utility.h" | ||
| 62 | -//#import "CNLiveShare.h" | ||
| 63 | -//#import "ShareObject.h" | ||
| 64 | -#import "NSString+UrlEncode.h" | ||
| 65 | -#import "NSDictionary+Safety.h" | ||
| 66 | -#import "UserTools.h" | ||
| 67 | -#import "UIImage+GIF.h" | ||
| 68 | -#import "ZXUIKit.h"// | ||
| 69 | -#import "UIButton+createButton.h"// | ||
| 70 | -#import "ProgramModel.h" | 32 | + #import "LVCCommentModel.h" |
| 33 | + | ||
| 34 | + #import <CNLiveUserSystemSDK/CNLiveUserSystemCenter.h> | ||
| 35 | + | ||
| 36 | + #import "Common.h" | ||
| 37 | + #import "MJExtension.h" | ||
| 38 | + #import "CNLiveMacro.h" | ||
| 39 | + #import "NSNumber+ScaleHeight.h" | ||
| 40 | + #import "AFNetworking.h" | ||
| 41 | + #import "UIImageView+WebCache.h" | ||
| 42 | + #import "Tools.h" | ||
| 43 | + #import "MJRefresh.h" | ||
| 44 | + #import <ImageIO/ImageIO.h> | ||
| 45 | + #import "UIImage+ScaleImageSize.h" | ||
| 46 | + #import "UIView+ViewController.h" | ||
| 47 | + #import "SevenSwitch.h" | ||
| 48 | + #import "DESUtility.h" | ||
| 49 | + #import "UserInformationModel.h" | ||
| 50 | + #import "NSString+UrlEncode.h" | ||
| 51 | + #import "NSDictionary+Safety.h" | ||
| 52 | + #import "UserTools.h" | ||
| 53 | + #import "UIImage+GIF.h" | ||
| 54 | + #import "ZXUIKit.h" | ||
| 55 | + #import "UIButton+createButton.h" | ||
| 56 | + #import "ProgramModel.h" | ||
| 71 | 57 | ||
| 72 | 58 | ||
| 73 | #if TARGET_OS_IPHONE | 59 | #if TARGET_OS_IPHONE |