| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- //
- // CWVoiceButton.m
- // QQVoiceDemo
- //
- // Created by chavez on 2017/9/14.
- // Copyright © 2017年 陈旺. All rights reserved.
- //
- #import "CWVoiceButton.h"
- #import "UIView+CWChat.h"
- @implementation CWVoiceButton
- + (instancetype)buttonWithBackImageNor:(NSString *)backImageNor backImageSelected:(NSString *)backImageSelected imageNor:(NSString *)imageNor imageSelected:(NSString *)imageSelected frame:(CGRect)frame isMicPhone:(BOOL)isMicPhone{
-
- UIImage *normalImage = [UIImage imageNamed:backImageNor]; //aio_voice_button_press
- UIImage *selectedImage = [UIImage imageNamed:backImageSelected];
- CWVoiceButton *btn = [CWVoiceButton buttonWithType:UIButtonTypeCustom];
- btn.frame = frame;
- btn.cw_size = normalImage.size;
- if (isMicPhone) {
- [btn setBackgroundImage:normalImage forState:UIControlStateNormal];
- [btn setBackgroundImage:selectedImage forState:UIControlStateSelected];
- }
- btn.norImage = normalImage;
- btn.selectedImage = selectedImage;
- [btn setImage:[UIImage imageNamed:imageNor] forState:UIControlStateNormal];
- [btn setImage:[UIImage imageNamed:imageSelected] forState:UIControlStateSelected];
- btn.imageView.backgroundColor = [UIColor clearColor];
- if (!isMicPhone) {
- btn.backgroudLayer.contents = (__bridge id _Nullable)(normalImage.CGImage);
- }
-
- return btn;
- }
- - (CALayer *)backgroudLayer {
- if (_backgroudLayer == nil) {
- CALayer *layer = [[CALayer alloc] init];
- layer.frame = self.bounds;
- [self.layer insertSublayer:layer atIndex:0];
- _backgroudLayer = layer;
- }
- return _backgroudLayer;
- }
- - (void)setSelected:(BOOL)selected {
- [super setSelected:selected];
- // 取消CALayer的隐式动画
- [CATransaction begin];
- [CATransaction setDisableActions:YES];
- UIImage *image = selected ? self.selectedImage : self.norImage;
- self.backgroudLayer.contents = (__bridge id _Nullable)(image.CGImage);
- [CATransaction commit];
-
- }
- - (BOOL)isHighlighted {
- return NO;
- }
- @end
|