| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- //
- // MOHeadNormalView.m
- // TIMCommon
- //
- // Created by SuperC on 2025/5/19.
- //
- #import "MOHeadNormalView.h"
- #import "MOCustomSvgaPlayerView.h"
- #import <TIMCommon/TIMDefine.h>
- @interface MOHeadNormalView ()
- @property (nonatomic, strong) UIImageView *bgImgView;
- /** svga 播放 管理类 */
- @property (nonatomic, strong) MOCustomSvgaPlayerView *aPlayer;
- @property (nonatomic, strong) SVGAParser *aParser;
- @end
- @implementation MOHeadNormalView
- - (instancetype)init
- {
- if (self = [super init])
- {
- [self setupUI];
- }
- return self;
- }
- - (instancetype)initWithFrame:(CGRect)frame
- {
- self = [super initWithFrame:frame];
- if (self)
- {
- [self setupUI];
- }
- return self;
- }
- - (void)setupUI{
-
- self.backgroundColor = [UIColor clearColor];
- self.userInteractionEnabled = NO;
-
- [self addSubview:self.bgImgView];
- [self.bgImgView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.centerY.equalTo(self);
- make.width.equalTo(@20.0);
- make.height.equalTo(@20.0);
- make.centerX.equalTo(self);
- }];
-
- [self addSubview:self.aPlayer];
- [self.aPlayer mas_makeConstraints:^(MASConstraintMaker *make) {
- make.centerY.equalTo(self);
- make.width.equalTo(@30.0);
- make.height.equalTo(@30.0);
- make.centerX.equalTo(self);
- }];
- }
- - (void)setHeadImgWidth:(CGFloat)headImgWidth{
- _headImgWidth = headImgWidth;
-
- //bgImgView 3 / 4
- CGFloat width = headImgWidth * 1.7 ;
- [self.bgImgView mas_remakeConstraints:^(MASConstraintMaker *make) {
- make.width.equalTo(@(width));
- make.height.equalTo(@(width));
- make.centerY.equalTo(self);
- make.centerX.equalTo(self);
- }];
-
- //svga 9 / 12
- CGFloat svgaWidth = headImgWidth * 1.7;
- [self.aPlayer mas_remakeConstraints:^(MASConstraintMaker *make) {
- make.width.equalTo(@(svgaWidth));
- make.height.equalTo(@(svgaWidth));
- make.centerY.equalTo(self);
- make.centerX.equalTo(self);
- }];
- }
- - (void)setIsAnimation:(BOOL)isAnimation{
- _isAnimation = isAnimation;
-
- [self updataViewStatus];
- }
- - (void)setEffectType:(double)effectType{
- _effectType = effectType;
-
- [self updataViewStatus];
- }
- - (void)updataViewStatus{
- if(self.isLiving){
- //直播中
- self.aPlayer.hidden = YES;
- self.bgImgView.hidden = YES;
- }
- else{
- //不在直播中, 显示头像框
- if(self.effectType == 2){//svga
- self.aPlayer.hidden = NO;
- self.bgImgView.hidden = YES;
- }
- else if (self.effectType == 0 || self.effectType == 1){//png 或 webp
- self.aPlayer.hidden = YES;
- self.bgImgView.hidden = NO;
- }
- else{
- self.aPlayer.hidden = YES;
- self.bgImgView.hidden = YES;
- }
- }
- }
- - (void)setImgUrlStr:(NSString *)imgUrlStr{
- _imgUrlStr = imgUrlStr;
-
- @weakify(self);
- if(self.effectType == 2){//svga
- [self.aPlayer clear];
- [self.aParser parseWithURL:[NSURL URLWithString:imgUrlStr] completionBlock:^(SVGAVideoEntity * _Nullable videoItem) {
- @strongify(self);
- if (videoItem) {
- self.aPlayer.videoItem = videoItem;
- [self.aPlayer startAnimation];
- }
-
- } failureBlock:^(NSError * _Nullable error) {
- NSLog(@"播放失败~~~~~~~~");
- }];
- }
- else if (self.effectType == 0 || self.effectType == 1){//png 或 webp
- [self.bgImgView sd_setImageWithURL:[NSURL URLWithString:imgUrlStr]];
- }
- }
- #pragma mark - Lazy
- - (UIImageView *)bgImgView{
- if(!_bgImgView){
- _bgImgView = [[UIImageView alloc] init];
- _bgImgView.contentMode = UIViewContentModeScaleAspectFit;
- _bgImgView.hidden = YES;
- }
- return _bgImgView;
- }
- - (MOCustomSvgaPlayerView *)aPlayer{
- if (_aPlayer == nil) {
- _aPlayer = [[MOCustomSvgaPlayerView alloc] init];
- _aPlayer.contentMode = UIViewContentModeScaleAspectFill;
- _aPlayer.hidden = YES;
- _aPlayer.loops = 0;
- _aPlayer.clearsAfterStop = NO;
- }
- return _aPlayer;
- }
- - (SVGAParser *)aParser{
-
- if (_aParser == nil) {
- _aParser = [[SVGAParser alloc] init];
- }
-
- return _aParser;
- }
- @end
|