Files
peko-ios/YuMi/Tools/MedalMediaDisplayManager.h

101 lines
2.1 KiB
Objective-C

//
// MedalMediaDisplayManager.h
// YuMi
//
// Created by AI on 2025/1/20.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@class VAPView, NetImageView, XPRoomGiftAnimationParser;
NS_ASSUME_NONNULL_BEGIN
/**
* 媒体显示代理协议
* 需要使用媒体显示功能的类实现此协议
*/
@protocol MedalMediaDisplayDelegate <NSObject>
@required
/// 从数据模型中获取MP4 URL
- (NSString * _Nullable)getMP4UrlFromModel:(id _Nullable)model;
/// 从数据模型中获取图片 URL
- (NSString * _Nullable)getPicUrlFromModel:(id _Nullable)model;
/// 获取图片显示视图
- (NetImageView *)getImageView;
/// 获取MP4播放视图
- (VAPView *)getMP4View;
@optional
/// 媒体显示状态更新回调
- (void)onMediaDisplayUpdated:(BOOL)isMP4 success:(BOOL)success;
/// 获取默认占位图
- (UIImage * _Nullable)getDefaultPlaceholderImage;
@end
/**
* 勋章媒体显示管理器
* 统一处理MP4和PNG的显示逻辑
*/
@interface MedalMediaDisplayManager : NSObject
/// 代理对象
@property (nonatomic, weak) id<MedalMediaDisplayDelegate> delegate;
/// 当前显示的数据模型
@property (nonatomic, strong, nullable) id currentModel;
/// 可见性状态
@property (nonatomic, assign) BOOL isVisible;
/// 当前媒体路径
@property (nonatomic, copy, readonly, nullable) NSString *currentImagePath;
@property (nonatomic, copy, readonly, nullable) NSString *currentMP4Path;
/**
* 初始化方法
* @param delegate 实现MedalMediaDisplayDelegate协议的对象
*/
- (instancetype)initWithDelegate:(id<MedalMediaDisplayDelegate>)delegate;
/**
* 更新显示内容
* @param model 数据模型
*/
- (void)updateDisplayWithModel:(id _Nullable)model;
/**
* 可见性管理
*/
- (void)willDisplay;
- (void)didEndDisplaying;
/**
* 播放控制
*/
- (void)stopMP4Playback;
- (void)pauseMP4Playback;
- (void)resumeMP4Playback;
/**
* 资源清理
*/
- (void)cleanupResources;
/**
* 应用生命周期通知处理
*/
- (void)handleAppDidEnterBackground;
- (void)handleAppWillEnterForeground;
- (void)handleMemoryWarning;
@end
NS_ASSUME_NONNULL_END