You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

131 lines
5.5 KiB

2 years ago
//
// XHDisplayMediaViewController.m
// MessageDisplayExample
//
// Created by HUAJIE-1 on 14-5-6.
// Copyright (c) 2014年 曾宪华 开发团队(http://iyilunba.com ) 本人QQ:543413507 本人QQ群142557668. All rights reserved.
//
#import "XHDisplayMediaViewController.h"
#import <MediaPlayer/MediaPlayer.h>
#import "UIView+XHRemoteImage.h"
#import "XHConfigurationHelper.h"
#import "CJFileUtility.h"
@interface XHDisplayMediaViewController ()
@property (nonatomic, strong) MPMoviePlayerController *moviePlayerController;
@property (nonatomic, weak) UIImageView *photoImageView;
@end
@implementation XHDisplayMediaViewController
- (MPMoviePlayerController *)moviePlayerController {
if (!_moviePlayerController) {
_moviePlayerController = [[MPMoviePlayerController alloc] init];
_moviePlayerController.repeatMode = MPMovieRepeatModeOne;
_moviePlayerController.scalingMode = MPMovieScalingModeAspectFill;
_moviePlayerController.view.frame = self.view.frame;
[self.view addSubview:_moviePlayerController.view];
}
return _moviePlayerController;
}
- (UIImageView *)photoImageView {
if (!_photoImageView) {
UIImageView *photoImageView = [[UIImageView alloc] initWithFrame:(CGRect){0,0,SWIDTH,SHEIGHT - 64}];
photoImageView.contentMode = UIViewContentModeScaleAspectFit;
// photoImageView.clipsToBounds = YES;
[self.view addSubview:photoImageView];
_photoImageView = photoImageView;
}
return _photoImageView;
}
- (void)setMessage:(XHMessage *)message {
_message = message;
if ([message messageMediaType] == XHBubbleMessageMediaTypeVideo) {
self.title = NSLocalizedStringFromTable(@"Video", @"MessageDisplayKitString", @"详细视频");
self.moviePlayerController.contentURL = [NSURL fileURLWithPath:[message videoPath]];
[self.moviePlayerController play];
} else if ([message messageMediaType] ==XHBubbleMessageMediaTypePhoto) {
self.title = NSLocalizedStringFromTable(@"Photo", @"MessageDisplayKitString", @"详细照片");
self.photoImageView.image = message.photo;
if (message.content) {
if (!message.photo) {
NSString *path = [CJFileUtility documentsPathSubDir:@"msg_image" andFile:[_message id]];
UIImage *image = [UIImage imageWithContentsOfFile:path];
if (!image) {
NSString *placeholderImageName = [[XHConfigurationHelper appearance].messageInputViewStyle objectForKey:kXHMessageTablePlaceholderImageNameKey];
if (!placeholderImageName) {
placeholderImageName = @"placeholderImage";
}
[self.photoImageView setImageWithURL:[NSURL URLWithString:message.content]
placeholer:[UIImage imageNamed:placeholderImageName]
showActivityIndicatorView:NO
completionBlock:^(UIImage *image, NSURL *url, NSError *error) {
NSString *path = [CJFileUtility documentsPathSubDir:@"msg_image"
andFile:_message.id];
[CJFileUtility writeToFile:path data:UIImageJPEGRepresentation(image ,1)];
}];
}else{
[self.photoImageView setImageWithURL:[NSURL URLWithString:message.content]
placeholer:image
showActivityIndicatorView:NO
completionBlock:^(UIImage *image, NSURL *url, NSError *error) {
NSString *path = [CJFileUtility documentsPathSubDir:@"msg_image"
andFile:_message.id];
[CJFileUtility writeToFile:path data:UIImageJPEGRepresentation(image ,1)];
}];
}
}else{
[self.photoImageView setImageWithURL:[NSURL URLWithString:message.content]
placeholer:message.photo
showActivityIndicatorView:NO
completionBlock:^(UIImage *image, NSURL *url, NSError *error) {
NSString *path = [CJFileUtility documentsPathSubDir:@"msg_image"
andFile:_message.id];
[CJFileUtility writeToFile:path data:UIImageJPEGRepresentation(image ,1)];
}];
}
}
}
}
#pragma mark - Life cycle
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
if ([self.message messageMediaType] == XHBubbleMessageMediaTypeVideo) {
[self.moviePlayerController stop];
}
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
self.view.backgroundColor = [UIColor blackColor];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)dealloc {
[_moviePlayerController stop];
_moviePlayerController = nil;
_photoImageView = nil;
}
@end