ShareLiveDisplayView.m 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. //
  2. // ShareLiveDisplayView.m
  3. // KulexiuForStudent
  4. //
  5. // Created by 王智 on 2022/9/21.
  6. //
  7. #import "ShareLiveDisplayView.h"
  8. #import "KSQRCreateManager.h"
  9. @interface ShareLiveDisplayView ()<UIGestureRecognizerDelegate>
  10. @property (weak, nonatomic) IBOutlet UIImageView *teacherAvatar;
  11. @property (weak, nonatomic) IBOutlet UIView *statusView;
  12. @property (weak, nonatomic) IBOutlet UIImageView *studentAvatar;
  13. @property (weak, nonatomic) IBOutlet UILabel *tipsLabel;
  14. @property (weak, nonatomic) IBOutlet UILabel *referrerLabel;
  15. @property (weak, nonatomic) IBOutlet UIImageView *qrCodeView;
  16. @property (weak, nonatomic) IBOutlet UIView *referrerView;
  17. @property (nonatomic, copy) ShareCallback callback;
  18. @end
  19. @implementation ShareLiveDisplayView
  20. - (void)awakeFromNib {
  21. [super awakeFromNib];
  22. // [self addGesture];
  23. CAGradientLayer *layer = [self createGradientLayerFromColor:HexRGB(0xFF598E) startPoint:CGPointMake(0.5, 0) endColor:HexRGB(0xFD2D55) endPoint:CGPointMake(0.5, 1) bounds:CGRectMake(0, 0, 72, 24)];
  24. layer.cornerRadius = 12.0f;
  25. layer.masksToBounds = YES;
  26. [self.statusView.layer addSublayer:layer];
  27. CAGradientLayer *referrerLayer = [self createGradientLayerFromColor:HexRGB(0xBAFFE7) startPoint:CGPointMake(1, 0.5) endColor:HexRGB(0xC0DCFF) endPoint:CGPointMake(0, 0.5) bounds:CGRectMake(0, 0, KPortraitWidth - 30, 58)];
  28. referrerLayer.cornerRadius = 9.0f;
  29. referrerLayer.masksToBounds = YES;
  30. [self.referrerView.layer addSublayer:referrerLayer];
  31. }
  32. - (void)addGesture {
  33. UITapGestureRecognizer *gesture = [[UITapGestureRecognizer alloc] init];
  34. [gesture addTarget:self action:@selector(hideView)];
  35. [self addGestureRecognizer:gesture];
  36. }
  37. + (instancetype)shareInstance {
  38. ShareLiveDisplayView *view = [[[NSBundle mainBundle] loadNibNamed:@"ShareLiveDisplayView" owner:nil options:nil] firstObject];
  39. view.frame = CGRectMake(0, 0, KPortraitWidth, KPortraitHeight);
  40. return view;
  41. }
  42. - (void)configWithTeacherAvatar:(NSString *)teacherAvatarUrl teacherName:(NSString *)teacherName qrUrl:(NSString *)qrUrl {
  43. [self.teacherAvatar sd_setImageWithURL:[NSURL URLWithString:[teacherAvatarUrl getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:USERDEFAULT_LOGO]];
  44. UIImage *codeImage = [KSQRCreateManager createQRCodeWithUrl:qrUrl displayImage:nil scaleSize:89];
  45. [self.qrCodeView setImage:codeImage];
  46. self.tipsLabel.text = [NSString stringWithFormat:@"主讲人:%@", [NSString returnNoNullStringWithString:teacherName]];
  47. [self.studentAvatar sd_setImageWithURL:[NSURL URLWithString:UserDefault(AvatarUrlKey)] placeholderImage:[UIImage imageNamed:USERDEFAULT_LOGO]];
  48. self.referrerLabel.text = [NSString stringWithFormat:@"%@ 为您推荐",[NSString returnNoNullStringWithString:UserDefault(NicknameKey)]];
  49. }
  50. - (void)shareActionCallback:(ShareCallback)callback {
  51. if (callback) {
  52. self.callback = callback;
  53. }
  54. }
  55. - (void)showShareView {
  56. [[NSObject getKeyWindow] addSubview:self];
  57. }
  58. - (void)showShareViewInView:(UIView *)displayView {
  59. if (!displayView) {
  60. return;
  61. }
  62. [displayView addSubview:self];
  63. }
  64. - (void)hideView {
  65. [self removeFromSuperview];
  66. }
  67. - (IBAction)saveImage:(id)sender {
  68. if (self.callback) {
  69. self.callback(SHARETYPE_SAVE);
  70. }
  71. }
  72. - (IBAction)shareOutApp:(id)sender {
  73. if (self.callback) {
  74. self.callback(SHARETYPE_SHAREOUT);
  75. }
  76. }
  77. - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
  78. if ([touch.view isDescendantOfView:self.containerView]) {
  79. return NO;
  80. }
  81. return YES;
  82. }
  83. - (CAGradientLayer *)createGradientLayerFromColor:(UIColor *)fromColor startPoint:(CGPoint)startPoint endColor:(UIColor *)endColor endPoint:(CGPoint)endPoint bounds:(CGRect)bounds {
  84. CAGradientLayer *gradientLayer = [CAGradientLayer layer];
  85. gradientLayer.colors = @[(__bridge id)fromColor.CGColor, (__bridge id)endColor.CGColor];
  86. gradientLayer.startPoint = startPoint;
  87. gradientLayer.endPoint = endPoint;
  88. gradientLayer.frame = bounds;
  89. gradientLayer.locations = @[@(0),@(1.0f)];
  90. return gradientLayer;
  91. }
  92. /*
  93. // Only override drawRect: if you perform custom drawing.
  94. // An empty implementation adversely affects performance during animation.
  95. - (void)drawRect:(CGRect)rect {
  96. // Drawing code
  97. }
  98. */
  99. @end