MinePageHeadView.m 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. //
  2. // MinePageHeadView.m
  3. // KulexiuForTeacher
  4. //
  5. // Created by Kyle on 2022/3/29.
  6. //
  7. #import "MinePageHeadView.h"
  8. #import "TeacherInfo.h"
  9. #import "KSStarView.h"
  10. @interface MinePageHeadView ()
  11. @property (weak, nonatomic) IBOutlet NSLayoutConstraint *topHeight;
  12. @property (weak, nonatomic) IBOutlet UIImageView *userAvatar;
  13. @property (weak, nonatomic) IBOutlet UILabel *teacherName;
  14. @property (weak, nonatomic) IBOutlet UIView *subjectView;
  15. @property (weak, nonatomic) IBOutlet UIView *starBgView;
  16. @property (weak, nonatomic) IBOutlet UILabel *fansCount;
  17. @property (weak, nonatomic) IBOutlet UILabel *courseCount;
  18. @property (weak, nonatomic) IBOutlet KSStarView *starView;
  19. @property (nonatomic, copy) MinePageBack callback;
  20. @end
  21. @implementation MinePageHeadView
  22. - (void)awakeFromNib {
  23. [super awakeFromNib];
  24. self.starView.allowMark = NO;
  25. self.topHeight.constant = iPhoneXSafeTopMargin + 55;
  26. }
  27. + (instancetype)shareInstance {
  28. MinePageHeadView *view = [[[NSBundle mainBundle] loadNibNamed:@"MinePageHeadView" owner:nil options:nil] firstObject];
  29. return view;
  30. }
  31. - (void)configSource:(id)source {
  32. if ([source isKindOfClass:[TeacherInfo class]]) {
  33. TeacherInfo *infoMessage = source;
  34. [self displayCount:infoMessage.fansNum inView:self.fansCount];
  35. [self displayCount:infoMessage.expTime inView:self.courseCount];
  36. self.starView.rate = infoMessage.starGrade / 5.0f;
  37. if (![NSString isEmptyString:infoMessage.heardUrl]) {
  38. [self.userAvatar sd_setImageWithURL:[NSURL URLWithString:infoMessage.heardUrl] placeholderImage:[UIImage imageNamed:USERDEFAULT_LOGO]];
  39. }
  40. else {
  41. [self.userAvatar setImage:[UIImage imageNamed:USERDEFAULT_LOGO]];
  42. }
  43. if ([NSString isEmptyString:infoMessage.username]) {
  44. self.teacherName.text = [NSString stringWithFormat:@"游客%@",infoMessage.userId];
  45. }
  46. else {
  47. self.teacherName.text = infoMessage.username;
  48. }
  49. if ([NSString isEmptyString:infoMessage.subjectName]) {
  50. [self.subjectView removeAllSubViews];
  51. }
  52. else {
  53. NSArray *tagArray = [infoMessage.subjectName componentsSeparatedByString:@","];
  54. CGFloat maxWidth = kScreenWidth - 28 - 10 - 80;
  55. [self configTagViewWithTagArray:tagArray maxWidth:maxWidth];
  56. }
  57. }
  58. }
  59. - (void)displayCount:(NSInteger)count inView:(UILabel *)descLabel {
  60. if (count > 10000) {
  61. double descNum = count / 10000.0;
  62. descLabel.text = [NSString stringWithFormat:@"%.2f万",descNum];
  63. }
  64. else {
  65. descLabel.text = [NSString stringWithFormat:@"%ld",count];
  66. }
  67. }
  68. - (void)backAction:(MinePageBack)callback {
  69. if (callback) {
  70. self.callback = callback;
  71. }
  72. }
  73. - (IBAction)back:(id)sender {
  74. if (self.callback) {
  75. self.callback();
  76. }
  77. }
  78. - (CGFloat)getViewHeight {
  79. return self.topHeight.constant + 10 +22 + 30 + 128;
  80. }
  81. - (void)configTagViewWithTagArray:(NSArray *)tagArray maxWidth:(CGFloat)maxWidth {
  82. [self.subjectView removeAllSubViews];
  83. CGFloat width = maxWidth;
  84. CGFloat xSpace = 0.0f;
  85. for (NSInteger i = 0; i < tagArray.count; i++) {
  86. NSString *tagString = tagArray[i];
  87. CGFloat labelWidth = [self getStringWidthInLabel:tagString font:[UIFont systemFontOfSize:11.0f]];
  88. CGFloat viewWidth = labelWidth + 8;
  89. if (xSpace + viewWidth > width) {
  90. return;
  91. }
  92. CGRect frame = CGRectMake(xSpace, 0, viewWidth, 16.0f);
  93. [self createTagLabelViewWithName:tagString frame:frame];
  94. xSpace += (viewWidth + 6);
  95. }
  96. }
  97. - (CGFloat)getStringWidthInLabel:(NSString *)tagString font:(UIFont *)font {
  98. CGFloat width = [tagString boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, 16.0f) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName:font} context:nil].size.width+1;
  99. return width;
  100. }
  101. - (void)createTagLabelViewWithName:(NSString *)name frame:(CGRect)frame {
  102. UIView *bgView = [[UIView alloc] initWithFrame:frame];
  103. bgView.backgroundColor = HexRGB(0xfff1de);
  104. bgView.layer.cornerRadius = 4.0f;
  105. [self.subjectView addSubview:bgView];
  106. UILabel *tagLabel = [[UILabel alloc] init];
  107. tagLabel.text = name;
  108. tagLabel.textColor = HexRGB(0xff8c00);
  109. tagLabel.font = [UIFont systemFontOfSize:11.0f];
  110. tagLabel.textAlignment = NSTextAlignmentCenter;
  111. [bgView addSubview:tagLabel];
  112. [tagLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  113. make.left.mas_equalTo(bgView.mas_left).offset(4);
  114. make.right.mas_equalTo(bgView.mas_right).offset(-4);
  115. make.top.bottom.mas_equalTo(bgView);
  116. }];
  117. }
  118. /*
  119. // Only override drawRect: if you perform custom drawing.
  120. // An empty implementation adversely affects performance during animation.
  121. - (void)drawRect:(CGRect)rect {
  122. // Drawing code
  123. }
  124. */
  125. @end