123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- //
- // HXPreviewContentView.m
- // HXPhotoPickerExample
- //
- // Created by Silence on 2019/11/19.
- // Copyright © 2019 Silence. All rights reserved.
- //
- #import "HXPreviewContentView.h"
- #import "HXPhotoModel.h"
- #import "HXPhotoDefine.h"
- @interface HXPreviewContentView ()
- @property (assign, nonatomic) HXPreviewContentViewType type;
- @end
- @implementation HXPreviewContentView
- - (instancetype)initWithType:(HXPreviewContentViewType)type {
- self = [super init];
- if (self) {
- self.type = type;
- [self addSubview:self.imageView];
- if (type == HXPreviewContentViewTypeLivePhoto) {
- [self addSubview:self.livePhotoView];
- }else if (type == HXPreviewContentViewTypeVideo) {
- [self addSubview:self.videoView];
- }
- }
- return self;
- }
- - (void)setAllowPreviewDirectLoadOriginalImage:(BOOL)allowPreviewDirectLoadOriginalImage {
- _allowPreviewDirectLoadOriginalImage = allowPreviewDirectLoadOriginalImage;
- self.imageView.allowPreviewDirectLoadOriginalImage = allowPreviewDirectLoadOriginalImage;
- }
- - (void)setModel:(HXPhotoModel *)model {
- _model = model;
- if (self.type == HXPreviewContentViewTypeLivePhoto) {
- self.livePhotoView.hidden = YES;
- }else if (self.type == HXPreviewContentViewTypeVideo) {
- self.imageView.hidden = NO;
- [self.videoView cancelPlayer];
- }
- self.imageView.model = model;
- }
- - (AVAsset *)avAsset {
- return self.videoView.avAsset;
- }
- - (UIImage *)image {
- return self.imageView.image;
- }
- - (UIImage *)gifImage {
- return self.imageView.gifImage;
- }
- - (void)cancelRequest {
- if (!self.stopCancel) {
- self.imageView.hidden = NO;
- }
- if (self.type == HXPreviewContentViewTypeImage) {
- self.imageView.stopCancel = self.stopCancel;
- [self.imageView cancelImage];
- }else if (self.type == HXPreviewContentViewTypeLivePhoto) {
- self.livePhotoView.stopCancel = self.stopCancel;
- [self.livePhotoView cancelLivePhoto];
- if (!self.stopCancel) {
- self.livePhotoView.hidden = YES;
- }
- }else if (self.type == HXPreviewContentViewTypeVideo) {
- self.videoView.stopCancel = self.stopCancel;
- [self.videoView cancelPlayer];
- }
- self.stopCancel = NO;
- }
- - (void)requestHD {
- HXWeakSelf
- if (self.type == HXPreviewContentViewTypeImage) {
- [self.imageView requestHDImage];
- self.imageView.downloadICloudAssetComplete = self.downloadICloudAssetComplete;
- }else if (self.type == HXPreviewContentViewTypeLivePhoto) {
- if (self.model.photoEdit) {
- return;
- }
- [self.imageView requestHDImage];
- self.livePhotoView.model = self.model;
- if (self.model.type == HXPhotoModelMediaTypeCameraPhoto &&
- (self.model.cameraPhotoType == HXPhotoModelMediaTypeCameraPhotoTypeLocalLivePhoto ||
- self.model.cameraPhotoType == HXPhotoModelMediaTypeCameraPhotoTypeNetWorkLivePhoto)) {
- self.livePhotoView.hidden = NO;
- }
- self.livePhotoView.downloadICloudAssetComplete = ^{
- weakSelf.livePhotoView.hidden = NO;
- weakSelf.imageView.hidden = YES;
- if (weakSelf.downloadICloudAssetComplete) {
- weakSelf.downloadICloudAssetComplete();
- }
- };
- }else if (self.type == HXPreviewContentViewTypeVideo) {
- [self.imageView requestHDImage];
- self.videoView.model = self.model;
- self.videoView.downloadICloudAssetComplete = ^{
- if (weakSelf.downloadICloudAssetComplete) {
- weakSelf.downloadICloudAssetComplete();
- }
- };
- self.videoView.shouldPlayVideo = ^{
- weakSelf.imageView.hidden = YES;
- };
- }
- }
- - (void)layoutSubviews {
- [super layoutSubviews];
-
- self.imageView.frame = self.bounds;
- if (self.type == HXPreviewContentViewTypeLivePhoto) {
- self.livePhotoView.frame = self.bounds;
- }else if (self.type == HXPreviewContentViewTypeVideo) {
- self.videoView.frame = self.bounds;
- }
- }
- - (HXPreviewImageView *)imageView {
- if (!_imageView) {
- _imageView = [[HXPreviewImageView alloc] init];
- HXWeakSelf
- _imageView.downloadNetworkImageComplete = ^{
- if (weakSelf.downloadNetworkImageComplete) {
- weakSelf.downloadNetworkImageComplete();
- }
- };
- }
- return _imageView;
- }
- - (HXPreviewLivePhotoView *)livePhotoView {
- if (!_livePhotoView) {
- _livePhotoView = [[HXPreviewLivePhotoView alloc] init];
- }
- return _livePhotoView;
- }
- - (HXPreviewVideoView *)videoView {
- if (!_videoView) {
- _videoView = [[HXPreviewVideoView alloc] init];
- }
- return _videoView;
- }
- @end
|