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