PlayerViewController+AdjustBtnFrame.m 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  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 = 60/2.0;
  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 (value1Y >= 0) { // 左边
  44. HLog(@"云手机推流界面 靠上边");
  45. mPlayerView.controlBtn.y = - W_H + margin;
  46. }else { // 右边
  47. HLog(@"云手机推流界面 靠下边");
  48. mPlayerView.controlBtn.y = SCREEN_H - margin;
  49. }
  50. if (mPlayerView.controlBtn.x < margin){
  51. mPlayerView.controlBtn.x = margin;
  52. }else if (mPlayerView.controlBtn.x > mPlayerView.width - margin - W_H){
  53. mPlayerView.controlBtn.x = mPlayerView.width - margin - W_H;
  54. }
  55. }else{
  56. CGFloat centerX = SCREEN_W*0.5;
  57. CGFloat value1X = centerX - centerPoint.x;
  58. if (value1X >= 0) { // 左边
  59. HLog(@"云手机推流界面 靠左边");
  60. mPlayerView.controlBtn.x = - W_H + margin;
  61. }else { // 右边
  62. HLog(@"云手机推流界面 靠右边");
  63. mPlayerView.controlBtn.x = SCREEN_W - margin;
  64. }
  65. if (mPlayerView.controlBtn.y < margin){
  66. mPlayerView.controlBtn.y = margin;
  67. }else if (mPlayerView.controlBtn.y > mPlayerView.height - margin - W_H){
  68. mPlayerView.controlBtn.y = mPlayerView.height - margin - W_H;
  69. }
  70. }
  71. HLog(@"云手机推流界面 控制按钮中点%@",NSStringFromCGPoint(mPlayerView.controlBtn.center));
  72. }
  73. // 控制按钮点击之后 从半隐藏状态弹出算法
  74. - (void)adjustPlayerViewControlBtnFrame2 {
  75. // CGFloat margin = 10;
  76. // CGFloat W_H = 60;
  77. // mPlayerView.controlBtn.alpha = 1.0;
  78. //
  79. // CGPoint centerPoint = mPlayerView.controlBtn.center;
  80. //// HLog(@"云手机推流界面 控制按钮中点%@",NSStringFromCGPoint(centerPoint));
  81. //
  82. // CGFloat centerX = SCREEN_W*0.5;
  83. // CGFloat centerY = SCREEN_H*0.5;
  84. // CGFloat value1X = centerX - centerPoint.x;
  85. // CGFloat value1Y = centerY - centerPoint.y;
  86. // CGFloat value2X = SCREEN_W - centerPoint.x;
  87. // CGFloat value2Y = SCREEN_H - centerPoint.y;
  88. // CGFloat adaptValue = (SCREEN_H - mPlayerView.glkshowImageView.hw_h)*0.5; // 补偿刘海屏上下黑边
  89. // if ([self.deviceModel isOpenVirtualKey]) {
  90. // adaptValue -= 20;
  91. // }
  92. //
  93. // if (value1X >= 0) { // 左边
  94. //
  95. // if (value1Y >= 0) { // 上边
  96. //// HLog(@"云手机推流界面 左上角");
  97. // if (fabs(centerPoint.x) > fabs(centerPoint.y - adaptValue)) {
  98. // HLog(@"云手机推流界面 靠上边");
  99. // mPlayerView.controlBtn.y = margin + adaptValue;
  100. // }else {
  101. // HLog(@"云手机推流界面 靠左边");
  102. // mPlayerView.controlBtn.x = margin;
  103. // }
  104. //
  105. // }else { // 下边
  106. //// HLog(@"云手机推流界面 左下角");
  107. // if (fabs(centerPoint.x) > fabs(value2Y - adaptValue)) {
  108. // HLog(@"云手机推流界面 靠下边");
  109. // mPlayerView.controlBtn.y = SCREEN_H - W_H - margin - adaptValue;
  110. // }else {
  111. // HLog(@"云手机推流界面 靠左边");
  112. // mPlayerView.controlBtn.x = margin;
  113. // }
  114. // }
  115. //
  116. // }else { // 右边
  117. // if (value1Y >= 0) { // 上边
  118. //// HLog(@"云手机推流界面 右上角");
  119. // if (fabs(value2X) > fabs(centerPoint.y - adaptValue)) {
  120. // HLog(@"云手机推流界面 靠上边");
  121. // mPlayerView.controlBtn.y = margin + adaptValue;
  122. // }else {
  123. // HLog(@"云手机推流界面 靠右边");
  124. // mPlayerView.controlBtn.x = SCREEN_W - W_H - margin;
  125. // }
  126. //
  127. // }else { // 下边
  128. //// HLog(@"云手机推流界面 右下角");
  129. // if (fabs(value2X) > fabs(value2Y - adaptValue)) {
  130. // HLog(@"云手机推流界面 靠下边");
  131. // mPlayerView.controlBtn.y = SCREEN_H - W_H - margin - adaptValue;
  132. // }else {
  133. // HLog(@"云手机推流界面 靠右边");
  134. // mPlayerView.controlBtn.x = SCREEN_W - W_H - margin;
  135. // }
  136. // }
  137. // }
  138. //
  139. // HLog(@"云手机推流界面 控制按钮中点%@",NSStringFromCGPoint(mPlayerView.controlBtn.center));
  140. }
  141. // 1、悬浮球3s后 自动靠边隐藏
  142. - (void)extensionAdjustBtnFrameCheckAdjustTime {
  143. self.adjustTime--;
  144. if (self.adjustTime == 0) {
  145. // HLog(@"云手机圆形浮标自动隐藏倒计时 3s倒计时结束");
  146. [self adjustPlayerViewControlBtnFrame1];
  147. }else {
  148. // HLog(@"云手机圆形浮标自动隐藏倒计时:%zd", self.adjustTime);
  149. }
  150. }
  151. @end