Files
yinmeng-ios/xplan-ios/Main/Room/View/BaseUIContainerView/XPRoomBackContainerView.m
2022-02-27 20:16:31 +08:00

145 lines
4.9 KiB
Objective-C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// XPRoomBaseUIView.m
// xplan-ios
//
// Created by 冯硕 on 2021/10/11.
// 最下面的View
#import "XPRoomBackContainerView.h"
///Third
#import <Masonry/Masonry.h>
#import <ReactiveObjC/ReactiveObjC.h>
///Model
#import "RoomInfoModel.h"
//SVGA动画播放
#import "SVGA.h"
#import "SVGAParserManager.h"
///Tool
#import "XPMacro.h"
#import "XCHUDTool.h"
#import "NetImageView.h"
@interface XPRoomBackContainerView ()
///背景图片
@property (nonatomic,strong) NetImageView *backImageView;
@property (nonatomic, strong) SVGAImageView *svgDisplayView;
@property (nonatomic, strong) SVGAParserManager *parserManager;
///host 代理
@property (nonatomic,weak) id<RoomHostDelegate>delegate;
@end
@implementation XPRoomBackContainerView
- (instancetype)initWithdelegate:(id<RoomHostDelegate>)delegate {
self = [super init];
if (self) {
self.delegate = delegate;
[self initSubViews];
[self initSubViewConstraints];
}
return self;
}
#pragma mark - Private Method
- (void)initSubViews {
[self addSubview:self.svgDisplayView];
[self addSubview:self.backImageView];
}
- (void)initSubViewConstraints {
[self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.mas_equalTo(self);
}];
[self.svgDisplayView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.mas_equalTo(self);
}];
}
- (void)onRoomUpdate {
[self updateRoomBg];
}
- (void)updateRoomBg {
RoomInfoModel *roomInfo = [self.delegate getRoomInfo];
// UserInfoModel *userInfo = [self.delegate getUserInfo];
if (roomInfo.backPic.length > 0) {
///MARK:更改图片拉伸策略 BY lvjunhang, 2018-12-03,原值为UIViewContentModeScaleAspectFit
self.backImageView.contentMode = UIViewContentModeScaleAspectFill;
if ([roomInfo.backPic containsString:@".svga"]) { //房间背景是SVGA动态背景
self.backImageView.hidden = YES;
self.svgDisplayView.hidden = NO;
@weakify(self);
//@"https://img.erbanyy.com/Noble_OpenEffect_5.svga"
[self.parserManager loadSvgaWithURL:[NSURL URLWithString:roomInfo.backPic] completionBlock:^(SVGAVideoEntity * _Nullable videoItem) {
@strongify(self);
self.svgDisplayView.loops = INT_MAX;
self.svgDisplayView.clearsAfterStop = NO;
self.svgDisplayView.videoItem = videoItem;
[self.svgDisplayView startAnimation];
} failureBlock:^(NSError * _Nullable error) {
[XCHUDTool showErrorWithMessage:@"贵族专属背景图加载失败"];
}];
} else { //房间背景是静态背景
[self.svgDisplayView stopAnimation];
self.svgDisplayView.hidden = YES;
self.backImageView.hidden = NO;
self.backImageView.imageUrl = roomInfo.backPic;
}
}else { //没有设置背景,显示默认背景加高斯模糊
if (roomInfo.type == RoomType_Anchor) {
self.backImageView.hidden = YES;
self.svgDisplayView.hidden = NO;
@weakify(self);
NSString *bgString = [[NSBundle mainBundle] pathForResource:@"anchor_room_bg" ofType:@"svga"];
NSURL *bgUrl = [NSURL fileURLWithPath:bgString];
[self.parserManager loadSvgaWithURL:bgUrl completionBlock:^(SVGAVideoEntity * _Nullable videoItem) {
@strongify(self);
self.svgDisplayView.loops = INT_MAX;
self.svgDisplayView.clearsAfterStop = NO;
self.svgDisplayView.videoItem = videoItem;
[self.svgDisplayView startAnimation];
} failureBlock:^(NSError * _Nullable error) {
[XCHUDTool showErrorWithMessage:@"个播背景图加载失败"];
}];
return;
}
self.svgDisplayView.hidden = YES;
self.backImageView.hidden = NO;
self.backImageView.contentMode = UIViewContentModeScaleAspectFill;
}
}
#pragma mark - Getters And Setters
- (NetImageView *)backImageView {
if (!_backImageView) {
_backImageView = [[NetImageView alloc] init];
_backImageView.userInteractionEnabled = YES;
_backImageView.image = [UIImage imageNamed:@"room_background"];
_backImageView.layer.masksToBounds = YES;
_backImageView.contentMode = UIViewContentModeScaleAspectFill;
}
return _backImageView;
}
- (SVGAImageView *)svgDisplayView {
if (_svgDisplayView == nil) {
_svgDisplayView = [[SVGAImageView alloc]init];
_svgDisplayView.contentMode = UIViewContentModeScaleToFill;
_svgDisplayView.userInteractionEnabled = NO;
_svgDisplayView.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight);
_svgDisplayView.hidden = YES;
_svgDisplayView.backgroundColor = [UIColor clearColor];
}
return _svgDisplayView;
}
- (SVGAParserManager *)parserManager {
if (!_parserManager) {
_parserManager = [[SVGAParserManager alloc]init];
}
return _parserManager;
}
@end