YMImproveInfoFemaleNicknameView.m 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. //
  2. // YMImproveInfoFemaleNicknameView.m
  3. // MSYOUPAI
  4. //
  5. // Created by YoMi on 2024/2/8.
  6. // Copyright © 2024 MS. All rights reserved.
  7. //
  8. #import "YMImproveInfoFemaleNicknameView.h"
  9. #import "YMImproveInfoViewModel.h"
  10. @interface YMImproveInfoFemaleNicknameView ()
  11. /// 完善信息VM
  12. @property (nonatomic, strong) YMImproveInfoViewModel *viewModel;
  13. /// 昵称标题标签
  14. @property (nonatomic, strong) UILabel *nicknameTitleLb;
  15. @property (nonatomic, strong) UIView *baseView;
  16. /// 昵称输入框
  17. @property (nonatomic, strong) UITextField *nicknameContentInputBox;
  18. /// 昵称刷新按钮
  19. @property (nonatomic, strong) UIButton *nicknameRefreshBtn;
  20. @end
  21. @implementation YMImproveInfoFemaleNicknameView
  22. - (void)ym_setupViews{
  23. [self addSubview:self.nicknameTitleLb];
  24. [self addSubview:self.baseView];
  25. [self.baseView addSubview:self.nicknameContentInputBox];
  26. [self.baseView addSubview:self.nicknameRefreshBtn];
  27. [self setNeedsUpdateConstraints];
  28. [self updateConstraintsIfNeeded];
  29. }
  30. - (void)updateConstraints{
  31. [self.nicknameTitleLb mas_makeConstraints:^(MASConstraintMaker *make) {
  32. make.top.equalTo(self);
  33. make.left.equalTo(self);
  34. make.height.mas_equalTo(adapt(22));
  35. }];
  36. [self.baseView mas_makeConstraints:^(MASConstraintMaker *make) {
  37. make.top.equalTo(self.nicknameTitleLb.mas_bottom).offset(adapt(5));
  38. make.left.equalTo(self);
  39. make.right.equalTo(self);
  40. make.height.mas_equalTo(adapt(48));
  41. }];
  42. [self.nicknameContentInputBox mas_makeConstraints:^(MASConstraintMaker *make) {
  43. make.centerY.equalTo(self.baseView);
  44. make.left.equalTo(self.baseView).offset(adapt(16));
  45. make.width.mas_equalTo(adapt(200));
  46. }];
  47. [self.nicknameRefreshBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  48. make.centerY.equalTo(self.baseView);
  49. make.right.equalTo(self.baseView).offset(adapt(-16));
  50. make.width.mas_equalTo(adapt(80));
  51. make.height.mas_equalTo(adapt(25));
  52. }];
  53. [super updateConstraints];
  54. }
  55. - (void)ym_bindViewModel:(YMImproveInfoViewModel *)viewModel{
  56. if (!viewModel) {
  57. return;
  58. }
  59. _viewModel = viewModel;
  60. RAC(self.nicknameContentInputBox, text) = RACObserve(self.viewModel, improveInfoFemaleNickname);
  61. }
  62. - (UILabel *)nicknameTitleLb{
  63. if (!_nicknameTitleLb) {
  64. _nicknameTitleLb = [[UILabel alloc]init];
  65. _nicknameTitleLb.font = LCFont(13);
  66. _nicknameTitleLb.textColor = HexColorFromRGBA(0x333333,1);
  67. _nicknameTitleLb.textAlignment = NSTextAlignmentLeft;
  68. _nicknameTitleLb.text = @"昵称";
  69. }
  70. return _nicknameTitleLb;
  71. }
  72. - (UIView *)baseView{
  73. if (!_baseView) {
  74. _baseView = [[UIView alloc]init];
  75. _baseView.backgroundColor = HexColorFromRGBA(0xF2F5FF,1);
  76. _baseView.layer.borderColor = HexColorFromRGBA(0xF2F5FF,1).CGColor;
  77. _baseView.layer.borderWidth = 0.2;
  78. _baseView.layer.cornerRadius = adapt(16);
  79. _baseView.layer.masksToBounds = true;
  80. }
  81. return _baseView;
  82. }
  83. - (UITextField *)nicknameContentInputBox{
  84. if (!_nicknameContentInputBox) {
  85. NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc]init];
  86. style.minimumLineHeight = 0;
  87. NSMutableAttributedString *placeholderAttributed = [[NSMutableAttributedString alloc]initWithString:@"取一个独特的昵称吧"];
  88. placeholderAttributed.yy_paragraphStyle = style;
  89. placeholderAttributed.yy_font = LCFont(13);
  90. placeholderAttributed.yy_color = HexColorFromRGB(0x545D79);
  91. placeholderAttributed.yy_alignment = NSTextAlignmentLeft;
  92. _nicknameContentInputBox = [[UITextField alloc]init];
  93. _nicknameContentInputBox.textColor = HexColorFromRGB(0x333333);
  94. _nicknameContentInputBox.textAlignment = NSTextAlignmentLeft;
  95. _nicknameContentInputBox.attributedPlaceholder = placeholderAttributed;
  96. _nicknameContentInputBox.clearButtonMode = UITextFieldViewModeWhileEditing;
  97. _nicknameContentInputBox.autocorrectionType = UITextAutocorrectionTypeDefault;
  98. _nicknameContentInputBox.autocapitalizationType = UITextAutocapitalizationTypeNone;
  99. _nicknameContentInputBox.keyboardType = UIKeyboardTypeDefault;
  100. WS(weakSelf)
  101. [[[_nicknameContentInputBox rac_textSignal] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(id value) {
  102. weakSelf.viewModel.improveInfoFemaleNickname = value;
  103. }];
  104. }
  105. return _nicknameContentInputBox;
  106. }
  107. - (UIButton *)nicknameRefreshBtn{
  108. if (!_nicknameRefreshBtn) {
  109. _nicknameRefreshBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  110. [_nicknameRefreshBtn setImage:ImageByName(@"ym_improve_info_nickname_random_icon") forState:UIControlStateNormal];
  111. [_nicknameRefreshBtn setTitle:@" 随机" forState:UIControlStateNormal];
  112. [_nicknameRefreshBtn setTitleColor:HexColorFromRGB(0x545D79) forState:UIControlStateNormal];
  113. _nicknameRefreshBtn.titleLabel.font = LCFont(13);
  114. _nicknameRefreshBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentRight;
  115. // [_nicknameRefreshBtn setSemanticContentAttribute:UISemanticContentAttributeForceLeftToRight];
  116. CGFloat margin = 5;
  117. _nicknameRefreshBtn.titleEdgeInsets = UIEdgeInsetsMake(0, margin, 0, -margin);
  118. _nicknameRefreshBtn.imageEdgeInsets = UIEdgeInsetsMake(0, margin, 0, -margin);
  119. WS(weakSelf)
  120. [[[_nicknameRefreshBtn rac_signalForControlEvents:UIControlEventTouchUpInside] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(__kindof UIButton * _Nullable sender) {
  121. [weakSelf.viewModel randomNickname];
  122. }];
  123. }
  124. return _nicknameRefreshBtn;
  125. }
  126. @end