Commit 69c751236fe8d6793a62718ee59e48b97a23e57c

Authored by 朱林
2 parents d40cfad7 f50904d8

Merge branch 'master' of bj.gitlab.cnlive.com:ios-team/LiveVideoCloud

Conflicts:
	LiveVideoCloud/LiveVideoCloud.xcodeproj/project.pbxproj
Showing 100 changed files with 1121 additions and 0 deletions

Too many changes to show.

To preserve performance only 100 of 238 files are displayed.

LiveVideoCloud/LiveVideoCloud.xcodeproj/project.pbxproj
@@ -123,6 +123,17 @@ @@ -123,6 +123,17 @@
123 D2029D091E6EAE2E0027CD92 /* Foundation+Log.m in Sources */ = {isa = PBXBuildFile; fileRef = D2029CF21E6EAE2E0027CD92 /* Foundation+Log.m */; }; 123 D2029D091E6EAE2E0027CD92 /* Foundation+Log.m in Sources */ = {isa = PBXBuildFile; fileRef = D2029CF21E6EAE2E0027CD92 /* Foundation+Log.m */; };
124 D2029D0A1E6EAE2E0027CD92 /* ZXServerUrl.m in Sources */ = {isa = PBXBuildFile; fileRef = D2029CFE1E6EAE2E0027CD92 /* ZXServerUrl.m */; }; 124 D2029D0A1E6EAE2E0027CD92 /* ZXServerUrl.m in Sources */ = {isa = PBXBuildFile; fileRef = D2029CFE1E6EAE2E0027CD92 /* ZXServerUrl.m */; };
125 D2029D161E6EB00D0027CD92 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = D2029D151E6EB00D0027CD92 /* AppDelegate.m */; }; 125 D2029D161E6EB00D0027CD92 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = D2029D151E6EB00D0027CD92 /* AppDelegate.m */; };
  126 + D2575C461E76857100E3A8FC /* LVCAnimationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D2575C451E76857100E3A8FC /* LVCAnimationManager.m */; };
  127 + D2575C4A1E7685DE00E3A8FC /* UIView+Bubbling.m in Sources */ = {isa = PBXBuildFile; fileRef = D2575C481E7685DE00E3A8FC /* UIView+Bubbling.m */; };
  128 + D2575C671E76A25400E3A8FC /* LVCInteractionController.m in Sources */ = {isa = PBXBuildFile; fileRef = D2575C661E76A25400E3A8FC /* LVCInteractionController.m */; };
  129 + D2575C6B1E76A45400E3A8FC /* LVCGiftManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D2575C6A1E76A45400E3A8FC /* LVCGiftManager.m */; };
  130 + D2575C7A1E76A4F300E3A8FC /* NHCarViews.m in Sources */ = {isa = PBXBuildFile; fileRef = D2575C6F1E76A4F300E3A8FC /* NHCarViews.m */; };
  131 + D2575C7B1E76A4F300E3A8FC /* NHCarViews.xib in Resources */ = {isa = PBXBuildFile; fileRef = D2575C701E76A4F300E3A8FC /* NHCarViews.xib */; };
  132 + D2575C7C1E76A4F300E3A8FC /* NHFighterView.nib in Resources */ = {isa = PBXBuildFile; fileRef = D2575C721E76A4F300E3A8FC /* NHFighterView.nib */; };
  133 + D2575C7D1E76A4F300E3A8FC /* NHGiftAnimtionSDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D2575C731E76A4F300E3A8FC /* NHGiftAnimtionSDK.a */; };
  134 + D2575C7E1E76A4F300E3A8FC /* NHPlaneViews.m in Sources */ = {isa = PBXBuildFile; fileRef = D2575C771E76A4F300E3A8FC /* NHPlaneViews.m */; };
  135 + D2575C7F1E76A4F300E3A8FC /* NHPlaneViews.xib in Resources */ = {isa = PBXBuildFile; fileRef = D2575C781E76A4F300E3A8FC /* NHPlaneViews.xib */; };
  136 + D2575C801E76A4F300E3A8FC /* resource.bundle in Resources */ = {isa = PBXBuildFile; fileRef = D2575C791E76A4F300E3A8FC /* resource.bundle */; };
126 D2888D941E6EB8B4003A77C8 /* LVCTabBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D2888D931E6EB8B4003A77C8 /* LVCTabBar.m */; }; 137 D2888D941E6EB8B4003A77C8 /* LVCTabBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D2888D931E6EB8B4003A77C8 /* LVCTabBar.m */; };
127 D2888D9E1E6EBF1B003A77C8 /* LVCLiveViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D2888D9B1E6EBF1B003A77C8 /* LVCLiveViewController.m */; }; 138 D2888D9E1E6EBF1B003A77C8 /* LVCLiveViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D2888D9B1E6EBF1B003A77C8 /* LVCLiveViewController.m */; };
128 D2888DB11E6EC05F003A77C8 /* TempViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D2888DB01E6EC05F003A77C8 /* TempViewController.m */; }; 139 D2888DB11E6EC05F003A77C8 /* TempViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D2888DB01E6EC05F003A77C8 /* TempViewController.m */; };
@@ -407,6 +418,27 @@ @@ -407,6 +418,27 @@
407 D2029CFF1E6EAE2E0027CD92 /* UtilKits.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UtilKits.h; sourceTree = "<group>"; }; 418 D2029CFF1E6EAE2E0027CD92 /* UtilKits.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UtilKits.h; sourceTree = "<group>"; };
408 D2029D121E6EAF8D0027CD92 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; }; 419 D2029D121E6EAF8D0027CD92 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
409 D2029D151E6EB00D0027CD92 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; }; 420 D2029D151E6EB00D0027CD92 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
  421 + D2575C441E76857100E3A8FC /* LVCAnimationManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LVCAnimationManager.h; sourceTree = "<group>"; };
  422 + D2575C451E76857100E3A8FC /* LVCAnimationManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LVCAnimationManager.m; sourceTree = "<group>"; };
  423 + D2575C481E7685DE00E3A8FC /* UIView+Bubbling.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+Bubbling.m"; sourceTree = "<group>"; };
  424 + D2575C491E7685DE00E3A8FC /* UIView+Bubbling.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+Bubbling.h"; sourceTree = "<group>"; };
  425 + D2575C651E76A25400E3A8FC /* LVCInteractionController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LVCInteractionController.h; sourceTree = "<group>"; };
  426 + D2575C661E76A25400E3A8FC /* LVCInteractionController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LVCInteractionController.m; sourceTree = "<group>"; };
  427 + D2575C691E76A45400E3A8FC /* LVCGiftManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LVCGiftManager.h; sourceTree = "<group>"; };
  428 + D2575C6A1E76A45400E3A8FC /* LVCGiftManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LVCGiftManager.m; sourceTree = "<group>"; };
  429 + D2575C6D1E76A4F300E3A8FC /* NHCarView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NHCarView.h; sourceTree = "<group>"; };
  430 + D2575C6E1E76A4F300E3A8FC /* NHCarViews.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NHCarViews.h; sourceTree = "<group>"; };
  431 + D2575C6F1E76A4F300E3A8FC /* NHCarViews.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NHCarViews.m; sourceTree = "<group>"; };
  432 + D2575C701E76A4F300E3A8FC /* NHCarViews.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = NHCarViews.xib; sourceTree = "<group>"; };
  433 + D2575C711E76A4F300E3A8FC /* NHFighterView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NHFighterView.h; sourceTree = "<group>"; };
  434 + D2575C721E76A4F300E3A8FC /* NHFighterView.nib */ = {isa = PBXFileReference; lastKnownFileType = file; path = NHFighterView.nib; sourceTree = "<group>"; };
  435 + D2575C731E76A4F300E3A8FC /* NHGiftAnimtionSDK.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = NHGiftAnimtionSDK.a; sourceTree = "<group>"; };
  436 + D2575C741E76A4F300E3A8FC /* NHHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NHHeader.h; sourceTree = "<group>"; };
  437 + D2575C751E76A4F300E3A8FC /* NHPlaneView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NHPlaneView.h; sourceTree = "<group>"; };
  438 + D2575C761E76A4F300E3A8FC /* NHPlaneViews.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NHPlaneViews.h; sourceTree = "<group>"; };
  439 + D2575C771E76A4F300E3A8FC /* NHPlaneViews.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NHPlaneViews.m; sourceTree = "<group>"; };
  440 + D2575C781E76A4F300E3A8FC /* NHPlaneViews.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = NHPlaneViews.xib; sourceTree = "<group>"; };
  441 + D2575C791E76A4F300E3A8FC /* resource.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = resource.bundle; sourceTree = "<group>"; };
410 D2888D921E6EB8B4003A77C8 /* LVCTabBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LVCTabBar.h; sourceTree = "<group>"; }; 442 D2888D921E6EB8B4003A77C8 /* LVCTabBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LVCTabBar.h; sourceTree = "<group>"; };
411 D2888D931E6EB8B4003A77C8 /* LVCTabBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LVCTabBar.m; sourceTree = "<group>"; }; 443 D2888D931E6EB8B4003A77C8 /* LVCTabBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LVCTabBar.m; sourceTree = "<group>"; };
412 D2888D9A1E6EBF1B003A77C8 /* LVCLiveViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LVCLiveViewController.h; sourceTree = "<group>"; }; 444 D2888D9A1E6EBF1B003A77C8 /* LVCLiveViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LVCLiveViewController.h; sourceTree = "<group>"; };
@@ -424,6 +456,7 @@ @@ -424,6 +456,7 @@
424 isa = PBXFrameworksBuildPhase; 456 isa = PBXFrameworksBuildPhase;
425 buildActionMask = 2147483647; 457 buildActionMask = 2147483647;
426 files = ( 458 files = (
  459 + D2575C7D1E76A4F300E3A8FC /* NHGiftAnimtionSDK.a in Frameworks */,
427 812E50531E7699DC004F5FCD /* CNLivePlayerSDK.framework in Frameworks */, 460 812E50531E7699DC004F5FCD /* CNLivePlayerSDK.framework in Frameworks */,
428 812E50551E7699E9004F5FCD /* CNLiveMsgTools.framework in Frameworks */, 461 812E50551E7699E9004F5FCD /* CNLiveMsgTools.framework in Frameworks */,
429 ); 462 );
@@ -903,6 +936,7 @@ @@ -903,6 +936,7 @@
903 D2888DA71E6EC014003A77C8 /* homeSections */, 936 D2888DA71E6EC014003A77C8 /* homeSections */,
904 D2888D951E6EBAA7003A77C8 /* LiveSections */, 937 D2888D951E6EBAA7003A77C8 /* LiveSections */,
905 D2888DAB1E6EC014003A77C8 /* mySections */, 938 D2888DAB1E6EC014003A77C8 /* mySections */,
  939 + D2575C431E76846900E3A8FC /* InteractionSections */,
906 D2029C751E6EADE10027CD92 /* ZXSections(例子) */, 940 D2029C751E6EADE10027CD92 /* ZXSections(例子) */,
907 ); 941 );
908 path = Sections; 942 path = Sections;
@@ -1109,6 +1143,58 @@ @@ -1109,6 +1143,58 @@
1109 path = AppDelegate; 1143 path = AppDelegate;
1110 sourceTree = "<group>"; 1144 sourceTree = "<group>";
1111 }; 1145 };
  1146 + D2575C431E76846900E3A8FC /* InteractionSections */ = {
  1147 + isa = PBXGroup;
  1148 + children = (
  1149 + D2575C651E76A25400E3A8FC /* LVCInteractionController.h */,
  1150 + D2575C661E76A25400E3A8FC /* LVCInteractionController.m */,
  1151 + D2575C681E76A42B00E3A8FC /* Gift */,
  1152 + D2575C471E7685C500E3A8FC /* heartAnimation */,
  1153 + D2575C441E76857100E3A8FC /* LVCAnimationManager.h */,
  1154 + D2575C451E76857100E3A8FC /* LVCAnimationManager.m */,
  1155 + );
  1156 + path = InteractionSections;
  1157 + sourceTree = "<group>";
  1158 + };
  1159 + D2575C471E7685C500E3A8FC /* heartAnimation */ = {
  1160 + isa = PBXGroup;
  1161 + children = (
  1162 + D2575C491E7685DE00E3A8FC /* UIView+Bubbling.h */,
  1163 + D2575C481E7685DE00E3A8FC /* UIView+Bubbling.m */,
  1164 + );
  1165 + path = heartAnimation;
  1166 + sourceTree = "<group>";
  1167 + };
  1168 + D2575C681E76A42B00E3A8FC /* Gift */ = {
  1169 + isa = PBXGroup;
  1170 + children = (
  1171 + D2575C691E76A45400E3A8FC /* LVCGiftManager.h */,
  1172 + D2575C6A1E76A45400E3A8FC /* LVCGiftManager.m */,
  1173 + D2575C6C1E76A4F300E3A8FC /* GiftResource */,
  1174 + );
  1175 + path = Gift;
  1176 + sourceTree = "<group>";
  1177 + };
  1178 + D2575C6C1E76A4F300E3A8FC /* GiftResource */ = {
  1179 + isa = PBXGroup;
  1180 + children = (
  1181 + D2575C6D1E76A4F300E3A8FC /* NHCarView.h */,
  1182 + D2575C6E1E76A4F300E3A8FC /* NHCarViews.h */,
  1183 + D2575C6F1E76A4F300E3A8FC /* NHCarViews.m */,
  1184 + D2575C701E76A4F300E3A8FC /* NHCarViews.xib */,
  1185 + D2575C711E76A4F300E3A8FC /* NHFighterView.h */,
  1186 + D2575C721E76A4F300E3A8FC /* NHFighterView.nib */,
  1187 + D2575C731E76A4F300E3A8FC /* NHGiftAnimtionSDK.a */,
  1188 + D2575C741E76A4F300E3A8FC /* NHHeader.h */,
  1189 + D2575C751E76A4F300E3A8FC /* NHPlaneView.h */,
  1190 + D2575C761E76A4F300E3A8FC /* NHPlaneViews.h */,
  1191 + D2575C771E76A4F300E3A8FC /* NHPlaneViews.m */,
  1192 + D2575C781E76A4F300E3A8FC /* NHPlaneViews.xib */,
  1193 + D2575C791E76A4F300E3A8FC /* resource.bundle */,
  1194 + );
  1195 + path = GiftResource;
  1196 + sourceTree = "<group>";
  1197 + };
1112 D2888D911E6EB897003A77C8 /* View */ = { 1198 D2888D911E6EB897003A77C8 /* View */ = {
1113 isa = PBXGroup; 1199 isa = PBXGroup;
1114 children = ( 1200 children = (
@@ -1331,10 +1417,14 @@ @@ -1331,10 +1417,14 @@
1331 buildActionMask = 2147483647; 1417 buildActionMask = 2147483647;
1332 files = ( 1418 files = (
1333 D2029C971E6EADE10027CD92 /* Info.plist in Resources */, 1419 D2029C971E6EADE10027CD92 /* Info.plist in Resources */,
  1420 + D2575C7F1E76A4F300E3A8FC /* NHPlaneViews.xib in Resources */,
  1421 + D2575C7B1E76A4F300E3A8FC /* NHCarViews.xib in Resources */,
1334 D2029CC91E6EADE10027CD92 /* SVProgressHUD.bundle in Resources */, 1422 D2029CC91E6EADE10027CD92 /* SVProgressHUD.bundle in Resources */,
  1423 + D2575C801E76A4F300E3A8FC /* resource.bundle in Resources */,
1335 D2029B941E6EAAA50027CD92 /* LaunchScreen.storyboard in Resources */, 1424 D2029B941E6EAAA50027CD92 /* LaunchScreen.storyboard in Resources */,
1336 D2029B911E6EAAA50027CD92 /* Assets.xcassets in Resources */, 1425 D2029B911E6EAAA50027CD92 /* Assets.xcassets in Resources */,
1337 D2029CB01E6EADE10027CD92 /* MJRefresh.bundle in Resources */, 1426 D2029CB01E6EADE10027CD92 /* MJRefresh.bundle in Resources */,
  1427 + D2575C7C1E76A4F300E3A8FC /* NHFighterView.nib in Resources */,
1338 812E50541E7699DC004F5FCD /* KSYGPUResource.bundle in Resources */, 1428 812E50541E7699DC004F5FCD /* KSYGPUResource.bundle in Resources */,
1339 D2029B8F1E6EAAA50027CD92 /* Main.storyboard in Resources */, 1429 D2029B8F1E6EAAA50027CD92 /* Main.storyboard in Resources */,
1340 ); 1430 );
@@ -1383,6 +1473,7 @@ @@ -1383,6 +1473,7 @@
1383 D2029C8D1E6EADE10027CD92 /* AFAutoPurgingImageCache.m in Sources */, 1473 D2029C8D1E6EADE10027CD92 /* AFAutoPurgingImageCache.m in Sources */,
1384 D2029D011E6EAE2E0027CD92 /* UIColor+HexString.m in Sources */, 1474 D2029D011E6EAE2E0027CD92 /* UIColor+HexString.m in Sources */,
1385 D2029CA41E6EADE10027CD92 /* MJRefreshComponent.m in Sources */, 1475 D2029CA41E6EADE10027CD92 /* MJRefreshComponent.m in Sources */,
  1476 + D2575C7A1E76A4F300E3A8FC /* NHCarViews.m in Sources */,
1386 D2029CBC1E6EADE10027CD92 /* SDWebImageDownloaderOperation.m in Sources */, 1477 D2029CBC1E6EADE10027CD92 /* SDWebImageDownloaderOperation.m in Sources */,
1387 D2029CA51E6EADE10027CD92 /* MJRefreshFooter.m in Sources */, 1478 D2029CA51E6EADE10027CD92 /* MJRefreshFooter.m in Sources */,
1388 810B65061E779B1F00133E15 /* View+MASAdditions.m in Sources */, 1479 810B65061E779B1F00133E15 /* View+MASAdditions.m in Sources */,
@@ -1399,6 +1490,7 @@ @@ -1399,6 +1490,7 @@
1399 D2029C9B1E6EADE10027CD92 /* MJPropertyKey.m in Sources */, 1490 D2029C9B1E6EADE10027CD92 /* MJPropertyKey.m in Sources */,
1400 D2029CBF1E6EADE10027CD92 /* UIButton+WebCache.m in Sources */, 1491 D2029CBF1E6EADE10027CD92 /* UIButton+WebCache.m in Sources */,
1401 810B64E31E779AFE00133E15 /* LVCLivePlayerController.m in Sources */, 1492 810B64E31E779AFE00133E15 /* LVCLivePlayerController.m in Sources */,
  1493 + D2575C7E1E76A4F300E3A8FC /* NHPlaneViews.m in Sources */,
1402 D2029CC51E6EADE10027CD92 /* UIView+WebCacheOperation.m in Sources */, 1494 D2029CC51E6EADE10027CD92 /* UIView+WebCacheOperation.m in Sources */,
1403 D2029CAB1E6EADE10027CD92 /* MJRefreshBackNormalFooter.m in Sources */, 1495 D2029CAB1E6EADE10027CD92 /* MJRefreshBackNormalFooter.m in Sources */,
1404 D2029C8F1E6EADE10027CD92 /* AFNetworkActivityIndicatorManager.m in Sources */, 1496 D2029C8F1E6EADE10027CD92 /* AFNetworkActivityIndicatorManager.m in Sources */,
@@ -1407,6 +1499,7 @@ @@ -1407,6 +1499,7 @@
1407 D2029CA21E6EADE10027CD92 /* MJRefreshAutoFooter.m in Sources */, 1499 D2029CA21E6EADE10027CD92 /* MJRefreshAutoFooter.m in Sources */,
1408 D2029CC71E6EADE10027CD92 /* SVIndefiniteAnimatedView.m in Sources */, 1500 D2029CC71E6EADE10027CD92 /* SVIndefiniteAnimatedView.m in Sources */,
1409 D2029CA31E6EADE10027CD92 /* MJRefreshBackFooter.m in Sources */, 1501 D2029CA31E6EADE10027CD92 /* MJRefreshBackFooter.m in Sources */,
  1502 + D2575C4A1E7685DE00E3A8FC /* UIView+Bubbling.m in Sources */,
1410 D2029CA61E6EADE10027CD92 /* MJRefreshHeader.m in Sources */, 1503 D2029CA61E6EADE10027CD92 /* MJRefreshHeader.m in Sources */,
1411 D2029CC41E6EADE10027CD92 /* UIImageView+WebCache.m in Sources */, 1504 D2029CC41E6EADE10027CD92 /* UIImageView+WebCache.m in Sources */,
1412 D2029CC81E6EADE10027CD92 /* SVProgressAnimatedView.m in Sources */, 1505 D2029CC81E6EADE10027CD92 /* SVProgressAnimatedView.m in Sources */,
@@ -1417,6 +1510,7 @@ @@ -1417,6 +1510,7 @@
1417 D2029CB61E6EADE10027CD92 /* MKAnnotationView+WebCache.m in Sources */, 1510 D2029CB61E6EADE10027CD92 /* MKAnnotationView+WebCache.m in Sources */,
1418 810B64FE1E779B1F00133E15 /* MASCompositeConstraint.m in Sources */, 1511 810B64FE1E779B1F00133E15 /* MASCompositeConstraint.m in Sources */,
1419 D2029C981E6EADE10027CD92 /* MJExtensionConst.m in Sources */, 1512 D2029C981E6EADE10027CD92 /* MJExtensionConst.m in Sources */,
  1513 + D2575C671E76A25400E3A8FC /* LVCInteractionController.m in Sources */,
1420 D2029CAE1E6EADE10027CD92 /* MJRefreshNormalHeader.m in Sources */, 1514 D2029CAE1E6EADE10027CD92 /* MJRefreshNormalHeader.m in Sources */,
1421 D2029C901E6EADE10027CD92 /* UIActivityIndicatorView+AFNetworking.m in Sources */, 1515 D2029C901E6EADE10027CD92 /* UIActivityIndicatorView+AFNetworking.m in Sources */,
1422 D2029CC61E6EADE10027CD92 /* SSKeychain.m in Sources */, 1516 D2029CC61E6EADE10027CD92 /* SSKeychain.m in Sources */,
@@ -1424,6 +1518,7 @@ @@ -1424,6 +1518,7 @@
1424 D2029C921E6EADE10027CD92 /* UIImageView+AFNetworking.m in Sources */, 1518 D2029C921E6EADE10027CD92 /* UIImageView+AFNetworking.m in Sources */,
1425 D2029C9E1E6EADE10027CD92 /* NSObject+MJCoding.m in Sources */, 1519 D2029C9E1E6EADE10027CD92 /* NSObject+MJCoding.m in Sources */,
1426 D2029C991E6EADE10027CD92 /* MJFoundation.m in Sources */, 1520 D2029C991E6EADE10027CD92 /* MJFoundation.m in Sources */,
  1521 + D2575C461E76857100E3A8FC /* LVCAnimationManager.m in Sources */,
1427 D2029C8A1E6EADE10027CD92 /* AFURLRequestSerialization.m in Sources */, 1522 D2029C8A1E6EADE10027CD92 /* AFURLRequestSerialization.m in Sources */,
1428 D2029D041E6EAE2E0027CD92 /* UILabel+ContentSize.m in Sources */, 1523 D2029D041E6EAE2E0027CD92 /* UILabel+ContentSize.m in Sources */,
1429 D2029C871E6EADE10027CD92 /* AFHTTPSessionManager.m in Sources */, 1524 D2029C871E6EADE10027CD92 /* AFHTTPSessionManager.m in Sources */,
@@ -1456,6 +1551,7 @@ @@ -1456,6 +1551,7 @@
1456 D2029D001E6EAE2E0027CD92 /* NSNumber+ScaleHeight.m in Sources */, 1551 D2029D001E6EAE2E0027CD92 /* NSNumber+ScaleHeight.m in Sources */,
1457 D2888D9E1E6EBF1B003A77C8 /* LVCLiveViewController.m in Sources */, 1552 D2888D9E1E6EBF1B003A77C8 /* LVCLiveViewController.m in Sources */,
1458 D2029C951E6EADE10027CD92 /* UIWebView+AFNetworking.m in Sources */, 1553 D2029C951E6EADE10027CD92 /* UIWebView+AFNetworking.m in Sources */,
  1554 + D2575C6B1E76A45400E3A8FC /* LVCGiftManager.m in Sources */,
1459 D2029CBD1E6EADE10027CD92 /* SDWebImageManager.m in Sources */, 1555 D2029CBD1E6EADE10027CD92 /* SDWebImageManager.m in Sources */,
1460 D2029CB41E6EADE10027CD92 /* UIView+MJExtension.m in Sources */, 1556 D2029CB41E6EADE10027CD92 /* UIView+MJExtension.m in Sources */,
1461 D2029CA91E6EADE10027CD92 /* MJRefreshAutoStateFooter.m in Sources */, 1557 D2029CA91E6EADE10027CD92 /* MJRefreshAutoStateFooter.m in Sources */,
@@ -1626,6 +1722,10 @@ @@ -1626,6 +1722,10 @@
1626 INFOPLIST_FILE = LiveVideoCloud/Info.plist; 1722 INFOPLIST_FILE = LiveVideoCloud/Info.plist;
1627 IPHONEOS_DEPLOYMENT_TARGET = 8.0; 1723 IPHONEOS_DEPLOYMENT_TARGET = 8.0;
1628 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 1724 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
  1725 + LIBRARY_SEARCH_PATHS = (
  1726 + "$(inherited)",
  1727 + "$(PROJECT_DIR)/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource",
  1728 + );
1629 PRODUCT_BUNDLE_IDENTIFIER = com.cnlive.zhangxu.LiveVideoCloud; 1729 PRODUCT_BUNDLE_IDENTIFIER = com.cnlive.zhangxu.LiveVideoCloud;
1630 PRODUCT_NAME = "$(TARGET_NAME)"; 1730 PRODUCT_NAME = "$(TARGET_NAME)";
1631 }; 1731 };
@@ -1644,6 +1744,10 @@ @@ -1644,6 +1744,10 @@
1644 INFOPLIST_FILE = LiveVideoCloud/Info.plist; 1744 INFOPLIST_FILE = LiveVideoCloud/Info.plist;
1645 IPHONEOS_DEPLOYMENT_TARGET = 8.0; 1745 IPHONEOS_DEPLOYMENT_TARGET = 8.0;
1646 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 1746 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
  1747 + LIBRARY_SEARCH_PATHS = (
  1748 + "$(inherited)",
  1749 + "$(PROJECT_DIR)/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource",
  1750 + );
1647 PRODUCT_BUNDLE_IDENTIFIER = com.cnlive.zhangxu.LiveVideoCloud; 1751 PRODUCT_BUNDLE_IDENTIFIER = com.cnlive.zhangxu.LiveVideoCloud;
1648 PRODUCT_NAME = "$(TARGET_NAME)"; 1752 PRODUCT_NAME = "$(TARGET_NAME)";
1649 }; 1753 };
LiveVideoCloud/LiveVideoCloud/Assets.xcassets/Interaction/Contents.json 0 → 100644
  1 +{
  2 + "info" : {
  3 + "version" : 1,
  4 + "author" : "xcode"
  5 + }
  6 +}
0 \ No newline at end of file 7 \ No newline at end of file
LiveVideoCloud/LiveVideoCloud/Assets.xcassets/Interaction/ic_menu_bluepig.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "filename" : "ic_menu_bluepig.png",
  6 + "scale" : "1x"
  7 + },
  8 + {
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/LiveVideoCloud/Assets.xcassets/Interaction/ic_menu_bluepig.imageset/ic_menu_bluepig.png 0 → 100644

26.1 KB

LiveVideoCloud/LiveVideoCloud/Assets.xcassets/Interaction/ic_menu_bluepig2.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "filename" : "ic_menu_bluepig2.png",
  6 + "scale" : "1x"
  7 + },
  8 + {
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/LiveVideoCloud/Assets.xcassets/Interaction/ic_menu_bluepig2.imageset/ic_menu_bluepig2.png 0 → 100644

24.2 KB

LiveVideoCloud/LiveVideoCloud/Assets.xcassets/Interaction/ic_menu_greenpig.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "filename" : "ic_menu_greenpig.png",
  6 + "scale" : "1x"
  7 + },
  8 + {
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/LiveVideoCloud/Assets.xcassets/Interaction/ic_menu_greenpig.imageset/ic_menu_greenpig.png 0 → 100644

26.9 KB

LiveVideoCloud/LiveVideoCloud/Assets.xcassets/Interaction/ic_menu_greenpig2.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "filename" : "ic_menu_greenpig2.png",
  6 + "scale" : "1x"
  7 + },
  8 + {
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/LiveVideoCloud/Assets.xcassets/Interaction/ic_menu_greenpig2.imageset/ic_menu_greenpig2.png 0 → 100644

24.5 KB

LiveVideoCloud/LiveVideoCloud/Assets.xcassets/Interaction/ic_menu_pinkpig.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "filename" : "ic_menu_pinkpig.png",
  6 + "scale" : "1x"
  7 + },
  8 + {
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/LiveVideoCloud/Assets.xcassets/Interaction/ic_menu_pinkpig.imageset/ic_menu_pinkpig.png 0 → 100644

24.3 KB

LiveVideoCloud/LiveVideoCloud/Assets.xcassets/Interaction/ic_menu_pinkpig2.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "filename" : "ic_menu_pinkpig2.png",
  6 + "scale" : "1x"
  7 + },
  8 + {
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/LiveVideoCloud/Assets.xcassets/Interaction/ic_menu_pinkpig2.imageset/ic_menu_pinkpig2.png 0 → 100644

26.1 KB

LiveVideoCloud/LiveVideoCloud/Assets.xcassets/Interaction/ic_menu_purplepig.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "filename" : "ic_menu_purplepig.png",
  6 + "scale" : "1x"
  7 + },
  8 + {
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/LiveVideoCloud/Assets.xcassets/Interaction/ic_menu_purplepig.imageset/ic_menu_purplepig.png 0 → 100644

26.3 KB

LiveVideoCloud/LiveVideoCloud/Assets.xcassets/Interaction/ic_menu_purplepig2.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "filename" : "ic_menu_purplepig2.png",
  6 + "scale" : "1x"
  7 + },
  8 + {
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/LiveVideoCloud/Assets.xcassets/Interaction/ic_menu_purplepig2.imageset/ic_menu_purplepig2.png 0 → 100644

24.4 KB

LiveVideoCloud/LiveVideoCloud/Assets.xcassets/Interaction/ic_menu_yellowpig.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "filename" : "ic_menu_yellowpig.png",
  6 + "scale" : "1x"
  7 + },
  8 + {
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/LiveVideoCloud/Assets.xcassets/Interaction/ic_menu_yellowpig.imageset/ic_menu_yellowpig.png 0 → 100644

26.2 KB

LiveVideoCloud/LiveVideoCloud/Assets.xcassets/Interaction/ic_menu_yellowpig2.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "filename" : "ic_menu_yellowpig2.png",
  6 + "scale" : "1x"
  7 + },
  8 + {
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "scale" : "3x"
  15 + }
  16 + ],
  17 + "info" : {
  18 + "version" : 1,
  19 + "author" : "xcode"
  20 + }
  21 +}
0 \ No newline at end of file 22 \ No newline at end of file
LiveVideoCloud/LiveVideoCloud/Assets.xcassets/Interaction/ic_menu_yellowpig2.imageset/ic_menu_yellowpig2.png 0 → 100644

24.4 KB

LiveVideoCloud/LiveVideoCloud/Assets.xcassets/Interaction/love.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "idiom" : "universal",
  9 + "filename" : "love@2x.png",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "idiom" : "universal",
  14 + "filename" : "love@3x.png",
  15 + "scale" : "3x"
  16 + }
  17 + ],
  18 + "info" : {
  19 + "version" : 1,
  20 + "author" : "xcode"
  21 + }
  22 +}
0 \ No newline at end of file 23 \ No newline at end of file
LiveVideoCloud/LiveVideoCloud/Assets.xcassets/Interaction/love.imageset/love@2x.png 0 → 100644

1.9 KB

LiveVideoCloud/LiveVideoCloud/Assets.xcassets/Interaction/love.imageset/love@3x.png 0 → 100644

2.99 KB

LiveVideoCloud/LiveVideoCloud/Assets.xcassets/Begin to live.imageset/Begin to live.png renamed to LiveVideoCloud/LiveVideoCloud/Assets.xcassets/tabBar/Begin to live.imageset/Begin to live.png

11.6 KB

LiveVideoCloud/LiveVideoCloud/Assets.xcassets/Begin to live.imageset/Contents.json renamed to LiveVideoCloud/LiveVideoCloud/Assets.xcassets/tabBar/Begin to live.imageset/Contents.json
LiveVideoCloud/LiveVideoCloud/Assets.xcassets/tabBar/Contents.json 0 → 100644
  1 +{
  2 + "info" : {
  3 + "version" : 1,
  4 + "author" : "xcode"
  5 + }
  6 +}
0 \ No newline at end of file 7 \ No newline at end of file
LiveVideoCloud/LiveVideoCloud/Assets.xcassets/home page-click on.imageset/Contents.json renamed to LiveVideoCloud/LiveVideoCloud/Assets.xcassets/tabBar/home page-click on.imageset/Contents.json
LiveVideoCloud/LiveVideoCloud/Assets.xcassets/home page-click on.imageset/home page-click on.png renamed to LiveVideoCloud/LiveVideoCloud/Assets.xcassets/tabBar/home page-click on.imageset/home page-click on.png

2.93 KB

LiveVideoCloud/LiveVideoCloud/Assets.xcassets/home page.imageset/Contents.json renamed to LiveVideoCloud/LiveVideoCloud/Assets.xcassets/tabBar/home page.imageset/Contents.json
LiveVideoCloud/LiveVideoCloud/Assets.xcassets/home page.imageset/home page.png renamed to LiveVideoCloud/LiveVideoCloud/Assets.xcassets/tabBar/home page.imageset/home page.png

2.68 KB

LiveVideoCloud/LiveVideoCloud/Assets.xcassets/my-click on.imageset/Contents.json renamed to LiveVideoCloud/LiveVideoCloud/Assets.xcassets/tabBar/my-click on.imageset/Contents.json
LiveVideoCloud/LiveVideoCloud/Assets.xcassets/my-click on.imageset/my-click on.png renamed to LiveVideoCloud/LiveVideoCloud/Assets.xcassets/tabBar/my-click on.imageset/my-click on.png

3.01 KB

LiveVideoCloud/LiveVideoCloud/Assets.xcassets/my.imageset/Contents.json renamed to LiveVideoCloud/LiveVideoCloud/Assets.xcassets/tabBar/my.imageset/Contents.json
LiveVideoCloud/LiveVideoCloud/Assets.xcassets/my.imageset/my.png renamed to LiveVideoCloud/LiveVideoCloud/Assets.xcassets/tabBar/my.imageset/my.png

2.89 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/NHCarView.h 0 → 100755
  1 +//
  2 +// NHCarView.h
  3 +// NHGiftAnimation
  4 +//
  5 +// Created by simope on 16/7/8.
  6 +// Copyright © 2016年 NegHao.W. All rights reserved.
  7 +//
  8 +
  9 +#import <UIKit/UIKit.h>
  10 +
  11 +@interface NHCarView : UIView
  12 +/**
  13 + * 需要几个控制点就设置几个:
  14 + * 数组内的每个元素代码一个控制点和结束点
  15 + * 数组中放CGRect数据,CGRect的x和y分别作为控制点的x和y,CGRect的width和height作为结束点的x和y
  16 + */
  17 +@property (nullable, nonatomic, copy) NSArray *curveControlAndEndPoints;
  18 +
  19 +/**
  20 + * 动画结束后动画层是否从当前视图上移除,默认 NO
  21 + */
  22 +@property (nonatomic, assign) BOOL removedOnCompletion;
  23 +
  24 +/**
  25 + * 放大倍数:从(from)scale 到(to)scale 默认0.7 - 2.0
  26 + */
  27 +
  28 +@property (nullable, strong) id scaleFromValue;
  29 +@property (nullable, strong) id scaleToValue;
  30 +
  31 +/**
  32 + * 动画时间,有默认值
  33 + */
  34 +@property (nonatomic, assign) CGFloat positionDuration;
  35 +
  36 +/**
  37 + * 动画scale时间,有默认值
  38 + */
  39 +@property (nonatomic, assign) CGFloat scaleDuration;
  40 +
  41 +/**
  42 + * move速度,有默认值
  43 + */
  44 +@property (nonatomic, assign) CGFloat positionSpeed;
  45 +
  46 +/**
  47 + * scale速度,有默认值
  48 + */
  49 +@property (nonatomic, assign) CGFloat scaleSpeed;
  50 +
  51 +/**
  52 + * 开始scale时间
  53 + */
  54 +@property (nonatomic, assign) CGFloat beginScaleTime;
  55 +
  56 +/**
  57 + * 加载动画视图
  58 + *
  59 + * @param point 动画视图的大小
  60 + *
  61 + * @return 返回你需要的动画视图
  62 + */
  63 ++ (nullable instancetype)loadCarViewWithPoint:(CGPoint)point;
  64 +
  65 +
  66 +/**
  67 + * 设置动画的运行轨迹
  68 + * 注:调此方法前,如需要设置多于两个控制点的动画,请先设置好curve_control_point_*及curve_end_point_*位置
  69 + 其它属性也是一样,在调此方法前设置好
  70 + * @param movePoints 开始的位置(出发点)
  71 + * @param endPoint 最终动画所在停留的位置
  72 + */
  73 +- (void)addAnimationsMoveToPoint:(CGPoint)movePoints endPoint:(CGPoint)endPoint;
  74 +
  75 +
  76 +@end
LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/NHCarViews.h 0 → 100755
  1 +//
  2 +// NHCarView.h
  3 +// NHGiftAnimation
  4 +//
  5 +// Created by simope on 16/7/8.
  6 +// Copyright © 2016年 NegHao.W. All rights reserved.
  7 +//
  8 +
  9 +#import <UIKit/UIKit.h>
  10 +
  11 +@interface NHCarViews : UIView
  12 +/**
  13 + * 需要几个控制点就设置几个:
  14 + * 数组内的每个元素代码一个控制点和结束点
  15 + * 数组中放CGRect数据,CGRect的x和y分别作为控制点的x和y,CGRect的width和height作为结束点的x和y
  16 + */
  17 +@property (nullable, nonatomic, copy) NSArray *curveControlAndEndPoints;
  18 +
  19 +/**
  20 + * 动画结束后动画层是否从当前视图上移除,默认 NO
  21 + */
  22 +@property (nonatomic, assign) BOOL removedOnCompletion;
  23 +
  24 +/**
  25 + * 放大倍数:从(from)scale 到(to)scale 默认0.7 - 2.0
  26 + */
  27 +
  28 +@property (nullable, strong) id scaleFromValue;
  29 +@property (nullable, strong) id scaleToValue;
  30 +
  31 +/**
  32 + * 动画时间,有默认值
  33 + */
  34 +@property (nonatomic, assign) CGFloat positionDuration;
  35 +
  36 +/**
  37 + * 动画scale时间,有默认值
  38 + */
  39 +@property (nonatomic, assign) CGFloat scaleDuration;
  40 +
  41 +/**
  42 + * move速度,有默认值
  43 + */
  44 +@property (nonatomic, assign) CGFloat positionSpeed;
  45 +
  46 +/**
  47 + * scale速度,有默认值
  48 + */
  49 +@property (nonatomic, assign) CGFloat scaleSpeed;
  50 +
  51 +/**
  52 + * 开始scale时间
  53 + */
  54 +@property (nonatomic, assign) CGFloat beginScaleTime;
  55 +
  56 +/**
  57 + * 加载动画视图
  58 + *
  59 + * @param point 动画视图的大小
  60 + *
  61 + * @return 返回你需要的动画视图
  62 + */
  63 ++ (nullable instancetype)loadCarViewWithPoint:(CGPoint)point;
  64 +
  65 +
  66 +/**
  67 + * 设置动画的运行轨迹
  68 + * 注:调此方法前,如需要设置多于两个控制点的动画,请先设置好curve_control_point_*及curve_end_point_*位置
  69 + 其它属性也是一样,在调此方法前设置好
  70 + * @param movePoints 开始的位置(出发点)
  71 + * @param endPoint 最终动画所在停留的位置
  72 + */
  73 +- (void)addAnimationsMoveToPoint:(CGPoint)movePoints endPoint:(CGPoint)endPoint;
  74 +
  75 +
  76 +@end
LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/NHCarViews.m 0 → 100755
  1 +//
  2 +// NHCarView.m
  3 +// NHGiftAnimation
  4 +//
  5 +// Created by simope on 16/7/8.
  6 +// Copyright © 2016年 NegHao.W. All rights reserved.
  7 +//
  8 +
  9 +#import "NHCarViews.h"
  10 +#import "NHHeader.h"
  11 +
  12 +@interface NHCarViews ()<CAAnimationDelegate>
  13 +
  14 +@property (weak, nonatomic) IBOutlet UIImageView *afterWheel;
  15 +@property (weak, nonatomic) IBOutlet UIImageView *beforeWheel;
  16 +@property (weak, nonatomic) IBOutlet UIImageView *carBackImage;
  17 +@property (weak, nonatomic) IBOutlet UIImageView *light;
  18 +@property (nonatomic, copy) NSMutableArray *animations;
  19 +
  20 +@end
  21 +
  22 +@implementation NHCarViews
  23 +
  24 +- (NSMutableArray *)animations{
  25 +
  26 + if (_animations == nil) {
  27 + _animations = [[NSMutableArray alloc] init];
  28 + }
  29 + return _animations;
  30 +}
  31 +
  32 ++ (instancetype)loadCarViewWithPoint:(CGPoint)point{
  33 + NHCarViews *car = [[NSBundle mainBundle]loadNibNamed:@"NHCarViews" owner:self options:nil].lastObject;
  34 + car.frame = CGRectMake(point.x, point.y, 166, 70);
  35 + [car setPoints];
  36 +
  37 + [car setPlaneScrewImages:nil];
  38 + return car;
  39 +}
  40 +
  41 +
  42 +- (instancetype)loadCarViewWithNib:(CGPoint)point{
  43 + NHCarViews *car = [[NSBundle mainBundle]loadNibNamed:@"NHCarViews" owner:self options:nil].lastObject;
  44 + car.frame = CGRectMake(point.x, point.y, 166, 70);
  45 + [car setPoints];
  46 + [car setPlaneScrewImages:nil];
  47 + return car;
  48 +}
  49 +
  50 +
  51 +//- (instancetype)initWithFrame:(CGRect)frame{
  52 +//
  53 +// if (self = [super initWithFrame:frame]) {
  54 +// [self addSubview:[self loadCarViewWithNib:frame.origin]];
  55 +// }
  56 +// return self;
  57 +//}
  58 +
  59 +
  60 +//- (void)layoutSubviews{
  61 +// [super layoutSubviews];
  62 +// self.carBackImage.frame = self.bounds;
  63 +// CGSize newSize = self.carBackImage.frame.size;
  64 +// _afterWheel.frame = CGRectMake(2, newSize.height *0.276, newSize.width * 0.0662, newSize.height * 0.314);
  65 +// _beforeWheel.frame = CGRectMake(newSize.width * 0.4337, newSize.height *0.514, newSize.width * 0.132, newSize.height * 0.43);
  66 +// _light.frame = CGRectMake(newSize.width * 0.584, newSize.height *0.072, newSize.width * 0.283, newSize.height * 0.714);
  67 +//}
  68 +
  69 +
  70 +- (void)addAnimationsMoveToPoint:(CGPoint)movePoints endPoint:(CGPoint)endPoint{
  71 +
  72 + CAKeyframeAnimation *position = [CAKeyframeAnimation animationWithKeyPath:@"position"];
  73 + CGMutablePathRef path = CGPathCreateMutable();
  74 + CGPathMoveToPoint(path, NULL, movePoints.x, movePoints.y);
  75 +
  76 + [self.curveControlAndEndPoints enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
  77 + CGRect rect = CGRectFromString(obj);
  78 + CGPathAddQuadCurveToPoint(path, NULL, rect.origin.x, rect.origin.y, rect.size.width, rect.size.height);
  79 + }];
  80 +
  81 + CGPathAddQuadCurveToPoint(path, NULL, endPoint.x, endPoint.y, endPoint.x, endPoint.y);
  82 + position.path = path;
  83 + position.duration = _positionDuration;
  84 + position.speed = _positionSpeed;
  85 + position.removedOnCompletion = _removedOnCompletion;
  86 + position.fillMode = kCAFillModeForwards;
  87 +
  88 + CABasicAnimation *scaleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
  89 + scaleAnimation.duration = _scaleDuration;
  90 + scaleAnimation.beginTime = _beginScaleTime;
  91 + scaleAnimation.fromValue = _scaleFromValue;
  92 + scaleAnimation.toValue = _scaleToValue;
  93 + scaleAnimation.removedOnCompletion = _removedOnCompletion;
  94 + scaleAnimation.fillMode = kCAFillModeForwards;
  95 +
  96 + CAAnimationGroup *animationGroup = [CAAnimationGroup animation];
  97 + animationGroup.duration = 7.f;
  98 + animationGroup.removedOnCompletion = _removedOnCompletion;
  99 + animationGroup.fillMode = kCAFillModeForwards;
  100 + animationGroup.delegate = self;
  101 + animationGroup.animations = @[position,scaleAnimation];
  102 +
  103 + if (self.animations.count == 0) {
  104 + NSLog(@"第一次动画%ld",self.animations.count);
  105 + [self.animations addObject:animationGroup];
  106 + [self.layer addAnimation:animationGroup forKey:@"carView"];
  107 + }else{
  108 + [self.animations addObject:animationGroup];
  109 + NSLog(@"添加动画");
  110 + }
  111 +}
  112 +
  113 +
  114 +- (void)setPlaneScrewImages:(NSArray *)imageArray{
  115 +
  116 + NSMutableArray* after = [NSMutableArray array];
  117 + for(int i = 1;i<4;i++){
  118 + [after addObject: [UIImage imageNamed:[NSString stringWithFormat:SUB_RESOURCE,@"porche-f",i]]];
  119 + }
  120 + _afterWheel.animationImages = after;
  121 + _afterWheel.animationDuration = 0.05;
  122 + _afterWheel.animationRepeatCount = 0;
  123 + [_afterWheel startAnimating];
  124 +
  125 + NSMutableArray* before = [NSMutableArray array];
  126 + for(int i = 1;i<4;i++){
  127 + [before addObject: [UIImage imageNamed:[NSString stringWithFormat:SUB_RESOURCE,@"porche-b",i]]];
  128 + }
  129 + _beforeWheel.animationImages = before;
  130 + _beforeWheel.animationDuration = 0.05;
  131 + _beforeWheel.animationRepeatCount = 0;
  132 + [_beforeWheel startAnimating];
  133 +}
  134 +
  135 +
  136 +-(void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag{
  137 +
  138 + [self.layer removeAllAnimations];
  139 + [self removeFromSuperview];
  140 +
  141 + NSLog(@"删除动画");
  142 +// [self.animations removeObjectAtIndex:0];
  143 +
  144 + if (self.animations.count > 0) {
  145 +// [self.layer addAnimation:self.animations[0] forKey:@"carView"];
  146 + }else{
  147 +
  148 +
  149 + }
  150 +}
  151 +
  152 +
  153 +- (void)setPoints{
  154 + _scaleDuration = 1.2;
  155 + _positionDuration = 4.0;
  156 + _positionSpeed = 0.7;
  157 + _beginScaleTime = 0.f;
  158 + _scaleToValue = [NSNumber numberWithFloat:2.0];
  159 + _scaleFromValue = [NSNumber numberWithFloat:0.7];
  160 +
  161 + NSMutableArray *pointArrs = [[NSMutableArray alloc] init];
  162 + CGFloat width = [UIScreen mainScreen].bounds.size.width / 2;
  163 + [pointArrs addObject:NSStringFromCGRect(CGRectMake(width, 300, width, 300))];
  164 + [pointArrs addObject:NSStringFromCGRect(CGRectMake(width, 300, width, 300))];
  165 + [pointArrs addObject:NSStringFromCGRect(CGRectMake(width, 300, width, 300))];
  166 + [pointArrs addObject:NSStringFromCGRect(CGRectMake(width, 300, width, 300))];
  167 + [pointArrs addObject:NSStringFromCGRect(CGRectMake(width, 300, width, 300))];
  168 + self.curveControlAndEndPoints = pointArrs;
  169 +}
  170 +
  171 +- (void)setBeginScaleTime:(CGFloat)beginScaleTime{
  172 + _beginScaleTime = beginScaleTime;
  173 +}
  174 +
  175 +- (void)setPositionSpeed:(CGFloat)positionSpeed{
  176 + _positionSpeed = positionSpeed;
  177 +}
  178 +
  179 +- (void)setPositionDuration:(CGFloat)positionDuration{
  180 + _positionDuration = positionDuration;
  181 +}
  182 +
  183 +- (void)setScaleSpeed:(CGFloat)scaleSpeed{
  184 + _scaleSpeed = scaleSpeed;
  185 +}
  186 +
  187 +- (void)setScaleDuration:(CGFloat)scaleDuration{
  188 + _scaleDuration = scaleDuration;
  189 +}
  190 +
  191 +
  192 +
  193 +@end
LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/NHCarViews.xib 0 → 100755
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="11762" systemVersion="16D32" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
  3 + <device id="retina4_7" orientation="portrait">
  4 + <adaptation id="fullscreen"/>
  5 + </device>
  6 + <dependencies>
  7 + <deployment identifier="iOS"/>
  8 + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11757"/>
  9 + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
  10 + </dependencies>
  11 + <objects>
  12 + <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
  13 + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
  14 + <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="NHCarViews">
  15 + <rect key="frame" x="0.0" y="0.0" width="166" height="70"/>
  16 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
  17 + <subviews>
  18 + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="resource.bundle/porche.png" translatesAutoresizingMaskIntoConstraints="NO" id="fn9-Qh-bvD">
  19 + <rect key="frame" x="0.0" y="0.0" width="166" height="70"/>
  20 + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
  21 + </imageView>
  22 + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="resource.bundle/porche-light.png" translatesAutoresizingMaskIntoConstraints="NO" id="e4P-7s-Kwb">
  23 + <rect key="frame" x="97" y="12" width="47" height="50"/>
  24 + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
  25 + </imageView>
  26 + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="resource.bundle/porche-f1.png" translatesAutoresizingMaskIntoConstraints="NO" id="DFb-YJ-Flu">
  27 + <rect key="frame" x="72" y="36" width="22" height="31"/>
  28 + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
  29 + </imageView>
  30 + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="resource.bundle/porche-b1.png" translatesAutoresizingMaskIntoConstraints="NO" id="Tjk-fg-HJF">
  31 + <rect key="frame" x="2" y="19" width="11" height="22"/>
  32 + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
  33 + </imageView>
  34 + </subviews>
  35 + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
  36 + <nil key="simulatedStatusBarMetrics"/>
  37 + <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
  38 + <connections>
  39 + <outlet property="afterWheel" destination="Tjk-fg-HJF" id="GYr-u0-6jQ"/>
  40 + <outlet property="beforeWheel" destination="DFb-YJ-Flu" id="qD2-GX-yj5"/>
  41 + <outlet property="carBackImage" destination="fn9-Qh-bvD" id="mUl-u6-QF1"/>
  42 + <outlet property="light" destination="e4P-7s-Kwb" id="btQ-hn-wn4"/>
  43 + </connections>
  44 + <point key="canvasLocation" x="122" y="244"/>
  45 + </view>
  46 + </objects>
  47 + <resources>
  48 + <image name="resource.bundle/porche-b1.png" width="500" height="211"/>
  49 + <image name="resource.bundle/porche-f1.png" width="500" height="211"/>
  50 + <image name="resource.bundle/porche-light.png" width="500" height="211"/>
  51 + <image name="resource.bundle/porche.png" width="500" height="211"/>
  52 + </resources>
  53 +</document>
LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/NHFighterView.h 0 → 100755
  1 +//
  2 +// NHFighterView.h
  3 +// NHGiftAnimation
  4 +//
  5 +// Created by simope on 16/7/8.
  6 +// Copyright © 2016年 NegHao.W. All rights reserved.
  7 +//
  8 +
  9 +#import <UIKit/UIKit.h>
  10 +
  11 +@interface NHFighterView : UIView
  12 +
  13 +/**
  14 + * 需要几个控制点就设置几个:
  15 + * 数组内的每个元素代码一个控制点和结束点
  16 + * 数组中放CGRect数据,CGRect的x和y分别作为控制点的x和y,CGRect的width和height作为结束点的x和y
  17 + */
  18 +@property (nullable, nonatomic, copy) NSArray *curveControlAndEndPoints;
  19 +
  20 +
  21 +/**
  22 + * 动画结束后动画层是否从当前视图上移除,默认 NO
  23 + */
  24 +@property (nonatomic, assign) BOOL removedOnCompletion;
  25 +
  26 +/**
  27 + * 从(from)scale 到(to)scale 默认0.7 - 2.0
  28 + */
  29 +@property (nullable, strong) id scaleFromValue;
  30 +@property (nullable, strong) id scaleToValue;
  31 +
  32 +
  33 +/**
  34 + * 以下粒子效果的参数,都有默认值
  35 + */
  36 +//粒子发射源的尺寸大
  37 +@property (nonatomic, assign) CGSize grainSize;
  38 +
  39 +//发射位置
  40 +@property (nonatomic, assign) CGPoint grainPosition;
  41 +
  42 +//粒子生命周期
  43 +@property (nonatomic, assign)CGFloat grainLifetime;
  44 +
  45 +//粒子产生速度
  46 +@property (nonatomic, assign) CGFloat grainVelocity;
  47 +
  48 +//粒子产生速度范围
  49 +@property (nonatomic, assign) CGFloat grainVelocityRange;
  50 +
  51 +//粒子速度
  52 +@property (nonatomic, assign) CGFloat grainSpeed;
  53 +
  54 +//粒子速度乘数因子
  55 +@property (nonatomic, assign) float grainBirthRate;
  56 +
  57 +//粒子图片
  58 +@property (nullable ,nonatomic, strong) UIImage *grainImage;
  59 +
  60 +/**
  61 + * 加载动画视图
  62 + *
  63 + * @param point 动画视图的大小
  64 + *
  65 + * @return 返回你需要的动画视图
  66 + */
  67 ++ (nullable instancetype)loadFighterViewWithPoint:(CGPoint)point;
  68 +
  69 +
  70 +/**
  71 + * 设置动画的运行轨迹
  72 + * 注:调此方法前,如需要设置多于两个控制点的动画,请先设置好curve_control_point_*及curve_end_point_*位置
  73 + 其它属性也是一样,在调此方法前设置好
  74 + * @param movePoints 开始的位置(出发点)
  75 + * @param endPoint 最终动画所在停留的位置
  76 + */
  77 +- (void)addAnimationsMoveToPoint:(CGPoint)movePoints endPoint:(CGPoint)endPoint;
  78 +
  79 +
  80 +@end
LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/NHFighterView.nib 0 → 100755
No preview for this file type
LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/NHGiftAnimtionSDK.a 0 → 100755
No preview for this file type
LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/NHHeader.h 0 → 100755
  1 +//
  2 +// NHHeader.h
  3 +// NHGiftAnimation
  4 +//
  5 +// Created by simope on 16/7/8.
  6 +// Copyright © 2016年 NegHao.W. All rights reserved.
  7 +//
  8 +
  9 +#ifndef NHHeader_h
  10 +#define NHHeader_h
  11 +
  12 +#define RESOURCE @"resource.bundle/%@"
  13 +
  14 +#define SUB_RESOURCE @"resource.bundle/%@%d"
  15 +
  16 +#define NHBounds [UIScreen mainScreen].bounds.size
  17 +
  18 +#import "NHCarView.h"
  19 +#import "NHFighterView.h"
  20 +#import "NHPlaneView.h"
  21 +
  22 +#endif /* NHHeader_h */
LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/NHPlaneView.h 0 → 100755
  1 +//
  2 +// NHPlaneView.h
  3 +// NHGiftAnimation
  4 +//
  5 +// Created by simope on 16/7/8.
  6 +// Copyright © 2016年 NegHao.W. All rights reserved.
  7 +//
  8 +
  9 +#import <UIKit/UIKit.h>
  10 +
  11 +@interface NHPlaneView : UIView
  12 +
  13 +
  14 +/**
  15 + * 需要几个控制点就设置几个:
  16 + * 数组内的每个元素代码一个控制点和结束点
  17 + * 数组中放CGRect数据,CGRect的x和y分别作为控制点的x和y,CGRect的width和height作为结束点的x和y
  18 + */
  19 +@property (nullable, nonatomic, copy) NSArray *curveControlAndEndPoints;
  20 +
  21 +/**
  22 + * 动画结束后动画层是否从当前视图上移除,默认 NO
  23 + */
  24 +@property (nonatomic, assign) BOOL removedOnCompletion;
  25 +
  26 +/**
  27 + * 从(from)scale 到(to)scale 默认0.7 - 2.0
  28 + */
  29 +
  30 +@property (nullable, strong) id scaleFromValue;
  31 +@property (nullable, strong) id scaleToValue;
  32 +
  33 +
  34 +/**
  35 + * 加载动画视图
  36 + *
  37 + * @param point 动画视图的大小
  38 + *
  39 + * @return 返回你需要的动画视图
  40 + */
  41 ++ (nullable instancetype)loadPlaneViewWithPoint:(CGPoint)point;
  42 +
  43 +
  44 +/**
  45 + * 设置动画的运行轨迹
  46 + * 注:调此方法前,如需要设置多于两个控制点的动画,请先设置好curve_control_point_*及curve_end_point_*位置
  47 + 其它属性也是一样,在调此方法前设置好
  48 + * @param movePoints 开始的位置(出发点)
  49 + * @param endPoint 最终动画所在停留的位置
  50 + */
  51 +- (void)addAnimationsMoveToPoint:(CGPoint)movePoints endPoint:(CGPoint)endPoint;
  52 +
  53 +@end
LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/NHPlaneViews.h 0 → 100755
  1 +//
  2 +// NHPlaneView.h
  3 +// NHGiftAnimation
  4 +//
  5 +// Created by simope on 16/7/8.
  6 +// Copyright © 2016年 NegHao.W. All rights reserved.
  7 +//
  8 +
  9 +#import <UIKit/UIKit.h>
  10 +
  11 +@interface NHPlaneViews : UIView
  12 +
  13 +
  14 +/**
  15 + * 需要几个控制点就设置几个:
  16 + * 数组内的每个元素代码一个控制点和结束点
  17 + * 数组中放CGRect数据,CGRect的x和y分别作为控制点的x和y,CGRect的width和height作为结束点的x和y
  18 + */
  19 +@property (nullable, nonatomic, copy) NSArray *curveControlAndEndPoints;
  20 +
  21 +/**
  22 + * 动画结束后动画层是否从当前视图上移除,默认 NO
  23 + */
  24 +@property (nonatomic, assign) BOOL removedOnCompletion;
  25 +
  26 +/**
  27 + * 从(from)scale 到(to)scale 默认0.7 - 2.0
  28 + */
  29 +
  30 +@property (nullable, strong) id scaleFromValue;
  31 +@property (nullable, strong) id scaleToValue;
  32 +
  33 +
  34 +/**
  35 + * 加载动画视图
  36 + *
  37 + * @param point 动画视图的大小
  38 + *
  39 + * @return 返回你需要的动画视图
  40 + */
  41 ++ (nullable instancetype)loadPlaneViewWithPoint:(CGPoint)point;
  42 +
  43 +
  44 +/**
  45 + * 设置动画的运行轨迹
  46 + * 注:调此方法前,如需要设置多于两个控制点的动画,请先设置好curve_control_point_*及curve_end_point_*位置
  47 + 其它属性也是一样,在调此方法前设置好
  48 + * @param movePoints 开始的位置(出发点)
  49 + * @param endPoint 最终动画所在停留的位置
  50 + */
  51 +- (void)addAnimationsMoveToPoint:(CGPoint)movePoints endPoint:(CGPoint)endPoint;
  52 +
  53 +@end
LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/NHPlaneViews.m 0 → 100755
  1 +//
  2 +// NHPlaneView.m
  3 +// NHGiftAnimation
  4 +//
  5 +// Created by simope on 16/7/8.
  6 +// Copyright © 2016年 NegHao.W. All rights reserved.
  7 +//
  8 +
  9 +#import "NHPlaneViews.h"
  10 +#import "NHHeader.h"
  11 +
  12 +@interface NHPlaneViews () <CAAnimationDelegate>
  13 +@property (nonatomic, strong) UIImageView *planeWing;
  14 +@property (weak, nonatomic) IBOutlet UIImageView *planeScrew;
  15 +
  16 +@end
  17 +
  18 +@implementation NHPlaneViews
  19 +
  20 ++ (instancetype)loadPlaneViewWithPoint:(CGPoint)point{
  21 + NHPlaneViews *plane = [[NSBundle mainBundle]loadNibNamed:@"NHPlaneViews" owner:self options:nil].lastObject;
  22 + plane.frame = CGRectMake(point.x, point.y, 232, 92);
  23 + [plane setPoints];
  24 + [plane setPlaneScrewImages:nil];
  25 + return plane;
  26 +}
  27 +
  28 +
  29 +- (void)addAnimationsMoveToPoint:(CGPoint)movePoints endPoint:(CGPoint)endPoint{
  30 +
  31 + CAKeyframeAnimation *position = [CAKeyframeAnimation animationWithKeyPath:@"position"];
  32 + CGMutablePathRef path = CGPathCreateMutable();
  33 + CGPathMoveToPoint(path, NULL, movePoints.x, movePoints.y);
  34 +
  35 + [self.curveControlAndEndPoints enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
  36 + CGRect rect = CGRectFromString(obj);
  37 + CGPathAddQuadCurveToPoint(path, NULL, rect.origin.x, rect.origin.y, rect.size.width, rect.size.height);
  38 + }];
  39 +
  40 + CGPathAddQuadCurveToPoint(path, NULL, endPoint.x, endPoint.y, endPoint.x, endPoint.y);
  41 + position.path = path;
  42 + position.duration = 4.f;
  43 + position.speed = 0.6;
  44 + position.removedOnCompletion = NO;
  45 + position.fillMode = kCAFillModeForwards;
  46 + position.calculationMode = kCAAnimationCubicPaced;
  47 +
  48 + CABasicAnimation *scaleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
  49 + scaleAnimation.fromValue = [NSNumber numberWithFloat:0.5];
  50 + scaleAnimation.toValue = [NSNumber numberWithFloat:1.5];
  51 + scaleAnimation.duration = 1.0;
  52 + scaleAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
  53 + scaleAnimation.removedOnCompletion = NO;
  54 + scaleAnimation.fillMode = kCAFillModeForwards;
  55 +
  56 + CAAnimationGroup *animationGroup = [CAAnimationGroup animation];
  57 + animationGroup.duration = 7.f;
  58 + animationGroup.delegate = self;
  59 + animationGroup.autoreverses = NO;
  60 + animationGroup.repeatCount = 0;
  61 + animationGroup.removedOnCompletion = NO;
  62 + animationGroup.fillMode = kCAFillModeForwards;
  63 + animationGroup.animations = @[scaleAnimation,position];
  64 + [self.layer addAnimation:animationGroup forKey:@"planeViews"];
  65 +}
  66 +
  67 +
  68 +- (void)setPlaneScrewImages:(NSArray *)imageArray{
  69 + NSMutableArray* images = [NSMutableArray array];
  70 + for(int i = 1;i<4;i++){
  71 + [images addObject: [UIImage imageNamed:[NSString stringWithFormat:SUB_RESOURCE,@"plane-screw-4-",i]]];
  72 + }
  73 + _planeScrew.animationImages = images;
  74 + _planeScrew.animationDuration = 0.05;
  75 + _planeScrew.animationRepeatCount = 0;
  76 + [_planeScrew startAnimating];
  77 +}
  78 +
  79 +
  80 +-(void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag{
  81 + [self.layer removeAllAnimations];
  82 + [self removeFromSuperview];
  83 +}
  84 +
  85 +
  86 +- (void)addAnimations{
  87 +
  88 + UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[NSString stringWithFormat:RESOURCE,@"plane-flower-2"]]];
  89 + NSInteger range = _planeScrew.bounds.size.width + 80;
  90 + NSInteger startX = round(random() %range);
  91 + NSInteger endX = round(random() % range);
  92 +
  93 + double scele = 1 / round(random() % 100) + 1.0;
  94 +// double speed = 1 / round(random() % 100) + 1.0;
  95 + //_plane.bounds.size.width / 2 +70, CGRectGetMaxY(_plane.frame)+50
  96 + imageView.frame = CGRectMake( startX, CGRectGetMaxY(_planeScrew.frame)-30, scele * 60, scele * 60);
  97 + [self addSubview:imageView];
  98 +
  99 +
  100 + [UIView beginAnimations:@"flake" context:(__bridge void*)(imageView)];
  101 +
  102 + [UIView setAnimationDuration:3];
  103 + [UIView setAnimationRepeatCount:8];
  104 + imageView.frame = CGRectMake(endX, NHBounds.height - 20, scele * 70, scele * 70);
  105 +
  106 + [UIView commitAnimations];
  107 +}
  108 +
  109 +- (void)setPoints{
  110 + _scaleToValue = [NSNumber numberWithFloat:2.0];
  111 + _scaleFromValue = [NSNumber numberWithFloat:0.7];
  112 +
  113 + NSMutableArray *pointArrs = [[NSMutableArray alloc] init];
  114 + [pointArrs addObject:NSStringFromCGRect(CGRectMake(290, 250, 290, 250))];
  115 + [pointArrs addObject:NSStringFromCGRect(CGRectMake(290, 250, 290, 250))];
  116 + [pointArrs addObject:NSStringFromCGRect(CGRectMake(290, 250, 290, 250))];
  117 + [pointArrs addObject:NSStringFromCGRect(CGRectMake(290, 250, 290, 250))];
  118 + self.curveControlAndEndPoints = pointArrs;
  119 +}
  120 +
  121 +
  122 +@end
LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/NHPlaneViews.xib 0 → 100755
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="11762" systemVersion="16D32" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
  3 + <device id="retina4_7" orientation="portrait">
  4 + <adaptation id="fullscreen"/>
  5 + </device>
  6 + <dependencies>
  7 + <deployment identifier="iOS"/>
  8 + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11757"/>
  9 + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
  10 + </dependencies>
  11 + <objects>
  12 + <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
  13 + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
  14 + <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="NHPlaneViews">
  15 + <rect key="frame" x="0.0" y="0.0" width="232" height="92"/>
  16 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
  17 + <subviews>
  18 + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="resource.bundle/plane-tail.png" translatesAutoresizingMaskIntoConstraints="NO" id="0rq-6x-Ili">
  19 + <rect key="frame" x="58" y="0.0" width="174" height="84"/>
  20 + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
  21 + </imageView>
  22 + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="resource.bundle/plane-head.png" translatesAutoresizingMaskIntoConstraints="NO" id="gbO-HI-cx6">
  23 + <rect key="frame" x="14" y="36" width="70" height="31"/>
  24 + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
  25 + </imageView>
  26 + <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="resource.bundle/plane-screw-1-1.png" translatesAutoresizingMaskIntoConstraints="NO" id="gH3-uq-rx4">
  27 + <rect key="frame" x="6" y="17" width="39" height="75"/>
  28 + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
  29 + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
  30 + </imageView>
  31 + </subviews>
  32 + <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
  33 + <nil key="simulatedStatusBarMetrics"/>
  34 + <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
  35 + <connections>
  36 + <outlet property="planeScrew" destination="gH3-uq-rx4" id="yUv-gJ-0qg"/>
  37 + </connections>
  38 + </view>
  39 + </objects>
  40 + <resources>
  41 + <image name="resource.bundle/plane-head.png" width="500" height="211"/>
  42 + <image name="resource.bundle/plane-screw-1-1.png" width="500" height="211"/>
  43 + <image name="resource.bundle/plane-tail.png" width="500" height="211"/>
  44 + </resources>
  45 +</document>
LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/1-1.png 0 → 100755

30.6 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/1.png 0 → 100755

35.3 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/1314-1.png 0 → 100755

104 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/1314-2.png 0 → 100755

195 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/1314-3.png 0 → 100755

294 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/1314-4.png 0 → 100755

345 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/1314-5.png 0 → 100755

322 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/1314-light.png 0 → 100755

192 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/1314-num.png 0 → 100755

25.6 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/2-2.png 0 → 100755

30.3 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/2.png 0 → 100755

35.6 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/3-3.png 0 → 100755

30.9 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/3.png 0 → 100755

35.6 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/4-4.png 0 → 100755

30.6 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/4.png 0 → 100755

36.2 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/5-5.png 0 → 100755

30.1 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/5.png 0 → 100755

35.4 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/Redocn_highlight.png 0 → 100755

3.84 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/Redocn_光1.png 0 → 100755

5.15 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/Redocn_光2.png 0 → 100755

9.12 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/Redocn_右灯.png 0 → 100755

2.29 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/Redocn_左灯.png 0 → 100755

3.11 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/Redocn_排气.png 0 → 100755

6.32 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/Redocn_车1.png 0 → 100755

120 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/Redocn_车2.png 0 → 100755

140 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/Ship.png 0 → 100755

10.9 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/banner.png 0 → 100755

1.75 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/bomber.png 0 → 100755

72.7 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/bomber_shadow.png 0 → 100755

12.8 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/default_head@2x.png 0 → 100755

3.91 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/default_head@3x.png 0 → 100755

8.34 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/gift_banner@2x.png 0 → 100755

1.1 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/gift_banner@3x.png 0 → 100755

2.03 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/gift_boat.png 0 → 100755

94.5 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/gift_entrance_bg@2x.png 0 → 100755

6.33 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/gift_entrance_bg@3x.png 0 → 100755

9.61 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/gift_entrance_light@2x.png 0 → 100755

2.27 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/gift_entrance_light@3x.png 0 → 100755

2.65 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/gift_entrance_mask.png 0 → 100755

190 Bytes

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/gift_entrance_star@2x.png 0 → 100755

2.54 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/gift_entrance_star@3x.png 0 → 100755

3.99 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/gift_fireworks_1.png 0 → 100755

57.4 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/gift_fireworks_2.png 0 → 100755

125 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/gift_head_bg.png 0 → 100755

7.68 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/gift_heart.png 0 → 100755

234 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/gift_send_point.png 0 → 100755

1.5 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/heart0@2x.png 0 → 100755

1.88 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/heart1.png 0 → 100755

1.44 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/heart10@2x.png 0 → 100755

1.52 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/heart11@2x.png 0 → 100755

1.53 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/heart1@2x.png 0 → 100755

2.06 KB

LiveVideoCloud/LiveVideoCloud/Classes/Sections/InteractionSections/Gift/GiftResource/resource.bundle/heart2.png 0 → 100755

2.17 KB