Skip to content

Commit

Permalink
Fix #181, #184, #185
Browse files Browse the repository at this point in the history
  • Loading branch information
longitachi committed Jan 17, 2018
1 parent 90fd742 commit e9918f0
Show file tree
Hide file tree
Showing 10 changed files with 57 additions and 25 deletions.
7 changes: 5 additions & 2 deletions PhotoBrowser/ZLNoAuthorityViewController.m
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

#import "ZLNoAuthorityViewController.h"
#import "ZLDefine.h"
#import "ZLPhotoBrowser.h"

@interface ZLNoAuthorityViewController ()
{
Expand Down Expand Up @@ -36,12 +37,14 @@ - (void)setupUI
_imageView.frame = CGRectMake((kViewWidth-kViewWidth/3)/2, 100, kViewWidth/3, kViewWidth/3);
[self.view addSubview:_imageView];

ZLImageNavigationController *nav = (ZLImageNavigationController *)self.navigationController;

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
CGFloat width = GetMatchValue(GetLocalLanguageTextValue(ZLPhotoBrowserCancelText), 16, YES, 44);
btn.frame = CGRectMake(0, 0, width, 44);
btn.frame = CGRectMake(0, 0, width+20, 44);
btn.titleLabel.font = [UIFont systemFontOfSize:16];
[btn setTitle:GetLocalLanguageTextValue(ZLPhotoBrowserCancelText) forState:UIControlStateNormal];
[btn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[btn setTitleColor:nav.configuration.navTitleColor forState:UIControlStateNormal];
[btn addTarget:self action:@selector(navRightBtn_Click) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:btn];

Expand Down
27 changes: 17 additions & 10 deletions PhotoBrowser/ZLPhotoActionSheet.m
Original file line number Diff line number Diff line change
Expand Up @@ -230,8 +230,15 @@ - (void)showPreview:(BOOL)preview animate:(BOOL)animate
- (void)previewSelectedPhotos:(NSArray<UIImage *> *)photos assets:(NSArray<PHAsset *> *)assets index:(NSInteger)index isOriginal:(BOOL)isOriginal
{
self.isSelectOriginalPhoto = isOriginal;
self.arrSelectedAssets = [NSMutableArray arrayWithArray:assets];
ZLShowBigImgViewController *svc = [self pushBigImageToPreview:photos index:index];
//将assets转换为对应类型的model
NSMutableArray<ZLPhotoModel *> *models = [NSMutableArray arrayWithCapacity:assets.count];
for (PHAsset *asset in assets) {
ZLPhotoModel *model = [ZLPhotoModel modelWithAsset:asset type:[ZLPhotoManager transformAssetType:asset] duration:nil];
model.selected = YES;
[models addObject:model];
}
ZLShowBigImgViewController *svc = [self pushBigImageToPreview:photos models:models index:index];

zl_weakify(self);
__weak typeof(svc.navigationController) weakNav = svc.navigationController;
svc.previewSelectedImageBlock = ^(NSArray<UIImage *> *arrP, NSArray<PHAsset *> *arrA) {
Expand All @@ -254,7 +261,8 @@ - (void)previewSelectedPhotos:(NSArray<UIImage *> *)photos assets:(NSArray<PHAss
- (void)previewPhotos:(NSArray *)photos index:(NSInteger)index hideToolBar:(BOOL)hideToolBar complete:(nonnull void (^)(NSArray * _Nonnull))complete
{
NSArray *imageExtensions = @[@"jpg", @"jpeg", @"png", @"gif"];
[self.arrSelectedModels removeAllObjects];
//转换为对应类型的model对象
NSMutableArray<ZLPhotoModel *> *models = [NSMutableArray arrayWithCapacity:photos.count];
for (id obj in photos) {
ZLPhotoModel *model = [[ZLPhotoModel alloc] init];
if ([obj isKindOfClass:UIImage.class]) {
Expand All @@ -272,9 +280,9 @@ - (void)previewPhotos:(NSArray *)photos index:(NSInteger)index hideToolBar:(BOOL
model.type = [ZLPhotoManager transformAssetType:obj];
}
model.selected = YES;
[self.arrSelectedModels addObject:model];
[models addObject:model];
}
ZLShowBigImgViewController *svc = [self pushBigImageToPreview:photos index:index];
ZLShowBigImgViewController *svc = [self pushBigImageToPreview:photos models:models index:index];
svc.hideToolBar = hideToolBar;

zl_weakify(self);
Expand All @@ -297,7 +305,7 @@ - (void)loadPhotoFromAlbum
[self.arrDataSources removeAllObjects];

[self.arrDataSources addObjectsFromArray:[ZLPhotoManager getAllAssetInPhotoAlbumWithAscending:NO limitCount:self.configuration.maxPreviewCount allowSelectVideo:self.configuration.allowSelectVideo allowSelectImage:self.configuration.allowSelectImage allowSelectGif:self.configuration.allowSelectGif allowSelectLivePhoto:self.configuration.allowSelectLivePhoto]];
[ZLPhotoManager markSelcectModelInArr:self.arrDataSources selArr:self.arrSelectedModels];
[ZLPhotoManager markSelectModelInArr:self.arrDataSources selArr:self.arrSelectedModels];
[self.collectionView reloadData];
}

Expand Down Expand Up @@ -815,7 +823,7 @@ - (void)pushBigImageViewControllerWithModels:(NSArray<ZLPhotoModel *> *)models i
zl_weakify(self);
[svc setBtnBackBlock:^(NSArray<ZLPhotoModel *> *selectedModels, BOOL isOriginal) {
zl_strongify(weakSelf);
[ZLPhotoManager markSelcectModelInArr:strongSelf.arrDataSources selArr:selectedModels];
[ZLPhotoManager markSelectModelInArr:strongSelf.arrDataSources selArr:selectedModels];
strongSelf.isSelectOriginalPhoto = isOriginal;
[strongSelf.arrSelectedModels removeAllObjects];
[strongSelf.arrSelectedModels addObjectsFromArray:selectedModels];
Expand All @@ -826,14 +834,13 @@ - (void)pushBigImageViewControllerWithModels:(NSArray<ZLPhotoModel *> *)models i
[self.sender showDetailViewController:nav sender:nil];
}

- (ZLShowBigImgViewController *)pushBigImageToPreview:(NSArray *)photos index:(NSInteger)index
- (ZLShowBigImgViewController *)pushBigImageToPreview:(NSArray *)photos models:(NSArray<ZLPhotoModel *> *)models index:(NSInteger)index
{
ZLShowBigImgViewController *svc = [[ZLShowBigImgViewController alloc] init];
ZLImageNavigationController *nav = [self getImageNavWithRootVC:svc];
nav.configuration.showSelectBtn = YES;
svc.selectIndex = index;
svc.arrSelPhotos = [NSMutableArray arrayWithArray:photos];
svc.models = self.arrSelectedModels;
svc.models = models;

self.preview = NO;
[self.sender.view addSubview:self];
Expand Down
2 changes: 1 addition & 1 deletion PhotoBrowser/ZLPhotoManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@
/**
* @brief 标记源数组中已被选择的model
*/
+ (void)markSelcectModelInArr:(NSArray<ZLPhotoModel *> *)dataArr selArr:(NSArray<ZLPhotoModel *> *)selArr;
+ (void)markSelectModelInArr:(NSArray<ZLPhotoModel *> *)dataArr selArr:(NSArray<ZLPhotoModel *> *)selArr;

/**
* @brief 将image data转换为gif图片,sdwebimage
Expand Down
7 changes: 5 additions & 2 deletions PhotoBrowser/ZLPhotoManager.m
Original file line number Diff line number Diff line change
Expand Up @@ -610,8 +610,11 @@ + (NSString *)transformDataLength:(NSInteger)dataLength {
return bytes;
}

+ (void)markSelcectModelInArr:(NSArray<ZLPhotoModel *> *)dataArr selArr:(NSArray<ZLPhotoModel *> *)selArr
+ (void)markSelectModelInArr:(NSArray<ZLPhotoModel *> *)dataArr selArr:(NSArray<ZLPhotoModel *> *)selArr
{
if (!selArr.count) {
return;
}
NSMutableArray *selIdentifiers = [NSMutableArray array];
for (ZLPhotoModel *m in selArr) {
[selIdentifiers addObject:m.asset.localIdentifier];
Expand Down Expand Up @@ -786,7 +789,7 @@ + (void)exportEditVideoForAsset:(AVAsset *)asset range:(CMTimeRange)range type:(
{
[self export:asset range:range type:type presetName:AVAssetExportPresetPassthrough renderSize:CGSizeZero watermarkImage:nil watermarkLocation:ZLWatermarkLocationCenter imageSize:CGSizeZero effectImage:nil birthRate:0 velocity:0 complete:^(NSString *exportFilePath, NSError *error) {
if (!error) {
[self saveVideoToAblum:[NSURL URLWithString:exportFilePath] completion:^(BOOL isSuc, PHAsset *asset) {
[self saveVideoToAblum:[NSURL fileURLWithPath:exportFilePath] completion:^(BOOL isSuc, PHAsset *asset) {
dispatch_async(dispatch_get_main_queue(), ^{
if (complete) complete(isSuc, asset);
});
Expand Down
7 changes: 6 additions & 1 deletion PhotoBrowser/ZLShowBigImgViewController.m
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ - (void)initNavView
_indexLabel.text = [NSString stringWithFormat:@"%ld/%ld", _currentPage, self.models.count];
[_navView addSubview:_indexLabel];

if (!configuration.showSelectBtn || self.hideToolBar) {
if (self.hideToolBar || (!configuration.showSelectBtn && !self.arrSelPhotos.count)) {
return;
}

Expand Down Expand Up @@ -593,8 +593,13 @@ - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cell
zl_strongify(weakSelf);
[strongSelf handlerSingleTap];
};
__weak typeof(cell) weakCell = cell;
cell.longPressCallBack = ^{
zl_strongify(weakSelf);
__strong typeof(weakCell) strongCell = weakCell;
if (!strongCell.previewView.image) {
return;
}
[strongSelf showDownloadAlert];
};

Expand Down
6 changes: 3 additions & 3 deletions PhotoBrowser/ZLThumbnailViewController.m
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ - (void)dealloc
ZLImageNavigationController *weakNav = (ZLImageNavigationController *)strongSelf.navigationController;

strongSelf.albumListModel = album;
[ZLPhotoManager markSelcectModelInArr:strongSelf.albumListModel.models selArr:weakNav.arrSelectedModels];
[ZLPhotoManager markSelectModelInArr:strongSelf.albumListModel.models selArr:weakNav.arrSelectedModels];
strongSelf.arrDataSources = [NSMutableArray arrayWithArray:strongSelf.albumListModel.models];
[hud hide];
dispatch_async(dispatch_get_main_queue(), ^{
Expand All @@ -100,7 +100,7 @@ - (void)dealloc
if (configuration.allowTakePhotoInLibrary && (configuration.allowSelectImage || configuration.allowRecordVideo) && self.albumListModel.isCameraRoll) {
self.allowTakePhoto = YES;
}
[ZLPhotoManager markSelcectModelInArr:self.albumListModel.models selArr:nav.arrSelectedModels];
[ZLPhotoManager markSelectModelInArr:self.albumListModel.models selArr:nav.arrSelectedModels];
_arrDataSources = [NSMutableArray arrayWithArray:self.albumListModel.models];
[hud hide];
}
Expand Down Expand Up @@ -432,7 +432,7 @@ - (UIViewController *)getBigImageVCWithData:(NSArray<ZLPhotoModel *> *)data inde
zl_weakify(self);
[vc setBtnBackBlock:^(NSArray<ZLPhotoModel *> *selectedModels, BOOL isOriginal) {
zl_strongify(weakSelf);
[ZLPhotoManager markSelcectModelInArr:strongSelf.arrDataSources selArr:selectedModels];
[ZLPhotoManager markSelectModelInArr:strongSelf.arrDataSources selArr:selectedModels];
[strongSelf.collectionView reloadData];
}];
return vc;
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
### 更新日志
> [更多更新日志](https://github.com/longitachi/ZLPhotoBrowser/blob/master/UPDATELOG.md)
```
● 2.6.4: Fix #181, #184, #185;
● 2.6.3: 新增自定义多语言文本功能; 新增预览网络视频功能;
● 2.6.2: 新增是否保存已编辑图片的参数; 优化编辑图片旋转体验; 新增取消选择回调;
● 2.6.1: 新增导出视频添加粒子特效功能(如下雪特效); 新增编辑图片时旋转图片功能;
Expand All @@ -63,7 +64,6 @@
● 2.5.0: 新增选择后是否自动解析图片参数 shouldAnialysisAsset (针对需要选择大量图片的功能,框架一次解析大量图片时,会导致内存瞬间大幅增高,建议此时置该参数为NO,然后拿到asset后自行逐个解析); 修改图片压缩方式,确保原图尺寸不变
● 2.4.9: 新增预览界面拖拽选择的功能; 支持开发者使用自定义图片资源; 开放导航标题颜色、底部工具栏背景色、底部按钮可交互与不可交互标题颜色的设置api;
● 2.4.6: 新增网络图片长按保存至相册功能;
● 2.4.3: 适配iPhone X,优化初次启动进入相册速度,预览网络图片可设置是否显示底部工具条及导航右侧按钮;
```

### 框架支持
Expand Down
14 changes: 14 additions & 0 deletions UPDATELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,20 @@

-----


## [2.6.4](https://github.com/longitachi/ZLPhotoBrowser/releases/tag/2.6.4) (2018-01-17)

#### Add
* 优化部分代码,提升性能.

#### Fix
* 解决无权限视图中右上角返回按钮设置颜色无效的bug.
* 解决放大后继续滑动图片导致缩放比例不正确的bug. [#181](https://github.com/longitachi/ZLPhotoBrowser/issues/181)
* 解决当 ZLPhotoActionSheet 对象为类属性时通过特定操作出现bug及显示的问题. [#184](https://github.com/longitachi/ZLPhotoBrowser/issues/184)
* 解决iOS8系统下,保存编辑视频出错的bug. [#185](https://github.com/longitachi/ZLPhotoBrowser/issues/185)

---

## [2.6.3](https://github.com/longitachi/ZLPhotoBrowser/releases/tag/2.6.3) (2018-01-10)

#### Add
Expand Down
2 changes: 1 addition & 1 deletion ZLPhotoBrowser.podspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = 'ZLPhotoBrowser'
s.version = '2.6.3'
s.version = '2.6.4'
s.summary = 'A simple way to multiselect photos from ablum, force touch to preview photo, support portrait and landscape, edit photo, multiple languages(Chinese,English,Japanese)'
s.homepage = 'https://github.com/longitachi/ZLPhotoBrowser'
s.license = 'MIT'
Expand Down
8 changes: 4 additions & 4 deletions ZLPhotoBrowser/Base.lproj/Main.storyboard
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13529" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="00a-ed-88M">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="00a-ed-88M">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13527"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
<capability name="Constraints to layout margins" minToolsVersion="6.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
Expand Down Expand Up @@ -296,8 +296,8 @@
<constraints>
<constraint firstAttribute="height" constant="30" id="7OP-YQ-2T5"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<state key="normal" title="预览网络图片"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<state key="normal" title="预览网络图片/视频"/>
<connections>
<action selector="btnPreviewNetImageClick:" destination="BYZ-38-t0r" eventType="touchUpInside" id="bqZ-on-WKI"/>
</connections>
Expand Down

0 comments on commit e9918f0

Please sign in to comment.