JXSetChatTextFontVC.m 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  1. //
  2. // JXSetChatTextFontVC.m
  3. // shiku_im
  4. //
  5. // Created by p on 2018/5/21.
  6. // Copyright © 2018年 Reese. All rights reserved.
  7. //
  8. #import "JXSetChatTextFontVC.h"
  9. #import "JXBaseChatCell.h"
  10. #import "JXMessageCell.h"
  11. @interface JXSetChatTextFontVC ()
  12. @property (nonatomic, strong) NSMutableArray *array;
  13. @property (nonatomic, strong) UISlider *slider;
  14. @property (nonatomic, assign) CGFloat oldFont;
  15. @end
  16. @implementation JXSetChatTextFontVC
  17. - (void)viewDidLoad {
  18. [super viewDidLoad];
  19. // Do any additional setup after loading the view.
  20. self.view.backgroundColor = HEXCOLOR(0xF2F2F2);
  21. self.tableView.backgroundColor = HEXCOLOR(0xF2F2F2);
  22. self.isShowFooterPull = NO;
  23. self.isShowHeaderPull = NO;
  24. self.isGotoBack = YES;
  25. self.title = Localized(@"JX_FontSize");
  26. self.heightHeader = JX_SCREEN_TOP;
  27. self.heightFooter = 0;
  28. //self.view.frame = CGRectMake(0, 0, JX_SCREEN_WIDTH, JX_SCREEN_HEIGHT);
  29. [self createHeadAndFoot];
  30. _array = [NSMutableArray array];
  31. [self getData];
  32. [self.tableView reloadData];
  33. self.oldFont = g_constant.chatFont;
  34. JXLabel *done = [[JXLabel alloc] initWithFrame:CGRectMake(JX_SCREEN_WIDTH -32-15, JX_SCREEN_TOP - 15-15, 32, 15)];
  35. done.delegate = self;
  36. done.didTouch = @selector(done:);
  37. done.text = Localized(@"JX_Finish");
  38. done.font = g_factory.font15;
  39. done.textColor = [UIColor blackColor];
  40. done.textAlignment = NSTextAlignmentRight;
  41. [self.tableHeader addSubview:done];
  42. UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, self.view.frame.size.height - JX_SCREEN_BOTTOM - 80, JX_SCREEN_WIDTH, JX_SCREEN_BOTTOM + 80)];
  43. view.backgroundColor = [UIColor whiteColor];
  44. [self.view addSubview:view];
  45. //滑块设置
  46. _slider = [[UISlider alloc] initWithFrame:CGRectMake(20, 50, JX_SCREEN_WIDTH - 40, 20)];
  47. _slider.minimumValue = 1;
  48. _slider.maximumValue = 6;
  49. _slider.minimumTrackTintColor = [UIColor clearColor];
  50. _slider.maximumTrackTintColor = [UIColor clearColor];
  51. [_slider setValue:(g_constant.chatFont + 2.0 - 15.0)];
  52. //背景图
  53. UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(20, 55, _slider.frame.size.width - 5, 10)];
  54. UIImage *img = [UIImage imageNamed:@"sliderbg"];
  55. imageView.image = img;
  56. //添加点击手势和滑块滑动事件响应
  57. [_slider addTarget:self action:@selector(valueChanged:) forControlEvents:UIControlEventValueChanged];
  58. UITapGestureRecognizer *tap =
  59. [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)];
  60. [_slider addGestureRecognizer:tap];
  61. [view addSubview:imageView];
  62. [view addSubview:_slider];
  63. UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(imageView.frame.origin.x, 25, 20, 20)];
  64. label.font = [UIFont systemFontOfSize:14.0];
  65. label.textColor = [UIColor blackColor];
  66. label.text = @"A";
  67. [view addSubview:label];
  68. label = [[UILabel alloc] initWithFrame:CGRectMake(CGRectGetMaxX(imageView.frame) - 15, 25, 20, 20)];
  69. label.font = [UIFont systemFontOfSize:19.0];
  70. label.textColor = [UIColor blackColor];
  71. label.text = @"A";
  72. [view addSubview:label];
  73. label = [[UILabel alloc] initWithFrame:CGRectMake(imageView.frame.origin.x + (imageView.frame.size.width / 6), 25, 40, 20)];
  74. label.font = [UIFont systemFontOfSize:15.0];
  75. label.textColor = HEXCOLOR(0xB1B2B1);
  76. label.text = Localized(@"JX_Standard");
  77. [view addSubview:label];
  78. }
  79. - (void)done:(JXLabel *)label {
  80. self.oldFont = g_constant.chatFont;
  81. JXMessageObject *msg = [[JXMessageObject alloc] init];
  82. [msg updateAllChatMsgHeight];
  83. [self actionQuit];
  84. }
  85. - (void)actionQuit {
  86. [super actionQuit];
  87. if (self.oldFont != g_constant.chatFont) {
  88. g_constant.chatFont = self.oldFont;
  89. }
  90. [g_default setObject:[NSNumber numberWithFloat:g_constant.chatFont] forKey:kChatFont];
  91. }
  92. - (void)valueChanged:(UISlider *)sender
  93. {
  94. //只取整数值,固定间距
  95. NSString *tempStr = [self numberFormat:sender.value];
  96. [sender setValue:tempStr.floatValue];
  97. g_constant.chatFont = tempStr.floatValue + 15.0 - 2.0;
  98. [self.tableView reloadData];
  99. }
  100. - (void)tapAction:(UITapGestureRecognizer *)sender
  101. {
  102. //取得点击点
  103. CGPoint p = [sender locationInView:_slider];
  104. //计算处于背景图的几分之几,并将之转换为滑块的值(1~6)
  105. float tempFloat = (p.x - 20) / (_slider.frame.size.width) * 6 + 1;
  106. NSString *tempStr = [self numberFormat:tempFloat];
  107. // NSLog(@"%f,%f,%@", p.x, tempFloat, tempStr);
  108. [_slider setValue:tempStr.floatValue];
  109. g_constant.chatFont = tempStr.floatValue + 15.0 - 2.0;
  110. [self.tableView reloadData];
  111. }
  112. /**
  113. * 四舍五入
  114. *
  115. * @param num 待转换数字
  116. *
  117. * @return 转换后的数字
  118. */
  119. - (NSString *)numberFormat:(float)num
  120. {
  121. NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
  122. [formatter setPositiveFormat:@"0"];
  123. return [formatter stringFromNumber:[NSNumber numberWithFloat:num]];
  124. }
  125. - (void)getData {
  126. JXMessageObject *msg1 = [[JXMessageObject alloc] init];
  127. msg1.type = [NSNumber numberWithInt:1];
  128. msg1.fromUserId = g_myself.userId;
  129. msg1.content =@"这个是预览的字体这个是预览的字体这个是预览的字体";//Localized(@"JX_FontPreviewSize");
  130. msg1.isMySend = YES;
  131. [_array addObject:msg1];
  132. JXMessageObject *msg2 = [[JXMessageObject alloc] init];
  133. msg2.type = [NSNumber numberWithInt:1];
  134. msg2.content =@"拖动下面的滑动,可设置字体大小拖动下面的滑动,可设置字体大小拖动下面的滑动,可设置字体大小拖动下面的滑动,可设置字体大小拖动下面的滑动,可设置字体大小";// Localized(@"JX_SettingTheSizeOfTheFont");
  135. msg2.fromUserId = CALL_CENTER_USERID;
  136. // msg2.fromUserId =g_myself.userId;
  137. [_array addObject:msg2];
  138. }
  139. #pragma mark ---------tableView协议----------------
  140. -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
  141. {
  142. return 1;
  143. }
  144. -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
  145. {
  146. return _array.count;
  147. }
  148. -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
  149. {
  150. JXMessageObject *msg=[_array objectAtIndex:indexPath.row];
  151. NSLog(@"indexPath.row:%ld,%ld",indexPath.section,indexPath.row);
  152. //返回对应的Cell
  153. JXBaseChatCell * cell = [self getCell:msg indexPath:indexPath];
  154. cell.msg = msg;
  155. cell.indexNum = (int)indexPath.row;
  156. cell.delegate = self;
  157. // cell.chatCellDelegate = self;
  158. // cell.readDele = @selector(readDeleWithUser:);
  159. cell.isShowHead = YES;
  160. cell.isCourse = YES;
  161. [cell setHeaderImage];
  162. [cell setCellData];
  163. [cell setBackgroundImage];
  164. // [cell isShowSendTime];
  165. //转圈等待
  166. if ([msg.isSend intValue] == transfer_status_ing) {
  167. [cell drawIsSend];
  168. }
  169. msg = nil;
  170. return cell;
  171. }
  172. -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
  173. {
  174. JXMessageObject *msg=[_array objectAtIndex:indexPath.row];
  175. msg.chatMsgHeight = @"0";
  176. switch ([msg.type intValue]) {
  177. case kWCMessageTypeText:
  178. return [JXMessageCell getChatCellHeight:msg];
  179. break;
  180. default:
  181. return [JXBaseChatCell getChatCellHeight:msg];
  182. break;
  183. }
  184. }
  185. #pragma mark -----------------获取对应的Cell-----------------
  186. - (JXBaseChatCell *)getCell:(JXMessageObject *)msg indexPath:(NSIndexPath *)indexPath{
  187. JXBaseChatCell * cell = nil;
  188. switch ([msg.type intValue]) {
  189. case kWCMessageTypeText:
  190. cell = [self creatMessageCell:msg indexPath:indexPath];
  191. break;
  192. default:
  193. cell = [[JXBaseChatCell alloc] init];
  194. break;
  195. }
  196. return cell;
  197. }
  198. #pragma mark -----------------------创建对应的Cell---------------------
  199. //文本
  200. - (JXBaseChatCell *)creatMessageCell:(JXMessageObject *)msg indexPath:(NSIndexPath *)indexPath{
  201. NSString * identifier = @"JXMessageCell";
  202. JXMessageCell *cell=[_table dequeueReusableCellWithIdentifier:identifier];
  203. if (!cell) {
  204. cell = [[JXMessageCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
  205. }
  206. return cell;
  207. }
  208. - (void)didReceiveMemoryWarning {
  209. [super didReceiveMemoryWarning];
  210. // Dispose of any resources that can be recreated.
  211. }
  212. /*
  213. #pragma mark - Navigation
  214. // In a storyboard-based application, you will often want to do a little preparation before navigation
  215. - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
  216. // Get the new view controller using [segue destinationViewController].
  217. // Pass the selected object to the new view controller.
  218. }
  219. */
  220. @end