// // InstitutionMineBodyView.m // KulexiuForStudent // // Created by 王智 on 2023/9/11. // #import "InstitutionMineBodyView.h" #import #import "TYPageControl.h" #import "TenantMineFunctionView.h" #define MAX_FUNCROWCOUNT (IS_IPAD ? 6 : 4) @interface InstitutionMineBodyView () @property (weak, nonatomic) IBOutlet UIView *toolBgView; @property (weak, nonatomic) IBOutlet UIImageView *bgImageView; @property (weak, nonatomic) IBOutlet NSLayoutConstraint *bgImageWidth; @property (weak, nonatomic) IBOutlet NSLayoutConstraint *bgImageHeight; @property (weak, nonatomic) IBOutlet NSLayoutConstraint *userNameTop; @property (weak, nonatomic) IBOutlet UIImageView *userAvatar; @property (weak, nonatomic) IBOutlet UILabel *userName; @property (weak, nonatomic) IBOutlet UIImageView *memberImg; @property (weak, nonatomic) IBOutlet UIView *subjectView; @property (weak, nonatomic) IBOutlet UILabel *subjectLabel; @property (weak, nonatomic) IBOutlet UILabel *toolDesc; @property (nonatomic, copy) INSMineViewCallback callback; @property (nonatomic, strong) UIImage *preDisplayImage; @property (weak, nonatomic) IBOutlet UILabel *tenantName; @property (weak, nonatomic) IBOutlet UIView *functionView; @property (nonatomic, strong) UIScrollView *functionScrollView; @property (nonatomic, strong) TYPageControl *pageControl; @property (nonatomic, strong) NSMutableArray *imageArray; @property (nonatomic, strong) NSMutableArray *titleArray; @property (nonatomic, strong) NSMutableArray *tagArray; @property (weak, nonatomic) IBOutlet UIView *customServiceView; @property (weak, nonatomic) IBOutlet NSLayoutConstraint *customServiceHeight; @property (weak, nonatomic) IBOutlet UIView *bottomLine; @end @implementation InstitutionMineBodyView - (void)awakeFromNib { [super awakeFromNib]; self.functionScrollView.contentSize = CGSizeMake((KPortraitWidth - 26)*2, 74); [self.functionView addSubview:self.pageControl]; self.pageControl.currentPage = 0; [self.functionView addSubview:self.functionScrollView]; [self.functionScrollView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.right.top.bottom.mas_equalTo(self.functionView); }]; self.functionScrollView.delegate = self; [self configFunctionView]; NSString *bgName = IS_IPAD ? @"insititution_MineBgPad" : @"insititution_MineBg"; UIImage *bgImage = [UIImage imageNamed:bgName]; [self.bgImageView setImage:bgImage]; CGFloat height = bgImage.size.height / bgImage.size.width * KPortraitWidth; self.bgImageWidth.constant = KPortraitWidth; self.bgImageHeight.constant = height; [self createToolViewLayer]; } - (void)createToolViewLayer { CGFloat borderWidth = 1.5; CGRect frame = CGRectMake(0, 0, KPortraitWidth - (19 - borderWidth) * 2, 60); CGFloat radius = 28 + borderWidth; CAGradientLayer *colorLayer = [UIView createGradientLayerFromColor:HexRGB(0xFFD3E7) startPoint:CGPointMake(0, 0.36) endColor:HexRGB(0xFFE7D4) endPoint:CGPointMake(1, 0.36) bounds:frame]; [self.toolBgView.layer addSublayer:colorLayer]; UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:frame byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(radius, radius)]; CAShapeLayer *maskLayer = [CAShapeLayer layer]; maskLayer.frame = frame; maskLayer.path = path.CGPath; self.toolBgView.layer.mask = maskLayer; CAShapeLayer *borderLayer = [CAShapeLayer layer]; borderLayer.frame = frame; borderLayer.path = path.CGPath; borderLayer.lineWidth = borderWidth; borderLayer.fillColor = [UIColor clearColor].CGColor; borderLayer.strokeColor = HexRGB(0xffffff).CGColor; borderLayer.masksToBounds = NO; [self.toolBgView.layer addSublayer:borderLayer]; } + (instancetype)shareInstance { InstitutionMineBodyView *view = [[[NSBundle mainBundle] loadNibNamed:@"InstitutionMineBodyView" owner:nil options:nil] firstObject]; return view; } - (void)operationCallback:(INSMineViewCallback)callback { if (callback) { self.callback = callback; } } - (void)configWithSource:(UserInfo *)sourceModel { if (![NSString isEmptyString:sourceModel.heardUrl]) { if (self.preDisplayImage == nil) { self.preDisplayImage = [UIImage imageNamed:CLIENT_USERDEFAULT_LOGO]; } [self.userAvatar displayImageWithUrl:[NSURL URLWithString:[sourceModel.heardUrl getUrlEndcodeString]] placeholder:self.preDisplayImage defaultImage:[UIImage imageNamed:CLIENT_USERDEFAULT_LOGO] callback:^(UIImage * _Nonnull image) { self.preDisplayImage = image; }]; } else { [self.userAvatar setImage:[UIImage imageNamed:CLIENT_USERDEFAULT_LOGO]]; } self.userName.text = [NSString returnNoNullStringWithString:sourceModel.username]; NSString *subjectName = sourceModel.subjectName; if ([NSString isEmptyString:sourceModel.subjectName]) { self.subjectView.hidden = YES; } else { self.subjectLabel.text = subjectName; self.subjectView.hidden = NO; } // 时间 // NSString *tagImg = sourceModel.isVip == 0 ? @"institution_mineMember_tag_no" : @"institution_mineMember_tag"; // [self.memberImg setImage:[UIImage imageNamed:tagImg]]; // self.memberImg.hidden = NO; // if ([sourceModel.tenantAlbumFlag integerValue] > 0) { // self.toolDesc.text = [NSString stringWithFormat:@"至%@",[[sourceModel.tenantAlbumEndTime componentsSeparatedByString:@" "] firstObject]]; // } // else { // if (![NSString isEmptyString:sourceModel.tenantAlbumEndTime]) { // self.toolDesc.text = @"训练工具已过期"; // } // else { // self.toolDesc.text = @"暂未开通"; // } // } // 小组名称 if ([NSString isEmptyString:sourceModel.tenantGroupName]) { self.userNameTop.constant = 21.0f; self.tenantName.hidden = YES; } else { self.userNameTop.constant = 9.0f; self.tenantName.hidden = NO; self.tenantName.text = sourceModel.tenantGroupName; } } - (IBAction)clickAction:(UITapGestureRecognizer *)sender { NSInteger index = sender.view.tag; if (self.callback) { self.callback(index); } } - (void)configFunctionView { [self.functionScrollView removeAllSubViews]; CGFloat width = (KPortraitWidth - 26) / MAX_FUNCROWCOUNT; for (NSInteger index = 0; index < self.imageArray.count; index++) { TenantMineFunctionView *functionButton = [TenantMineFunctionView shareInstance]; NSNumber *tagValue = self.tagArray[index]; NSInteger viewTag = [tagValue intValue]; MJWeakSelf; [functionButton configWithSource:self.imageArray[index] title:self.titleArray[index] functionType:viewTag callback:^(NSInteger tagIndex) { if (weakSelf.callback) { weakSelf.callback(tagIndex); } }]; functionButton.frame = CGRectMake(width * index, 0, width, 74); [self.functionScrollView addSubview:functionButton]; } } /* // Only override drawRect: if you perform custom drawing. // An empty implementation adversely affects performance during animation. - (void)drawRect:(CGRect)rect { // Drawing code } */ - (void)setHasCustomService:(BOOL)hasCustomService { _hasCustomService = hasCustomService; if (hasCustomService) { self.customServiceView.hidden = NO; self.customServiceHeight.constant = 58.0f; self.bottomLine.hidden = NO; } else { self.customServiceView.hidden = YES; self.customServiceHeight.constant = 0.0f; self.bottomLine.hidden = YES; } } - (CGFloat)getViewHeight { return 275 + 12 + 130 + 12 + 58 * 5 + self.customServiceHeight.constant; } - (TYPageControl *)pageControl { if (!_pageControl) { _pageControl = [[TYPageControl alloc] init]; _pageControl.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter; _pageControl.pageIndicatorSpaing = 4.0f; _pageControl.frame = CGRectMake(0, 60, (KPortraitWidth - 26), 12); _pageControl.currentPageIndicatorTintColor = INS_THEMECOLOR; _pageControl.pageIndicatorTintColor = HexRGB(0xd8d8d8); _pageControl.pageIndicatorSize = CGSizeMake(4, 4); _pageControl.currentPageIndicatorSize = CGSizeMake(12, 4); _pageControl.numberOfPages = 2; } return _pageControl; } - (void)scrollViewDidScroll:(UIScrollView *)scrollView { if (scrollView == self.functionScrollView) { NSInteger index = (NSInteger)(scrollView.contentOffset.x / (KPortraitWidth - 26)); [UIView animateWithDuration:0.3f animations:^{ [self.pageControl setCurrentPage:index animate:YES]; }]; } } - (NSMutableArray *)imageArray { if (!_imageArray) { _imageArray = [NSMutableArray arrayWithArray:@[@"insititution_mine_music",@"insititution_mine_eveluate",@"insititution_mine_order",@"insititution_mine_rank",@"insititution_mine_code",@"tenant_mine_musicProduct"]]; } return _imageArray; } - (NSMutableArray *)titleArray { if (!_titleArray) { _titleArray = [NSMutableArray arrayWithArray:@[@"我的曲库",@"练习统计",@"订单信息",@"排行榜",@"激活码",@"我的作品"]]; } return _titleArray; } - (NSMutableArray *)tagArray { if (!_tagArray) { _tagArray = [NSMutableArray arrayWithArray:@[@(INSMINETYPE_MUSIC),@(INSMINETYPE_TRAIN),@(INSMINETYPE_ORDER),@(INSMINETYPE_RANK),@(INSMINETYPE_CODE),@(INSMINETYPE_WORKS)]]; } return _tagArray; } - (UIScrollView *)functionScrollView { if (!_functionScrollView) { _functionScrollView = [[UIScrollView alloc] initWithFrame:CGRectZero]; _functionScrollView.backgroundColor = [UIColor clearColor]; _functionScrollView.pagingEnabled = YES; _functionScrollView.showsHorizontalScrollIndicator = NO; _functionScrollView.showsVerticalScrollIndicator = NO; _functionScrollView.delegate = self; } return _functionScrollView; } @end