//
|
// HDLEZVideoDoorToolView.m
|
// EZSDK
|
//
|
// Created by Davin on 2023/6/21.
|
//
|
|
#import "HDLEZVideoDoorToolView.h"
|
#import "HDLEZOPButton.h"
|
|
@interface HDLEZVideoDoorToolView ()
|
|
@property (nonatomic, strong) HDLEZOPButton *hangUpButton; // 挂断按钮
|
@property (nonatomic, strong) UIView *baseToolView; // 工具视图
|
@property (nonatomic, strong) HDLEZOPButton *playButton; // 播放/暂停
|
@property (nonatomic, strong) HDLEZOPButton *volumeButton; // 音量开启/关闭
|
@property (nonatomic, strong) HDLEZOPButton *qualityButton; // 清晰度
|
@property (nonatomic, strong) HDLEZOPButton *fullSceneButton; // 退出全屏
|
|
@property (nonatomic, strong) HDLEZVideoQualityBoxView *qualityBox; // 清晰度弹框视图
|
|
@property (nonatomic, assign) BOOL isPlaying; // 是否正在播放
|
@property (nonatomic, assign) BOOL soundOn; // 音量是否开启
|
@property (nonatomic, assign) NSInteger videoLevel; // 清晰度
|
|
@property (nonatomic, copy) void(^fullOperation)(HDLEZVideoFullSceneOperation operationType);
|
|
@end
|
|
@implementation HDLEZVideoDoorToolView
|
|
- (instancetype)initWithFrame:(CGRect)frame {
|
if (self = [super initWithFrame:frame]) {
|
[self createSubviews];
|
}
|
return self;
|
}
|
|
- (void)createSubviews {
|
self.backgroundColor = [UIColor clearColor];
|
[self addSubview:self.hangUpButton];
|
[self addSubview:self.baseToolView];
|
[self addSubview:self.playButton];
|
[self addSubview:self.volumeButton];
|
[self addSubview:self.qualityButton];
|
[self addSubview:self.fullSceneButton];
|
[self addSubview:self.qualityBox];
|
|
[self.hangUpButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
make.bottom.mas_equalTo(self.baseToolView.mas_top).offset(-40);
|
make.centerX.mas_equalTo(self.mas_centerX);
|
make.width.mas_equalTo(70);
|
make.height.mas_equalTo(110);
|
}];
|
|
[self.baseToolView mas_makeConstraints:^(MASConstraintMaker *make) {
|
make.left.mas_equalTo(self.mas_left).offset(16.);
|
make.bottom.mas_equalTo(self.mas_bottom).offset(-37.);
|
make.right.mas_equalTo(self.mas_right).offset(-16.);
|
make.height.mas_equalTo(102);
|
}];
|
|
[self.playButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
make.left.mas_equalTo(self.baseToolView.mas_left).offset(12.);
|
make.centerY.mas_equalTo(self.baseToolView.mas_centerY);
|
make.height.mas_equalTo(70);
|
}];
|
|
[self.volumeButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
make.left.mas_equalTo(self.playButton.mas_right).offset(21.);
|
make.centerY.mas_equalTo(self.baseToolView.mas_centerY);
|
make.width.mas_equalTo(self.playButton.mas_width).multipliedBy(1.);
|
make.height.mas_equalTo(self.playButton.mas_height).multipliedBy(1.);
|
}];
|
|
[self.qualityButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
make.left.mas_equalTo(self.volumeButton.mas_right).offset(21.);
|
make.centerY.mas_equalTo(self.baseToolView.mas_centerY);
|
make.width.mas_equalTo(self.playButton.mas_width).multipliedBy(1.);
|
make.height.mas_equalTo(self.playButton.mas_height).multipliedBy(1.);
|
}];
|
|
[self.fullSceneButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
make.left.mas_equalTo(self.qualityButton.mas_right).offset(21.);
|
make.right.mas_equalTo(self.baseToolView.mas_right).offset(-12);
|
make.centerY.mas_equalTo(self.baseToolView.mas_centerY);
|
make.width.mas_equalTo(self.playButton.mas_width).multipliedBy(1.);
|
make.height.mas_equalTo(self.playButton.mas_height).multipliedBy(1.);
|
}];
|
|
[self.qualityBox mas_makeConstraints:^(MASConstraintMaker *make) {
|
make.bottom.mas_equalTo(self.baseToolView.mas_top);
|
make.centerX.mas_equalTo(self.qualityButton.mas_centerX);
|
make.width.mas_equalTo(80);
|
make.height.mas_equalTo(168);
|
}];
|
|
[self.hangUpButton addTarget:self action:@selector(hangUpAction) forControlEvents:UIControlEventTouchUpInside];
|
[self.playButton addTarget:self action:@selector(playAction) forControlEvents:UIControlEventTouchUpInside];
|
[self.volumeButton addTarget:self action:@selector(volumeAction) forControlEvents:UIControlEventTouchUpInside];
|
[self.qualityButton addTarget:self action:@selector(qualityAction) forControlEvents:UIControlEventTouchUpInside];
|
[self.fullSceneButton addTarget:self action:@selector(fullSceneAction) forControlEvents:UIControlEventTouchUpInside];
|
|
__weak HDLEZVideoDoorToolView *weakself = self;
|
[self.qualityBox videoQualityChange:^(HDLEZVideoFullSceneOperation operationType) {
|
if (weakself.fullOperation) {
|
weakself.fullOperation(operationType);
|
}
|
|
[weakself qualityAction];
|
|
if (operationType == HDLEZVideoFullSceneOperationOfSmooth) {
|
[weakself videoLevel:0];
|
} else if (operationType == HDLEZVideoFullSceneOperationOfSmooth) {
|
[weakself videoLevel:1];
|
} else if (operationType == HDLEZVideoFullSceneOperationOfSmooth) {
|
[weakself videoLevel:2];
|
}
|
}];
|
}
|
|
#pragma mark - PublishMethod
|
- (void)configPlayStatus:(BOOL)isPlaying soundOn:(BOOL)soundOn videoLevel:(NSInteger)videoLevel toolOperation:(void(^)(HDLEZVideoFullSceneOperation operationType))fullOperation {
|
// self.isPlaying = isPlaying;
|
// self.soundOn = soundOn;
|
// self.videoLevel = videoLevel;
|
self.fullOperation = fullOperation;
|
|
[self playStatus:isPlaying];
|
[self soundOn:soundOn];
|
[self videoLevel:videoLevel];
|
}
|
|
/// 设置播放状态
|
/// - Parameter isPlaying: 播放状态
|
- (void)playStatus:(BOOL)isPlaying {
|
self.isPlaying = isPlaying;
|
self.playButton.selected = !isPlaying;
|
}
|
|
/// 音量设置
|
/// - Parameter soundOn: 是否开启音量
|
- (void)soundOn:(BOOL)soundOn {
|
self.soundOn = soundOn;
|
self.volumeButton.selected = !soundOn;
|
NSLog(@"######%@声音", soundOn ? @"开启" : @"关闭");
|
}
|
|
/// 清晰度设置
|
/// - Parameter videoLevel: 清晰度
|
- (void)videoLevel:(NSInteger)videoLevel {
|
self.videoLevel = self.videoLevel;
|
if (videoLevel == 0) {
|
[self.qualityButton setImage:[UIImage imageNamed:@"hdl_ez_cat_eyes_full_smooth"] forState:UIControlStateNormal];
|
} else if (videoLevel == 1) {
|
[self.qualityButton setImage:[UIImage imageNamed:@"hdl_ez_cat_eyes_full_balance"] forState:UIControlStateNormal];
|
} else if (videoLevel == 2) {
|
[self.qualityButton setImage:[UIImage imageNamed:@"hdl_ez_cat_eyes_full_hd_full"] forState:UIControlStateNormal];
|
}
|
}
|
|
- (void)ringRingRing:(BOOL)isRing {
|
self.hangUpButton.hidden = !isRing;
|
}
|
|
/// 设置清晰度调节
|
/// - Parameter isSupport: 是否支持调整清晰度
|
- (void)supportVideoLevelChange:(BOOL)isSupport {
|
self.qualityButton.userInteractionEnabled = isSupport;
|
}
|
|
#pragma mark - PrivateMethod
|
- (void)hangUpAction {
|
if (self.fullOperation) {
|
self.fullOperation(HDLEZVideoFullSceneOperationOfHangUp);
|
}
|
}
|
|
- (void)playAction {
|
[self playStatus:!self.isPlaying];
|
[self qualityStatusChanged:YES];
|
if (self.fullOperation) {
|
self.fullOperation(self.isPlaying ? HDLEZVideoFullSceneOperationOfPause : HDLEZVideoFullSceneOperationOfPlay);
|
}
|
}
|
|
- (void)volumeAction {
|
[self soundOn:!self.soundOn];
|
[self qualityStatusChanged:YES];
|
if (self.fullOperation) {
|
self.fullOperation(self.soundOn ? HDLEZVideoFullSceneOperationOfSound : HDLEZVideoFullSceneOperationOfSoundOff);
|
}
|
}
|
|
- (void)qualityAction {
|
// self.qualityButton.selected = !self.qualityButton.selected;
|
// self.qualityBox.hidden = !self.qualityButton.selected;
|
// self.hangUpButton.enabled = !self.qualityButton.selected;
|
// self.hangUpButton.alpha = self.qualityButton.selected ? 0.5 : 1;
|
[self qualityStatusChanged:self.qualityButton.selected];
|
}
|
|
- (void)qualityStatusChanged:(BOOL)isSelected {
|
self.qualityButton.selected = !isSelected;
|
self.qualityBox.hidden = isSelected;
|
self.hangUpButton.enabled = isSelected;
|
self.hangUpButton.alpha = !isSelected ? 0.5 : 1;
|
}
|
|
- (void)fullSceneAction {
|
[self qualityStatusChanged:YES];
|
if (self.fullOperation) {
|
self.fullOperation(HDLEZVideoFullSceneOperationOfExitFull);
|
}
|
}
|
|
#pragma mark - Getter
|
- (HDLEZOPButton *)hangUpButton {
|
if (!_hangUpButton) {
|
_hangUpButton = [HDLEZOPButton buttonWithType:UIButtonTypeCustom];
|
_hangUpButton.imagePosition = HDLEZOPButtonImagePositionTop;
|
_hangUpButton.spacingBetweenImageAndTitle = 12.;
|
[_hangUpButton setTitle:NSLocalizedString(@"device_callout_hang_up", @"挂断") forState:UIControlStateNormal];
|
[_hangUpButton setTitleColor:HDLEZ_COLOR_TEXT_WHITE forState:UIControlStateNormal];
|
_hangUpButton.titleLabel.font = HDLEZ_Get_FontRegularWithSize(HDLEZ_FontSize_14);
|
[_hangUpButton setImage:[UIImage imageNamed:@"hdl_ez_cat_eyes_full_hang_up"] forState:UIControlStateNormal];
|
_hangUpButton.hidden = YES;
|
}
|
return _hangUpButton;
|
}
|
|
- (UIView *)baseToolView {
|
if (!_baseToolView) {
|
_baseToolView = [[UIView alloc] init];
|
_baseToolView.backgroundColor = HDLEZHEXCOLOR(0xFFFFFF, 0.16);
|
_baseToolView.layer.cornerRadius = 16.;
|
_baseToolView.clipsToBounds = YES;
|
}
|
return _baseToolView;
|
}
|
|
- (HDLEZOPButton *)playButton {
|
if (!_playButton) {
|
_playButton = [HDLEZOPButton buttonWithType:UIButtonTypeCustom];
|
_playButton.imagePosition = HDLEZOPButtonImagePositionTop;
|
_playButton.spacingBetweenImageAndTitle = 8.;
|
[_playButton setTitle:NSLocalizedString(@"device_full_scene_pause", @"暂停") forState:UIControlStateNormal];
|
[_playButton setTitle:NSLocalizedString(@"device_full_scene_play", @"播放") forState:UIControlStateSelected];
|
[_playButton setTitleColor:HDLEZ_COLOR_TEXT_WHITE forState:UIControlStateNormal];
|
_playButton.titleLabel.font = HDLEZ_Get_FontRegularWithSize(HDLEZ_FontSize_14);
|
[_playButton setImage:[UIImage imageNamed:@"hdl_ez_cat_eyes_full_pause"] forState:UIControlStateNormal];
|
[_playButton setImage:[UIImage imageNamed:@"hdl_ez_cat_eyes_full_play"] forState:UIControlStateSelected];
|
_playButton.selected = NO;
|
}
|
return _playButton;
|
}
|
|
- (HDLEZOPButton *)volumeButton {
|
if (!_volumeButton) {
|
_volumeButton = [HDLEZOPButton buttonWithType:UIButtonTypeCustom];
|
_volumeButton.imagePosition = HDLEZOPButtonImagePositionTop;
|
_volumeButton.spacingBetweenImageAndTitle = 8.;
|
[_volumeButton setTitle:NSLocalizedString(@"device_full_scene_sound", @"音量") forState:UIControlStateNormal];
|
[_volumeButton setTitle:NSLocalizedString(@"device_full_scene_sound_off", @"静音") forState:UIControlStateSelected];
|
[_volumeButton setTitleColor:HDLEZ_COLOR_TEXT_WHITE forState:UIControlStateNormal];
|
_volumeButton.titleLabel.font = HDLEZ_Get_FontRegularWithSize(HDLEZ_FontSize_14);
|
[_volumeButton setImage:[UIImage imageNamed:@"hdl_ez_cat_eyes_full_volume"] forState:UIControlStateNormal];
|
[_volumeButton setImage:[UIImage imageNamed:@"hdl_ez_cat_eyes_full_sound_off"] forState:UIControlStateSelected];
|
_volumeButton.selected = NO;
|
}
|
return _volumeButton;
|
}
|
|
- (HDLEZOPButton *)qualityButton {
|
if (!_qualityButton) {
|
_qualityButton = [HDLEZOPButton buttonWithType:UIButtonTypeCustom];
|
_qualityButton.imagePosition = HDLEZOPButtonImagePositionTop;
|
_qualityButton.spacingBetweenImageAndTitle = 8.;
|
[_qualityButton setTitle:NSLocalizedString(@"device_full_scene_quality", @"清晰度") forState:UIControlStateNormal];
|
[_qualityButton setTitleColor:HDLEZ_COLOR_TEXT_WHITE forState:UIControlStateNormal];
|
_qualityButton.titleLabel.font = HDLEZ_Get_FontRegularWithSize(HDLEZ_FontSize_14);
|
[_qualityButton setImage:[UIImage imageNamed:@"hdl_ez_cat_eyes_full_smooth"] forState:UIControlStateNormal];
|
_qualityButton.selected = NO;
|
}
|
return _qualityButton;
|
}
|
- (HDLEZOPButton *)fullSceneButton {
|
if (!_fullSceneButton) {
|
_fullSceneButton = [HDLEZOPButton buttonWithType:UIButtonTypeCustom];
|
_fullSceneButton.imagePosition = HDLEZOPButtonImagePositionTop;
|
_fullSceneButton.spacingBetweenImageAndTitle = 8.;
|
[_fullSceneButton setTitle:NSLocalizedString(@"device_full_scene_exit_full", @"退出全屏") forState:UIControlStateNormal];
|
[_fullSceneButton setTitleColor:HDLEZ_COLOR_TEXT_WHITE forState:UIControlStateNormal];
|
_fullSceneButton.titleLabel.font = HDLEZ_Get_FontRegularWithSize(HDLEZ_FontSize_14);
|
[_fullSceneButton setImage:[UIImage imageNamed:@"hdl_ez_cat_eyes_full_exit"] forState:UIControlStateNormal];
|
}
|
return _fullSceneButton;
|
}
|
|
- (HDLEZVideoQualityBoxView *)qualityBox {
|
if (!_qualityBox) {
|
_qualityBox = [[HDLEZVideoQualityBoxView alloc] init];
|
_qualityBox.hidden = YES;
|
}
|
return _qualityBox;
|
}
|
|
@end
|