CWVoiceButton.m 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. //
  2. // CWVoiceButton.m
  3. // QQVoiceDemo
  4. //
  5. // Created by chavez on 2017/9/14.
  6. // Copyright © 2017年 陈旺. All rights reserved.
  7. //
  8. #import "CWVoiceButton.h"
  9. #import "UIView+CWChat.h"
  10. @implementation CWVoiceButton
  11. + (instancetype)buttonWithBackImageNor:(NSString *)backImageNor backImageSelected:(NSString *)backImageSelected imageNor:(NSString *)imageNor imageSelected:(NSString *)imageSelected frame:(CGRect)frame isMicPhone:(BOOL)isMicPhone{
  12. UIImage *normalImage = [UIImage imageNamed:backImageNor]; //aio_voice_button_press
  13. UIImage *selectedImage = [UIImage imageNamed:backImageSelected];
  14. CWVoiceButton *btn = [CWVoiceButton buttonWithType:UIButtonTypeCustom];
  15. btn.frame = frame;
  16. btn.cw_size = normalImage.size;
  17. if (isMicPhone) {
  18. [btn setBackgroundImage:normalImage forState:UIControlStateNormal];
  19. [btn setBackgroundImage:selectedImage forState:UIControlStateSelected];
  20. }
  21. btn.norImage = normalImage;
  22. btn.selectedImage = selectedImage;
  23. [btn setImage:[UIImage imageNamed:imageNor] forState:UIControlStateNormal];
  24. [btn setImage:[UIImage imageNamed:imageSelected] forState:UIControlStateSelected];
  25. btn.imageView.backgroundColor = [UIColor clearColor];
  26. if (!isMicPhone) {
  27. btn.backgroudLayer.contents = (__bridge id _Nullable)(normalImage.CGImage);
  28. }
  29. return btn;
  30. }
  31. - (CALayer *)backgroudLayer {
  32. if (_backgroudLayer == nil) {
  33. CALayer *layer = [[CALayer alloc] init];
  34. layer.frame = self.bounds;
  35. [self.layer insertSublayer:layer atIndex:0];
  36. _backgroudLayer = layer;
  37. }
  38. return _backgroudLayer;
  39. }
  40. - (void)setSelected:(BOOL)selected {
  41. [super setSelected:selected];
  42. // 取消CALayer的隐式动画
  43. [CATransaction begin];
  44. [CATransaction setDisableActions:YES];
  45. UIImage *image = selected ? self.selectedImage : self.norImage;
  46. self.backgroudLayer.contents = (__bridge id _Nullable)(image.CGImage);
  47. [CATransaction commit];
  48. }
  49. - (BOOL)isHighlighted {
  50. return NO;
  51. }
  52. @end