IconInfoView.m 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. //
  2. // IconInfoView.m
  3. // BuguLive
  4. //
  5. // Created by voidcat on 2024/9/12.
  6. // Copyright © 2024 xfg. All rights reserved.
  7. //
  8. #import "IconInfoView.h"
  9. @implementation IconInfoView
  10. /*
  11. // Only override drawRect: if you perform custom drawing.
  12. // An empty implementation adversely affects performance during animation.
  13. - (void)drawRect:(CGRect)rect {
  14. // Drawing code
  15. }
  16. */
  17. - (instancetype)initWithFrame:(CGRect)frame {
  18. self = [super initWithFrame:frame];
  19. if (self) {
  20. [self setupSubviews];
  21. }
  22. return self;
  23. }
  24. - (void)setupSubviews {
  25. // 初始化子视图
  26. self.ageView = [[UIView alloc] init];
  27. self.levelView = [[UIImageView alloc] init];
  28. self.levelView.contentMode = UIViewContentModeScaleAspectFit;
  29. self.nobleView = [[UIImageView alloc] init];
  30. self.vipView = [[UIImageView alloc] init];
  31. self.vipView.image = [UIImage imageNamed:@"mg_new_vip_icon"];
  32. self.vipView.contentMode = UIViewContentModeScaleAspectFit;
  33. // 设置子视图的背景色以便于区分
  34. self.ageView.backgroundColor = [UIColor clearColor];
  35. self.levelView.backgroundColor = [UIColor clearColor];
  36. self.nobleView.backgroundColor = [UIColor clearColor];
  37. self.vipView.backgroundColor = [UIColor clearColor];
  38. // 添加子视图到父视图
  39. [self addSubview:self.ageView];
  40. [self addSubview:self.levelView];
  41. [self addSubview:self.nobleView];
  42. [self addSubview:self.vipView];
  43. // 使用Masonry进行布局
  44. [self setupConstraints];
  45. }
  46. - (void)setupConstraints {
  47. CGFloat margin = 10; // 设置子视图之间的间距
  48. [self.ageView mas_makeConstraints:^(MASConstraintMaker *make) {
  49. make.left.equalTo(self.mas_left).offset(margin);
  50. make.top.bottom.equalTo(self);
  51. make.width.equalTo(@50); // 设置初始宽度
  52. }];
  53. [self.levelView mas_makeConstraints:^(MASConstraintMaker *make) {
  54. make.left.equalTo(self.ageView.mas_right).offset(margin);
  55. make.top.bottom.equalTo(self);
  56. make.width.equalTo(@39); // 设置初始宽度
  57. }];
  58. [self.nobleView mas_makeConstraints:^(MASConstraintMaker *make) {
  59. make.left.equalTo(self.levelView.mas_right).offset(margin);
  60. make.top.bottom.equalTo(self);
  61. make.width.equalTo(@43); // 设置初始宽度
  62. }];
  63. [self.vipView mas_makeConstraints:^(MASConstraintMaker *make) {
  64. make.left.equalTo(self.nobleView.mas_right).offset(margin);
  65. make.top.bottom.equalTo(self);
  66. make.width.equalTo(@16); // 设置初始宽度
  67. make.right.equalTo(self.mas_right).offset(-margin);
  68. }];
  69. }
  70. - (void)updateConstraintsIfNeeded {
  71. [super updateConstraintsIfNeeded];
  72. // 动态调整子视图的宽度
  73. [self.ageView mas_updateConstraints:^(MASConstraintMaker *make) {
  74. make.width.equalTo(self.ageView.hidden ? @0 : @50);
  75. }];
  76. [self.levelView mas_updateConstraints:^(MASConstraintMaker *make) {
  77. make.width.equalTo(self.levelView.hidden ? @0 : @39);
  78. }];
  79. [self.nobleView mas_updateConstraints:^(MASConstraintMaker *make) {
  80. make.width.equalTo(self.nobleView.hidden ? @0 : @43);
  81. }];
  82. [self.vipView mas_updateConstraints:^(MASConstraintMaker *make) {
  83. make.width.equalTo(self.vipView.hidden ? @0 : @16);
  84. }];
  85. // 重新布局
  86. [self layoutIfNeeded];
  87. }
  88. @end