IncreaseBalanceController.m 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345
  1. //
  2. // IncreaseBalanceController.m
  3. // model
  4. //
  5. // Created by JuYi on 2018/7/16.
  6. // Copyright © 2018年 Mine. All rights reserved.
  7. // 账户充值
  8. #import "IncreaseBalanceController.h"
  9. #import "PayTypeView.h"
  10. @interface IncreaseBalanceController ()<UITextFieldDelegate>
  11. @property (nonatomic, strong) UIScrollView *bgScrollView;
  12. @property (nonatomic, strong) UILabel *currentBalanceLabel; //当前余额
  13. @property (nonatomic, strong) UITextField *increaseAmountTF; //充值金额
  14. @property (nonatomic, strong) UITextField *writeTF;
  15. @property (nonatomic, strong) UIButton *selectedAmountBtn; //选中充值金额按钮
  16. @property (nonatomic, strong) UIButton *selectedPayTypeBtn; //选中支付方式按钮
  17. @property (nonatomic, strong) UIButton *writeBtn;; //选中支付方式按钮
  18. @property (nonatomic, copy) NSString *moneyStr; //选中金额
  19. @property (nonatomic, assign) NSInteger tap;
  20. @end
  21. @implementation IncreaseBalanceController
  22. - (void)viewDidLoad {
  23. [super viewDidLoad];
  24. self.tap = 0;
  25. // Do any additional setup after loading the view.
  26. self.view.backgroundColor = RGBValueColor(0xf7f7f7, 1.0);
  27. UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(keyboardHide:)];
  28. //设置成NO表示当前控件响应后会传播到其他控件上,默认为YES。
  29. tapGestureRecognizer.cancelsTouchesInView = NO;
  30. //将触摸事件添加到当前view
  31. [self.view addGestureRecognizer:tapGestureRecognizer];
  32. //设置导航条
  33. [self creatNavBar];
  34. //设置子试图
  35. [self creatSubViews];
  36. }
  37. #pragma mark -- 收起键盘
  38. -(void)keyboardHide:(UITapGestureRecognizer*)tap{
  39. [self.view endEditing:YES];
  40. }
  41. - (void)didReceiveMemoryWarning {
  42. [super didReceiveMemoryWarning];
  43. // Dispose of any resources that can be recreated.
  44. }
  45. - (void)creatNavBar {
  46. self.title = @"账户充值";
  47. //
  48. UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom];
  49. btn.frame = CGRectMake(0, 0, 40, 40);
  50. [btn setImage:[UIImage imageNamed:@"fanhui2"] forState:UIControlStateNormal];
  51. btn.imageEdgeInsets = UIEdgeInsetsMake(0, -20, 0, 0);
  52. [btn addTarget:self action:@selector(backClick) forControlEvents:UIControlEventTouchUpInside];
  53. UIBarButtonItem *leftItem = [[UIBarButtonItem alloc] initWithCustomView:btn];
  54. UIBarButtonItem *nagetiveSpacer = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
  55. // nagetiveSpacer.width = -12;//这个值可以根据自己需要自己调整
  56. self.navigationItem.leftBarButtonItems = @[nagetiveSpacer, leftItem];
  57. }
  58. - (void)backClick {
  59. [self.navigationController popViewControllerAnimated:YES];
  60. }
  61. - (void)creatSubViews {
  62. //
  63. UIScrollView *scrollView = [[UIScrollView alloc] init];
  64. if (@available(iOS 11.0, *) ) {
  65. scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
  66. }else{
  67. self.automaticallyAdjustsScrollViewInsets = NO;
  68. }
  69. scrollView.frame = self.view.bounds;
  70. scrollView.showsVerticalScrollIndicator = NO;
  71. scrollView.backgroundColor = RGBValueColor(0xf7f7f7, 1.0);
  72. CGFloat height = ScreenHeight <= 667 ? 697 : ScreenHeight;
  73. scrollView.contentSize = CGSizeMake(ScreenWidth, height);
  74. [self.view addSubview:scrollView];
  75. self.bgScrollView = scrollView;
  76. //
  77. UILabel *balanceTitleLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 18, 110, 15)];
  78. balanceTitleLabel.text = @"您当前的余额:";
  79. balanceTitleLabel.font = [UIFont systemFontOfSize:15];
  80. balanceTitleLabel.textColor = RGBValueColor(0x333333, 1.0);
  81. [scrollView addSubview:balanceTitleLabel];
  82. UILabel *balanceLabel = [[UILabel alloc] initWithFrame:CGRectMake(CGRectGetMaxX(balanceTitleLabel.frame), 18, ScreenWidth / 2, 15)];
  83. balanceLabel.text = @"1566元";
  84. balanceLabel.font = [UIFont systemFontOfSize:15];
  85. balanceLabel.textColor = RGBValueColor(0xfe4086, 1.0);
  86. [scrollView addSubview:balanceLabel];
  87. self.currentBalanceLabel = balanceLabel;
  88. UIView *upLineView = [[UIView alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(balanceTitleLabel.frame) + 18, ScreenWidth, 0.5)];
  89. upLineView.backgroundColor = RGBValueColor(0xdfdfdf, 1.0);
  90. [scrollView addSubview:upLineView];
  91. // 按钮布局
  92. CGFloat verticalMargin = 15;
  93. CGFloat HorizontalMargin = 20;
  94. CGFloat widthBtn = (ScreenWidth - 55) / 2;
  95. CGFloat heightBtn = 50;
  96. for (int i = 0; i < 4; i++) {
  97. NSInteger x = i % 2;
  98. NSInteger y = i / 2;
  99. UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
  100. btn.frame = CGRectMake(HorizontalMargin + x * verticalMargin + x * widthBtn, CGRectGetMaxY(upLineView.frame) + 15 + y * verticalMargin + y * heightBtn, widthBtn, heightBtn);
  101. btn.tag = 200 + i;
  102. [btn setBackgroundImage:[UIImage imageNamed:@"kuang"] forState:UIControlStateNormal]; //
  103. [btn setBackgroundImage:[UIImage imageNamed:@"kuang2"] forState:UIControlStateSelected];
  104. [btn setTitleColor:RGBValueColor(0x333333, 1.0) forState:UIControlStateNormal];
  105. [btn setTitleColor:RGBValueColor(0xffffff, 1.0) forState:UIControlStateSelected];
  106. btn.titleLabel.font = [UIFont systemFontOfSize:15.f];
  107. [btn addTarget:self action:@selector(selectedAmountBtnAction:) forControlEvents:UIControlEventTouchUpInside];
  108. if (i == 0) {
  109. [btn setTitle:@"200元" forState:UIControlStateNormal];
  110. }
  111. if (i == 1) {
  112. [btn setTitle:@"500元" forState:UIControlStateNormal];
  113. }
  114. if (i == 2) {
  115. [btn setTitle:@"1000元" forState:UIControlStateNormal];
  116. }
  117. if (i == 3) {
  118. [btn setTitle:@"2000元" forState:UIControlStateNormal];
  119. //
  120. self.writeBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  121. self.writeBtn.frame = CGRectMake(HorizontalMargin, CGRectGetMaxY(btn.frame) + 15, ScreenWidth - 40, heightBtn);
  122. [self.writeBtn setBackgroundImage:[UIImage imageNamed:@"changkuang"] forState:UIControlStateNormal];
  123. [self.writeBtn setTitleColor:RGBValueColor(0x333333, 1.0) forState:UIControlStateNormal];
  124. self.writeBtn.titleLabel.font = [UIFont systemFontOfSize:15.f];
  125. [self.writeBtn setTitle:@"请输入其他金额(元)" forState:UIControlStateNormal];
  126. // [writeBtn addTarget:self action:@selector(selectedWriteBtnAction:) forControlEvents:UIControlEventTouchUpInside];
  127. [scrollView addSubview:self.writeBtn];
  128. //
  129. UITextField *writeTF = [[UITextField alloc] initWithFrame:CGRectMake(HorizontalMargin, CGRectGetMaxY(btn.frame) + 15, ScreenWidth - 40, heightBtn)];
  130. writeTF.textAlignment = NSTextAlignmentCenter;
  131. writeTF.font = [UIFont systemFontOfSize:15];
  132. writeTF.textColor = RGBValueColor(0x333333, 1.0);
  133. // increaseAmountTF.placeholder = @"请输入其他金额(元)";
  134. // [increaseAmountTF setValue:RGBValueColor(0x333333, 1.0) forKeyPath:@"_placeholderLabel.textColor"];
  135. // [increaseAmountTF setValue:[UIFont boldSystemFontOfSize:15.0] forKeyPath:@"_placeholderLabel.font"];
  136. writeTF.tag = 700;
  137. writeTF.keyboardType = UIKeyboardTypeDecimalPad;
  138. writeTF.delegate = self;
  139. [scrollView addSubview:writeTF];
  140. self.writeTF = writeTF;
  141. }
  142. [scrollView addSubview:btn];
  143. }
  144. //
  145. //
  146. UILabel *amountTitleLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, CGRectGetMaxY(self.writeBtn.frame) + 18, 80, 15)];
  147. amountTitleLabel.text = @"充值金额:";
  148. amountTitleLabel.font = [UIFont systemFontOfSize:15];
  149. amountTitleLabel.textColor = RGBValueColor(0x333333, 1.0);
  150. [scrollView addSubview:amountTitleLabel];
  151. UITextField *increaseAmountTF = [[UITextField alloc] initWithFrame:CGRectMake(CGRectGetMaxX(amountTitleLabel.frame), CGRectGetMaxY(self.writeBtn.frame) + 18, ScreenWidth / 2, 15)];
  152. increaseAmountTF.textAlignment = NSTextAlignmentLeft;
  153. increaseAmountTF.font = [UIFont systemFontOfSize:15];
  154. increaseAmountTF.textColor = RGBValueColor(0xfe4086, 1.0);
  155. increaseAmountTF.keyboardType = UIKeyboardTypeDecimalPad;
  156. increaseAmountTF.userInteractionEnabled = NO;
  157. [scrollView addSubview:increaseAmountTF];
  158. self.increaseAmountTF = increaseAmountTF;
  159. UIView *downLineView = [[UIView alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(amountTitleLabel.frame) + 18, ScreenWidth, 0.5)];
  160. downLineView.backgroundColor = RGBValueColor(0xdfdfdf, 1.0);
  161. [scrollView addSubview:downLineView];
  162. //
  163. UILabel *payTypeTitleLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, CGRectGetMaxY(downLineView.frame) + 18, ScreenWidth - 40, 15)];
  164. payTypeTitleLabel.text = @"请选择充值方式:";
  165. payTypeTitleLabel.font = [UIFont systemFontOfSize:15];
  166. payTypeTitleLabel.textColor = RGBValueColor(0x333333, 1.0);
  167. [scrollView addSubview:payTypeTitleLabel];
  168. UIView *payTypeLineView = [[UIView alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(payTypeTitleLabel.frame) + 18, ScreenWidth, 0.5)];
  169. payTypeLineView.backgroundColor = RGBValueColor(0xdfdfdf, 1.0);
  170. [scrollView addSubview:payTypeLineView];
  171. //支付方式选择
  172. UIView *whiteView = [[UIView alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(payTypeLineView.frame), ScreenWidth, 173)];
  173. whiteView.backgroundColor = [UIColor whiteColor];
  174. [scrollView addSubview:whiteView];
  175. PayTypeView *zhifubaoView = [[PayTypeView alloc] initWithFrame:CGRectMake(0, 0, ScreenWidth, 86)];
  176. zhifubaoView.iconImageView.image = [UIImage imageNamed:@"zhifubao"];
  177. zhifubaoView.titleLabel.text = @"支付宝充值";
  178. zhifubaoView.subTitleLabel.text = @"推荐有支付宝账号的用户使用";
  179. zhifubaoView.selectedbtn.tag = 300;
  180. [zhifubaoView.selectedbtn addTarget:self action:@selector(selectedbtnAction:) forControlEvents:UIControlEventTouchUpInside];
  181. [whiteView addSubview:zhifubaoView];
  182. UIView *mindleLineView = [[UIView alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(zhifubaoView.frame), ScreenWidth, 0.5)];
  183. mindleLineView.backgroundColor = RGBValueColor(0xdfdfdf, 1.0);
  184. [whiteView addSubview:mindleLineView];
  185. PayTypeView *weixinView = [[PayTypeView alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(mindleLineView.frame), ScreenWidth, 86)];
  186. weixinView.iconImageView.image = [UIImage imageNamed:@"weixin"];
  187. weixinView.titleLabel.text = @"微信充值";
  188. weixinView.subTitleLabel.text = @"推荐安装微信的用户使用";
  189. weixinView.selectedbtn.tag = 301;
  190. [weixinView.selectedbtn addTarget:self action:@selector(selectedbtnAction:) forControlEvents:UIControlEventTouchUpInside];
  191. [whiteView addSubview:weixinView];
  192. //
  193. UIButton *topUpBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  194. topUpBtn.frame = CGRectMake(20, CGRectGetMaxY(whiteView.frame) + 27, ScreenWidth - 40, 45);
  195. [topUpBtn setBackgroundImage:[UIImage imageNamed:@"anniu"] forState:UIControlStateNormal];
  196. [topUpBtn setTitle:@"立即充值" forState:UIControlStateNormal];
  197. [topUpBtn setTitleColor:RGBValueColor(0xffffff, 1.0) forState:UIControlStateNormal];
  198. [topUpBtn addTarget:self action:@selector(topUpBtnAction) forControlEvents:UIControlEventTouchUpInside];
  199. [scrollView addSubview:topUpBtn];
  200. }
  201. #pragma mark -- 选中的充值金额
  202. - (void)selectedAmountBtnAction:(UIButton *)sender {
  203. switch (sender.tag) {
  204. case 200:
  205. self.increaseAmountTF.text = @"200元";
  206. self.moneyStr = @"200";
  207. break;
  208. case 201:
  209. self.increaseAmountTF.text = @"500元";
  210. self.moneyStr = @"500";
  211. break;
  212. case 202:
  213. self.increaseAmountTF.text = @"1000元";
  214. self.moneyStr = @"1000";
  215. break;
  216. case 203:
  217. self.increaseAmountTF.text = @"2000元";
  218. self.moneyStr = @"2000";
  219. break;
  220. default:
  221. break;
  222. }
  223. [self.writeBtn setTitle:@"请输入其他金额(元)" forState:UIControlStateNormal];
  224. self.writeTF.text = @"";
  225. self.selectedAmountBtn.selected = NO;
  226. sender.selected = !sender.selected;
  227. self.selectedAmountBtn = sender;
  228. }
  229. #pragma mark --  请输入金额
  230. - (void)selectedWriteBtnAction:(UIButton *)sender {
  231. self.selectedAmountBtn.selected = NO;
  232. self.moneyStr = @"";
  233. self.increaseAmountTF.text = @"";
  234. }
  235. #pragma mark -- 选择支付方式
  236. - (void)selectedbtnAction:(UIButton *)sender {
  237. self.selectedPayTypeBtn.selected = NO;
  238. sender.selected = !sender.selected;
  239. self.selectedPayTypeBtn = sender;
  240. }
  241. #pragma mark -- 立即充值
  242. - (void)topUpBtnAction {
  243. NSLog(@"立即充值");
  244. }
  245. #pragma mark ----- UITextFieldDelegate
  246. - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
  247. [self.writeBtn setTitle:@"" forState:UIControlStateNormal];
  248. self.selectedAmountBtn.selected = NO;
  249. self.moneyStr = @"";
  250. self.increaseAmountTF.text = @"";
  251. return YES;
  252. }
  253. - (void)textFieldDidEndEditing:(UITextField *)textField {
  254. if (textField.text.length == 0) {
  255. [self.writeBtn setTitle:@"请输入其他金额(元)" forState:UIControlStateNormal];
  256. } else {
  257. self.increaseAmountTF.text = [NSString stringWithFormat:@"%@元",textField.text];
  258. }
  259. self.moneyStr = textField.text;
  260. NSLog(@"self.moneyStr = %@", self.moneyStr);
  261. }
  262. - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
  263. if (textField.tag == 700) {
  264. if(![self isValidAboutInputText:textField shouldChangeCharactersInRange:range replacementString:string decimalNumber:2]) {
  265. return NO;
  266. }
  267. }
  268. return YES;
  269. }
  270. //输入框中只能输入数字和小数点,且小数点只能输入一位,参数number 可以设置小数的位数,该函数在-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string调用;
  271. - (BOOL)isValidAboutInputText:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string decimalNumber:(NSInteger)number {
  272. NSScanner *scanner = [NSScanner scannerWithString:string];
  273. NSCharacterSet *numbers;
  274. NSRange pointRange = [textField.text rangeOfString:@"."];
  275. if ( (pointRange.length > 0) && (pointRange.location < range.location || pointRange.location > range.location + range.length) ){
  276. numbers = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
  277. }else{
  278. numbers = [NSCharacterSet characterSetWithCharactersInString:@"0123456789."];
  279. }
  280. if ( [textField.text isEqualToString:@""] && [string isEqualToString:@"."] ){
  281. return NO;
  282. }
  283. short remain = number; //保留 number位小数
  284. NSString *tempStr = [textField.text stringByAppendingString:string];
  285. NSUInteger strlen = [tempStr length];
  286. if(pointRange.length > 0 && pointRange.location > 0){ //判断输入框内是否含有“.”。
  287. if([string isEqualToString:@"."]){ //当输入框内已经含有“.”时,如果再输入“.”则被视为无效。
  288. return NO;
  289. }
  290. if(strlen > 0 && (strlen - pointRange.location) > remain+1){ //当输入框内已经含有“.”,当字符串长度减去小数点前面的字符串长度大于需要要保留的小数点位数,则视当次输入无效。
  291. return NO;
  292. }
  293. }
  294. NSRange zeroRange = [textField.text rangeOfString:@"0"];
  295. if(zeroRange.length == 1 && zeroRange.location == 0){ //判断输入框第一个字符是否为“0”
  296. if(![string isEqualToString:@"0"] && ![string isEqualToString:@"."] && [textField.text length] == 1){ //当输入框只有一个字符并且字符为“0”时,再输入不为“0”或者“.”的字符时,则将此输入替换输入框的这唯一字符。
  297. textField.text = string;
  298. return NO;
  299. }else{
  300. if(pointRange.length == 0 && pointRange.location > 0){ //当输入框第一个字符为“0”时,并且没有“.”字符时,如果当此输入的字符为“0”,则视当此输入无效。
  301. if([string isEqualToString:@"0"]){
  302. return NO;
  303. }
  304. }
  305. }
  306. }
  307. NSString *buffer;
  308. if ( ![scanner scanCharactersFromSet:numbers intoString:&buffer] && ([string length] != 0) ){
  309. return NO;
  310. }else{
  311. return YES;
  312. }
  313. }
  314. @end