Files
featherVoice/QXLive/HomePage(声播)/View/房间/QXMiniRoomView.m

125 lines
5.3 KiB
Mathematica
Raw Normal View History

2025-08-08 10:49:36 +08:00
//
// QXMiniRoomView.m
// QXLive
//
// Created by on 2025/6/25.
//
#import "QXMiniRoomView.h"
@interface QXMiniRoomView()
@property (nonatomic,strong)UIImageView *bgImageView;
@property (nonatomic,strong)UIImageView *roomCoverImageView;
@property (nonatomic,strong)UIImageView *bgRoomCoverImageView;
@property (nonatomic,strong)UIButton *closeBtn;
@property (nonatomic,strong)UIVisualEffectView *blurView;
@end
@implementation QXMiniRoomView
- (instancetype)init
{
self = [super init];
if (self) {
self.frame = CGRectMake(SCREEN_WIDTH-ScaleWidth(80), SCREEN_HEIGHT-200, ScaleWidth(80), ScaleWidth(44));
[self initSubviews];
}
return self;
}
-(void)initSubviews{
self.bgRoomCoverImageView = [[UIImageView alloc] initWithFrame:self.bounds];
self.bgRoomCoverImageView.contentMode = UIViewContentModeScaleAspectFill;
self.bgRoomCoverImageView.clipsToBounds = YES;
[self addSubview:self.bgRoomCoverImageView];
UIBlurEffect *effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
UIVisualEffectView *blurView = [[UIVisualEffectView alloc] initWithEffect:effect];
UIVibrancyEffect *vibrancyEffect = [UIVibrancyEffect effectForBlurEffect:effect];
UIVisualEffectView *vibrancyView = [[UIVisualEffectView alloc] initWithEffect:vibrancyEffect];
[blurView.contentView addSubview:vibrancyView];
self.blurView = blurView;
[self.bgRoomCoverImageView addSubview:blurView];
blurView.frame = self.bgRoomCoverImageView.bounds;
vibrancyView.frame = self.bgRoomCoverImageView.bounds;
self.bgImageView = [[UIImageView alloc] initWithFrame:self.bounds];
self.bgImageView.image = [UIImage imageNamed:@"mini_room_bg"];
[self addSubview:self.bgImageView];
[self addRoundedCornersWithRadius:ScaleWidth(44) byRoundingCorners:(UIRectCornerTopLeft|UIRectCornerBottomLeft)];
UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
[self addGestureRecognizer:panRecognizer];
self.roomCoverImageView = [[UIImageView alloc] initWithFrame:CGRectMake(9, (ScaleWidth(44)-ScaleWidth(26))/2, ScaleWidth(26), ScaleWidth(26))];
self.roomCoverImageView.contentMode = UIViewContentModeScaleAspectFill;
self.roomCoverImageView.clipsToBounds = YES;
[self.roomCoverImageView addRoundedCornersWithRadius:ScaleWidth(13)];
// [blurView mas_makeConstraints:^(MASConstraintMaker *make) {
// make.left.right.top.bottom.equalTo(self.photoImageView);
// }];
// [vibrancyView mas_makeConstraints:^(MASConstraintMaker *make) {
// make.left.right.top.bottom.equalTo(blurView);
// }];
CABasicAnimation *rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
//
rotationAnimation.toValue = [NSNumber numberWithFloat: M_PI];
//
rotationAnimation.duration = 4;
rotationAnimation.cumulative = YES;
rotationAnimation.removedOnCompletion = NO;
//MAXFLOAT
rotationAnimation.repeatCount = MAXFLOAT;
[self.roomCoverImageView.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];
MJWeakSelf
[self.roomCoverImageView addTapBlock:^(id _Nonnull obj) {
[weakSelf.layer removeAnimationForKey:@"rotationAnimation"];
[weakSelf removeFromSuperview];
[[QXGlobal shareGlobal] joinRoomWithRoomId:weakSelf.roomId isRejoin:YES navagationController:(UINavigationController*)KEYWINDOW.rootViewController];
}];
[self addSubview:self.roomCoverImageView];
self.closeBtn = [[UIButton alloc] initWithFrame:CGRectMake(self.width-ScaleWidth(30)-12, 0, ScaleWidth(30), ScaleWidth(44))];
UIImage *close = [[UIImage imageNamed:@"room_close"] imageByTintColor:RGB16(0x333333)];
[self.closeBtn setImage:close forState:(UIControlStateNormal)];
[self.closeBtn addTarget:self action:@selector(closeAction) forControlEvents:(UIControlEventTouchUpInside)];
[self addSubview:self.closeBtn];
}
-(void)show{
[KEYWINDOW.rootViewController.view addSubview:self];
}
-(void)setRoomCoverImage:(NSString *)roomCoverImage{
_roomCoverImage = roomCoverImage;
[self.roomCoverImageView sd_setImageWithURL:[NSURL URLWithString:roomCoverImage]];
[self.bgRoomCoverImageView sd_setImageWithURL:[NSURL URLWithString:roomCoverImage]];
}
-(void)closeAction{
[self.layer removeAnimationForKey:@"rotationAnimation"];
[self removeFromSuperview];
[[QXGlobal shareGlobal] quitRoomWithRoomId:self.roomId];
}
-(void)handlePan:(UIPanGestureRecognizer*)recognizer{
if (recognizer.state == UIGestureRecognizerStateEnded) {
NSLog(@"拖动结束");
}
CGPoint translation = [recognizer translationInView:self.viewController.view];
CGPoint panCenter = CGPointMake(recognizer.view.center.x + translation.x,
recognizer.view.center.y + translation.y);
if (panCenter.y < kSafeAreaTop || panCenter.y> SCREEN_HEIGHT-kSafeAreaBottom) {
return;
}
recognizer.view.center = CGPointMake(SCREEN_WIDTH-ScaleWidth(80)/2,
recognizer.view.center.y + translation.y);
[recognizer setTranslation:CGPointZero inView:self.viewController.view];
}
@end