JXVolumeView.m 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. //
  2. // JXVolumeView.m
  3. // shiku_im
  4. //
  5. // Created by flyeagleTang on 14-7-24.
  6. // Copyright (c) 2014年 Reese. All rights reserved.
  7. //
  8. #import "JXVolumeView.h"
  9. #import "UIImage-Extensions.h"
  10. @interface JXVolumeView ()
  11. @property (nonatomic, strong) UIImageView *voiceImgV;
  12. @property (nonatomic, strong) UILabel *tintLabel;
  13. @property (nonatomic, strong) UIImageView *cancelImgV;
  14. @end
  15. @implementation JXVolumeView
  16. @synthesize volume;
  17. - (id)initWithFrame:(CGRect)frame
  18. {
  19. self = [super initWithFrame:frame];
  20. if (self) {
  21. self.backgroundColor = [UIColor clearColor];
  22. self.layer.cornerRadius = 6;
  23. self.layer.masksToBounds = YES;
  24. UIView* v = [[UIView alloc]initWithFrame:self.bounds];
  25. v.backgroundColor = [UIColor blackColor];
  26. v.alpha = 0.6;
  27. [self addSubview:v];
  28. //椭圆下方的托架
  29. _volume = [[JXImageView alloc]initWithFrame:CGRectMake(20, 20, 120/2, 180/2)];
  30. _volume.image = [UIImage imageNamed:@"pub_recorder"];
  31. [self addSubview:_volume];
  32. // [_volume release];
  33. // //椭圆白色背景
  34. // JXImageView * inputBackground = [[JXImageView alloc]initWithFrame:CGRectMake(9, 1, 34, 66)];//20,1,66,132
  35. // inputBackground.image = [UIImage imageNamed:@"pub_microphone_volumeBg"];
  36. // inputBackground.layer.cornerRadius = 17;
  37. // inputBackground.clipsToBounds = YES;
  38. // [_volume addSubview:inputBackground];
  39. //// [inputBackground release];
  40. //
  41. // //椭圆红色背景
  42. // _input = [[JXImageView alloc]initWithFrame:CGRectMake(-0.2, 0, 34, 70)];
  43. // _input.image = [UIImage imageNamed:@"pub_microphone_volume"];
  44. // [inputBackground addSubview:_input];
  45. _cancelImgV = [[UIImageView alloc] initWithFrame:CGRectMake((self.frame.size.width-240/2)/2, 20, 240/2, 180/2)];
  46. _cancelImgV.image = [UIImage imageNamed:@"voice_cancel"];
  47. _cancelImgV.hidden = YES;
  48. [self addSubview:_cancelImgV];
  49. _voiceImgV = [[UIImageView alloc] initWithFrame:CGRectMake(CGRectGetMaxX(_volume.frame)+15, 20, _volume.frame.size.width, _volume.frame.size.height)];
  50. _voiceImgV.image = [UIImage imageNamed:@"v1"];
  51. [self addSubview:_voiceImgV];
  52. _tintLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, frame.size.height-13-15, frame.size.width, 13)];
  53. _tintLabel.text = Localized(@"JXVolumeView_CancelSend");
  54. _tintLabel.font = SYSFONT(13);
  55. _tintLabel.textColor = [UIColor whiteColor];
  56. _tintLabel.numberOfLines = 0;
  57. _tintLabel.textAlignment = NSTextAlignmentCenter;
  58. [self addSubview:_tintLabel];
  59. }
  60. return self;
  61. }
  62. - (void)setIsWillCancel:(BOOL)isWillCancel {
  63. _isWillCancel = isWillCancel;
  64. if (_isWillCancel) {
  65. _cancelImgV.hidden = NO;
  66. _volume.hidden = YES;
  67. _voiceImgV.hidden = YES;
  68. _tintLabel.text = @"松开手指,取消发送";
  69. }else {
  70. _cancelImgV.hidden = YES;
  71. _volume.hidden = NO;
  72. _voiceImgV.hidden = NO;
  73. _tintLabel.text = Localized(@"JXVolumeView_CancelSend");
  74. }
  75. }
  76. -(void)setVolume:(double)value{
  77. volume = value;
  78. float n = value;
  79. float m = 1.0-n;
  80. _input.frame = CGRectMake(-0.2, 150*m -5 , 34, 70);
  81. _input.image = [UIImage imageNamed:@"pub_microphone_volume"];
  82. NSLog(@"---n:%f m:%f",n,m);
  83. int g = n*10+1 > 7 ? 7 : n*10+1;
  84. _voiceImgV.image = [UIImage imageNamed:[NSString stringWithFormat:@"v%d", g]];
  85. }
  86. //截取部分图像,无用
  87. -(UIImage*)getSubImage:(CGRect)rect
  88. {
  89. CGImageRef subImageRef = CGImageCreateWithImageInRect(_input.image.CGImage, rect);
  90. CGRect smallBounds = CGRectMake(0, 0, CGImageGetWidth(subImageRef), CGImageGetHeight(subImageRef));
  91. UIGraphicsBeginImageContext(smallBounds.size);
  92. CGContextRef context = UIGraphicsGetCurrentContext();
  93. CGContextDrawImage(context, smallBounds, subImageRef);
  94. UIImage* smallImage = [UIImage imageWithCGImage:subImageRef];
  95. UIGraphicsEndImageContext();
  96. return smallImage;
  97. }
  98. -(void)show{
  99. [g_window addSubview:self];
  100. }
  101. -(void)hide{
  102. [self removeFromSuperview];
  103. }
  104. @end