提交
This commit is contained in:
124
QXLive/HomePage(声播)/View/房间/QXMiniRoomView.m
Normal file
124
QXLive/HomePage(声播)/View/房间/QXMiniRoomView.m
Normal file
@@ -0,0 +1,124 @@
|
||||
//
|
||||
// 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
|
||||
Reference in New Issue
Block a user