LZBFaceSignlePageView.m 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. //
  2. // LZBFaceSignlePageView.m
  3. // LZBKeyBoardView
  4. //
  5. // demo地址:https://github.com/lzbgithubcode/LZBKeyBoardView.git
  6. // Created by zibin on 16/12/6.
  7. // Copyright © 2016年 apple. All rights reserved.
  8. //
  9. #import "LZBFaceSignlePageView.h"
  10. #import "LZBEmojiButton.h"
  11. #define LZBFaceSignlePageView_Default_LeftRightInset 15 //左右间距
  12. #define LZBFaceSignlePageView_Default_TopBottomInset 10 //上下间距
  13. @interface LZBFaceSignlePageView()
  14. @property (nonatomic, strong) UIButton *deleteButton; /** 删除按钮 */
  15. @end
  16. @implementation LZBFaceSignlePageView
  17. - (instancetype)initWithFrame:(CGRect)frame
  18. {
  19. if(self = [super initWithFrame:frame])
  20. {
  21. [self addSubview:self.deleteButton];
  22. }
  23. return self;
  24. }
  25. - (void)setEmojiSignlePageModles:(NSArray<LZBEmojiModel *> *)emojiSignlePageModles
  26. {
  27. _emojiSignlePageModles = emojiSignlePageModles;
  28. NSInteger count = emojiSignlePageModles.count;
  29. for (NSInteger i = 0; i < count; i++)
  30. {
  31. LZBEmojiButton *emojiButton = [[LZBEmojiButton alloc]init];
  32. [self addSubview:emojiButton];
  33. emojiButton.model = emojiSignlePageModles[i];
  34. [emojiButton addTarget:self action:@selector(emojiButtonClick:) forControlEvents:UIControlEventTouchUpInside];
  35. }
  36. }
  37. - (void)layoutSubviews
  38. {
  39. [super layoutSubviews];
  40. NSInteger count = self.emojiSignlePageModles.count;
  41. CGFloat emojiButtonW = (self.bounds.size.width - 2 *LZBFaceSignlePageView_Default_LeftRightInset)/LZBFaceSignlePageView_Emjoi_MaxCol;
  42. CGFloat emojiButtonH = (self.bounds.size.height - 2 *LZBFaceSignlePageView_Default_TopBottomInset)/LZBFaceSignlePageView_Emjoi_MaxRow;
  43. for (NSInteger i = 0; i < count; i++)
  44. {
  45. CGFloat emojiButtonX = LZBFaceSignlePageView_Default_LeftRightInset + (i%LZBFaceSignlePageView_Emjoi_MaxCol)*emojiButtonW;
  46. CGFloat emojiButtonY = LZBFaceSignlePageView_Default_TopBottomInset + (i/LZBFaceSignlePageView_Emjoi_MaxCol)*emojiButtonH;
  47. LZBEmojiButton *emojiButton = self.subviews[i + 1]; //第0个是删除按钮
  48. emojiButton.frame = CGRectMake(emojiButtonX, emojiButtonY, emojiButtonW, emojiButtonH);
  49. }
  50. LZBEmojiButton *lastEmojiButton = [self.subviews lastObject];
  51. //布局删除按钮
  52. CGFloat deleteButtonX = lastEmojiButton.frame.origin.x + lastEmojiButton.bounds.size.width;
  53. CGFloat deleteButtonY = lastEmojiButton.frame.origin.y;
  54. CGFloat deleteButtonW = emojiButtonW;
  55. CGFloat deleteButtonH = emojiButtonH;
  56. self.deleteButton.frame = CGRectMake(deleteButtonX, deleteButtonY, deleteButtonW, deleteButtonH);
  57. }
  58. #pragma mark - handle
  59. - (void)deleteClick
  60. {
  61. if(self.emojiDidDeleteBlock)
  62. self.emojiDidDeleteBlock();
  63. }
  64. - (void)emojiButtonClick:(LZBEmojiButton *)emojiButton
  65. {
  66. if(self.emojiDidSelectBlock)
  67. self.emojiDidSelectBlock(emojiButton.model);
  68. }
  69. #pragma mark - lazy
  70. - (UIButton *)deleteButton{
  71. if (_deleteButton == nil)
  72. {
  73. _deleteButton = [UIButton buttonWithType:UIButtonTypeCustom];
  74. [_deleteButton setImage:LZBKeyboardBundleImage(@"compose_emotion_delete")forState:UIControlStateNormal];
  75. [_deleteButton addTarget:self action:@selector(deleteClick) forControlEvents:UIControlEventTouchUpInside];
  76. }
  77. return _deleteButton;
  78. }
  79. @end