PlayerViewController+AdjustBtnFrame.m 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. //
  2. // CloudPhoneViewController+RBDConnect.m
  3. // VclustersGemini
  4. //
  5. // Created by APPLE on 2021/8/16.
  6. // Copyright © 2021 APPLE. All rights reserved.
  7. //
  8. #import "PlayerViewController+AdjustBtnFrame.h"
  9. #import <objc/runtime.h>
  10. #import "UIView+View.h"
  11. @interface PlayerViewController(AdjustBtnFrame)
  12. @end
  13. @implementation PlayerViewController(AdjustBtnFrame)
  14. @dynamic adjustTime;
  15. - (void)setAdjustTime:(NSInteger)adjustTime {
  16. objc_setAssociatedObject(self, @selector(adjustTime), @(adjustTime), OBJC_ASSOCIATION_ASSIGN);
  17. }
  18. - (NSInteger)adjustTime {
  19. NSNumber *adjustTimeNumber = objc_getAssociatedObject(self, @selector(adjustTime));
  20. return [adjustTimeNumber integerValue];
  21. }
  22. #pragma mark 悬浮球3s后自动靠边隐藏
  23. //(1、3s之后 控制按钮靠边隐藏2/3、降低透明度1.0 2、点击之后 自动弹出控制按钮 透明度改为1.0)
  24. - (void)playerViewControlBtnTouchBegan {
  25. // HLog(@"云手机推流界面 控制按钮手势开始");
  26. [self adjustPlayerViewControlBtnFrame2];
  27. }
  28. - (void)playerViewControlBtnTouchEnd {
  29. // HLog(@"云手机推流界面 控制按钮手势结束");
  30. self.adjustTime = 3;
  31. }
  32. // 控制按钮3s后 自动靠边算法
  33. - (void)adjustPlayerViewControlBtnFrame1 {
  34. CGFloat margin = 70;
  35. CGFloat W_H = 60;
  36. mPlayerView.controlBtn.alpha = 0.5;
  37. CGPoint centerPoint = mPlayerView.controlBtn.center;
  38. // HLog(@"云手机推流界面 控制按钮中点%@",NSStringFromCGPoint(centerPoint));
  39. if (mPlayerView.width > mPlayerView.height){
  40. CGFloat centerY = mPlayerView.height*0.5;
  41. CGFloat value1Y = centerY - centerPoint.y;
  42. CGFloat adaptValue = (SCREEN_W - mPlayerView.glkshowImageView.hw_h)*0.5; // 补偿刘海屏上下黑边
  43. if ([self.deviceModel isOpenVirtualKey]) {
  44. adaptValue -= 20;
  45. }
  46. if (value1Y >= 0) { // 左边
  47. HLog(@"云手机推流界面 靠上边");
  48. mPlayerView.controlBtn.y = - W_H + margin;
  49. }else { // 右边
  50. HLog(@"云手机推流界面 靠下边");
  51. mPlayerView.controlBtn.y = SCREEN_H - margin;
  52. }
  53. if (mPlayerView.controlBtn.x < margin){
  54. mPlayerView.controlBtn.x = margin;
  55. }else if (mPlayerView.controlBtn.x > mPlayerView.width - margin - W_H){
  56. mPlayerView.controlBtn.x = mPlayerView.width - margin - W_H;
  57. }
  58. }else{
  59. CGFloat centerX = SCREEN_W*0.5;
  60. CGFloat value1X = centerX - centerPoint.x;
  61. CGFloat adaptValue = (SCREEN_H - mPlayerView.glkshowImageView.hw_h)*0.5; // 补偿刘海屏上下黑边
  62. if ([self.deviceModel isOpenVirtualKey]) {
  63. adaptValue -= 20;
  64. }
  65. if (value1X >= 0) { // 左边
  66. HLog(@"云手机推流界面 靠左边");
  67. mPlayerView.controlBtn.x = - W_H + margin;
  68. }else { // 右边
  69. HLog(@"云手机推流界面 靠右边");
  70. mPlayerView.controlBtn.x = SCREEN_W - margin;
  71. }
  72. if (mPlayerView.controlBtn.y < margin){
  73. mPlayerView.controlBtn.y = margin;
  74. }else if (mPlayerView.controlBtn.y > mPlayerView.height - margin - W_H){
  75. mPlayerView.controlBtn.y = mPlayerView.height - margin - W_H;
  76. }
  77. }
  78. HLog(@"云手机推流界面 控制按钮中点%@",NSStringFromCGPoint(mPlayerView.controlBtn.center));
  79. }
  80. // 控制按钮点击之后 从半隐藏状态弹出算法
  81. - (void)adjustPlayerViewControlBtnFrame2 {
  82. // CGFloat margin = 10;
  83. // CGFloat W_H = 60;
  84. // mPlayerView.controlBtn.alpha = 1.0;
  85. //
  86. // CGPoint centerPoint = mPlayerView.controlBtn.center;
  87. //// HLog(@"云手机推流界面 控制按钮中点%@",NSStringFromCGPoint(centerPoint));
  88. //
  89. // CGFloat centerX = SCREEN_W*0.5;
  90. // CGFloat centerY = SCREEN_H*0.5;
  91. // CGFloat value1X = centerX - centerPoint.x;
  92. // CGFloat value1Y = centerY - centerPoint.y;
  93. // CGFloat value2X = SCREEN_W - centerPoint.x;
  94. // CGFloat value2Y = SCREEN_H - centerPoint.y;
  95. // CGFloat adaptValue = (SCREEN_H - mPlayerView.glkshowImageView.hw_h)*0.5; // 补偿刘海屏上下黑边
  96. // if ([self.deviceModel isOpenVirtualKey]) {
  97. // adaptValue -= 20;
  98. // }
  99. //
  100. // if (value1X >= 0) { // 左边
  101. //
  102. // if (value1Y >= 0) { // 上边
  103. //// HLog(@"云手机推流界面 左上角");
  104. // if (fabs(centerPoint.x) > fabs(centerPoint.y - adaptValue)) {
  105. // HLog(@"云手机推流界面 靠上边");
  106. // mPlayerView.controlBtn.y = margin + adaptValue;
  107. // }else {
  108. // HLog(@"云手机推流界面 靠左边");
  109. // mPlayerView.controlBtn.x = margin;
  110. // }
  111. //
  112. // }else { // 下边
  113. //// HLog(@"云手机推流界面 左下角");
  114. // if (fabs(centerPoint.x) > fabs(value2Y - adaptValue)) {
  115. // HLog(@"云手机推流界面 靠下边");
  116. // mPlayerView.controlBtn.y = SCREEN_H - W_H - margin - adaptValue;
  117. // }else {
  118. // HLog(@"云手机推流界面 靠左边");
  119. // mPlayerView.controlBtn.x = margin;
  120. // }
  121. // }
  122. //
  123. // }else { // 右边
  124. // if (value1Y >= 0) { // 上边
  125. //// HLog(@"云手机推流界面 右上角");
  126. // if (fabs(value2X) > fabs(centerPoint.y - adaptValue)) {
  127. // HLog(@"云手机推流界面 靠上边");
  128. // mPlayerView.controlBtn.y = margin + adaptValue;
  129. // }else {
  130. // HLog(@"云手机推流界面 靠右边");
  131. // mPlayerView.controlBtn.x = SCREEN_W - W_H - margin;
  132. // }
  133. //
  134. // }else { // 下边
  135. //// HLog(@"云手机推流界面 右下角");
  136. // if (fabs(value2X) > fabs(value2Y - adaptValue)) {
  137. // HLog(@"云手机推流界面 靠下边");
  138. // mPlayerView.controlBtn.y = SCREEN_H - W_H - margin - adaptValue;
  139. // }else {
  140. // HLog(@"云手机推流界面 靠右边");
  141. // mPlayerView.controlBtn.x = SCREEN_W - W_H - margin;
  142. // }
  143. // }
  144. // }
  145. //
  146. // HLog(@"云手机推流界面 控制按钮中点%@",NSStringFromCGPoint(mPlayerView.controlBtn.center));
  147. }
  148. // 1、悬浮球3s后 自动靠边隐藏
  149. - (void)extensionAdjustBtnFrameCheckAdjustTime {
  150. self.adjustTime--;
  151. if (self.adjustTime == 0) {
  152. // HLog(@"云手机圆形浮标自动隐藏倒计时 3s倒计时结束");
  153. [self adjustPlayerViewControlBtnFrame1];
  154. }else {
  155. // HLog(@"云手机圆形浮标自动隐藏倒计时:%zd", self.adjustTime);
  156. }
  157. }
  158. @end