diff --git a/keyBoard/Class/Me/V/KBMyHeaderView.m b/keyBoard/Class/Me/V/KBMyHeaderView.m index 586e530..d27eabc 100644 --- a/keyBoard/Class/Me/V/KBMyHeaderView.m +++ b/keyBoard/Class/Me/V/KBMyHeaderView.m @@ -24,6 +24,7 @@ @property (nonatomic, strong) UIImageView *cardRight; @property (nonatomic, strong) UIImageView *avatarEditIcon; // 头像右下角的编辑图标 @property (nonatomic, strong) KBUser *userModel; +@property (nonatomic, assign) NSInteger kb_vipLayoutState; // -1: unknown, 0: non-vip, 1: vip //@property (nonatomic, strong) MASConstraint *vipIconWidthConstraint; //@property (nonatomic, strong) MASConstraint *nameRightToVipConstraint; //@property (nonatomic, strong) MASConstraint *nameRightToSuperviewConstraint; @@ -34,6 +35,7 @@ - (instancetype)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { + self.kb_vipLayoutState = -1; self.backgroundColor = [UIColor clearColor]; // 透明,露出底部背景图 [self addSubview:self.titleLabel]; @@ -131,11 +133,54 @@ [self.avatarView kb_setAvatarURL:user.avatarUrl placeholder:KBAvatarPlaceholderImage]; BOOL isVip = user.isVip; + [self kb_applyVipLayout:isVip]; self.vipIconView.hidden = !isVip; self.vipExpiryLabel.hidden = !isVip; self.vipExpiryLabel.text = isVip ? [self vipExpiryDisplayTextFrom:user.vipExpiry] : nil; } +- (void)kb_applyVipLayout:(BOOL)isVip { + NSInteger state = isVip ? 1 : 0; + if (self.kb_vipLayoutState == state) { return; } + self.kb_vipLayoutState = state; + + if (isVip) { + [self.nameLabel mas_remakeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.avatarView.mas_right).offset(10); + make.bottom.equalTo(self.avatarView.mas_centerY).offset(-4); + }]; + [self.vipIconView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.centerY.equalTo(self.nameLabel); + make.left.equalTo(self.nameLabel.mas_right).offset(10); + make.right.lessThanOrEqualTo(self).offset(-16); + make.width.mas_equalTo(51); + make.height.mas_equalTo(20); + }]; + [self.vipExpiryLabel mas_remakeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.avatarView.mas_centerY).offset(4); + make.left.equalTo(self.nameLabel); + make.right.lessThanOrEqualTo(self).offset(-16); + }]; + return; + } + + [self.nameLabel mas_remakeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.avatarView.mas_right).offset(10); + make.centerY.equalTo(self.avatarView); + make.right.lessThanOrEqualTo(self).offset(-16); + }]; + [self.vipIconView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.nameLabel.mas_right); + make.centerY.equalTo(self.nameLabel); + make.width.height.mas_equalTo(0); + }]; + [self.vipExpiryLabel mas_remakeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.nameLabel.mas_bottom); + make.left.equalTo(self.nameLabel); + make.width.height.mas_equalTo(0); + }]; +} + - (NSString *)vipExpiryDisplayTextFrom:(NSString *)rawDate { NSString *prefix = KBLocalized(@"Due On"); if (rawDate.length == 0) { @@ -254,7 +299,7 @@ - (UILabel *)nameLabel { if (!_nameLabel) { _nameLabel = [UILabel new]; - _nameLabel.text = @"Notice"; + _nameLabel.text = @"--"; _nameLabel.font = [KBFont medium:20]; _nameLabel.textColor = [UIColor colorWithHex:KBBlackValue]; _nameLabel.lineBreakMode = NSLineBreakByTruncatingTail;