Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
D
dz_TZImagePickerController
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
shuijing
dz_TZImagePickerController
Commits
34b76d72
Unverified
Commit
34b76d72
authored
Dec 03, 2020
by
谭真
Committed by
GitHub
Dec 03, 2020
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1431 from cnjsyyb/master
新增自己决定照片能否被选中
parents
7ab537ee
26e0ab22
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
73 additions
and
3 deletions
+73
-3
README.md
README.md
+1
-1
TZImagePickerController/TZImagePickerController/TZImageManager.h
...PickerController/TZImagePickerController/TZImageManager.h
+3
-0
TZImagePickerController/TZImagePickerController/TZImageManager.m
...PickerController/TZImagePickerController/TZImageManager.m
+13
-0
TZImagePickerController/TZImagePickerController/TZImagePickerController.h
...troller/TZImagePickerController/TZImagePickerController.h
+6
-1
TZImagePickerController/TZImagePickerController/TZPhotoPickerController.m
...troller/TZImagePickerController/TZPhotoPickerController.m
+6
-0
TZImagePickerController/TZImagePickerController/TZPhotoPreviewController.m
...roller/TZImagePickerController/TZPhotoPreviewController.m
+11
-0
TZImagePickerController/TZImagePickerController/TZVideoPlayerController.m
...troller/TZImagePickerController/TZVideoPlayerController.m
+3
-0
TZImagePickerController/ViewController.m
TZImagePickerController/ViewController.m
+30
-1
No files found.
README.md
View file @
34b76d72
...
...
@@ -87,7 +87,7 @@ A:请参考 https://github.com/banchichen/TZImagePickerController/issues/443
A:3.0.1版本已支持,需新接一个库:
[
TZImagePreviewController
](
https://github.com/banchichen/TZImagePreviewController
)
,请参考里面的Demo使用。
**Q:设置可选视频的最大/最小时长?照片的最小/最大尺寸?不符合要求的不显示**
A:可以的,参照Demo的isAssetCan
Select
方法实现。我会返回asset出来,显示与否你来决定,注意这个是一个同步方法,对于需要根据asset去异步获取的信息如视频的大小、视频是否存在iCloud里来过滤的,无法做到。如果真要这样做,相册打开速度会变慢,你需要改我源码。
A:可以的,参照Demo的isAssetCan
BeDisplayed
方法实现。我会返回asset出来,显示与否你来决定,注意这个是一个同步方法,对于需要根据asset去异步获取的信息如视频的大小、视频是否存在iCloud里来过滤的,无法做到。如果真要这样做,相册打开速度会变慢,你需要改我源码。
**Q:预览页面出现了导航栏?**
A:https://github.com/banchichen/TZImagePickerController/issues/652
...
...
TZImagePickerController/TZImagePickerController/TZImageManager.h
View file @
34b76d72
...
...
@@ -109,6 +109,9 @@
/// 检查照片大小是否满足最小要求
-
(
BOOL
)
isPhotoSelectableWithAsset
:(
PHAsset
*
)
asset
;
/// 检查照片能否被选中
-
(
BOOL
)
isAssetCannotBeSelected
:(
PHAsset
*
)
asset
;
/// 修正图片转向
-
(
UIImage
*
)
fixOrientation
:(
UIImage
*
)
aImage
;
...
...
TZImagePickerController/TZImagePickerController/TZImageManager.m
View file @
34b76d72
...
...
@@ -236,6 +236,10 @@ static dispatch_once_t onceToken;
if
([
self
.
pickerDelegate
respondsToSelector
:
@selector
(
isAssetCanSelect
:)])
{
canSelect
=
[
self
.
pickerDelegate
isAssetCanSelect
:
asset
];
}
if
([
self
.
pickerDelegate
respondsToSelector
:
@selector
(
isAssetCanBeDisplayed
:)]){
canSelect
=
[
self
.
pickerDelegate
isAssetCanBeDisplayed
:
asset
];
}
if
(
!
canSelect
)
return
nil
;
TZAssetModel
*
model
;
...
...
@@ -805,6 +809,15 @@ static dispatch_once_t onceToken;
return
YES
;
}
/// 检查照片能否被选中
-
(
BOOL
)
isAssetCannotBeSelected
:(
PHAsset
*
)
asset
{
if
([
self
.
pickerDelegate
respondsToSelector
:
@selector
(
isAssetCanBeSelected
:)])
{
BOOL
canSelectAsset
=
[
self
.
pickerDelegate
isAssetCanBeSelected
:
asset
];
return
!
canSelectAsset
;
}
return
NO
;
}
#pragma mark - Private Method
-
(
TZAlbumModel
*
)
modelWithResult
:(
PHFetchResult
*
)
result
collection
:(
PHAssetCollection
*
)
collection
isCameraRoll
:(
BOOL
)
isCameraRoll
needFetchAssets
:(
BOOL
)
needFetchAssets
options
:(
PHFetchOptions
*
)
options
{
...
...
TZImagePickerController/TZImagePickerController/TZImagePickerController.h
View file @
34b76d72
...
...
@@ -287,7 +287,12 @@
// Decide asset show or not't
// 决定照片显示与否
-
(
BOOL
)
isAssetCanSelect
:(
PHAsset
*
)
asset
;
-
(
BOOL
)
isAssetCanSelect
:(
PHAsset
*
)
asset
__attribute__
((
deprecated
(
"Use -isAssetCanBeDisplayed:."
)));
-
(
BOOL
)
isAssetCanBeDisplayed
:(
PHAsset
*
)
asset
;
// Decide asset can be selected
// 决定照片能否被选中
-
(
BOOL
)
isAssetCanBeSelected
:(
PHAsset
*
)
asset
;
@end
...
...
TZImagePickerController/TZImagePickerController/TZPhotoPickerController.m
View file @
34b76d72
...
...
@@ -627,6 +627,9 @@ static CGFloat itemMargin = 5;
}
else
{
// 2. select:check if over the maxImagesCount / 选择照片,检查是否超过了最大个数的限制
if
(
tzImagePickerVc
.
selectedModels
.
count
<
tzImagePickerVc
.
maxImagesCount
)
{
if
([[
TZImageManager
manager
]
isAssetCannotBeSelected
:
model
.
asset
])
{
return
;
}
if
(
!
tzImagePickerVc
.
allowPreview
)
{
BOOL
shouldDone
=
tzImagePickerVc
.
maxImagesCount
==
1
;
if
(
!
tzImagePickerVc
.
allowPickingMultipleVideo
&&
(
model
.
type
==
TZAssetModelMediaTypeVideo
||
model
.
type
==
TZAssetModelMediaTypePhotoGif
))
{
...
...
@@ -941,6 +944,9 @@ static CGFloat itemMargin = 5;
if
(
assetModel
.
type
==
TZAssetModelMediaTypeVideo
&&
!
tzImagePickerVc
.
allowPickingMultipleVideo
)
{
// 不能多选视频的情况下,不选中拍摄的视频
}
else
{
if
([[
TZImageManager
manager
]
isAssetCannotBeSelected
:
assetModel
.
asset
])
{
return
;
}
assetModel
.
isSelected
=
YES
;
[
tzImagePickerVc
addSelectedModel
:
assetModel
];
[
self
refreshBottomToolBarStatus
];
...
...
TZImagePickerController/TZImagePickerController/TZPhotoPreviewController.m
View file @
34b76d72
...
...
@@ -314,6 +314,9 @@
return
;
// 2. if not over the maxImagesCount / 如果没有超过最大个数限制
}
else
{
if
([[
TZImageManager
manager
]
isAssetCannotBeSelected
:
model
.
asset
])
{
return
;
}
[
_tzImagePickerVc
addSelectedModel
:
model
];
if
(
self
.
photos
)
{
[
_tzImagePickerVc
.
selectedAssets
addObject
:
_assetsTemp
[
self
.
currentIndex
]];
...
...
@@ -389,6 +392,10 @@
// 如果没有选中过照片 点击确定时选中当前预览的照片
if
(
_tzImagePickerVc
.
selectedModels
.
count
==
0
&&
_tzImagePickerVc
.
minImagesCount
<=
0
&&
_tzImagePickerVc
.
autoSelectCurrentWhenDone
)
{
TZAssetModel
*
model
=
_models
[
self
.
currentIndex
];
if
([[
TZImageManager
manager
]
isAssetCannotBeSelected
:
model
.
asset
])
{
return
;
}
[
self
select
:
_selectButton
];
}
NSIndexPath
*
indexPath
=
[
NSIndexPath
indexPathForItem
:
self
.
currentIndex
inSection
:
0
];
...
...
@@ -415,6 +422,10 @@
}
-
(
void
)
originalPhotoButtonClick
{
TZAssetModel
*
model
=
_models
[
self
.
currentIndex
];
if
([[
TZImageManager
manager
]
isAssetCannotBeSelected
:
model
.
asset
])
{
return
;
}
_originalPhotoButton
.
selected
=
!
_originalPhotoButton
.
isSelected
;
_isSelectOriginalPhoto
=
_originalPhotoButton
.
isSelected
;
_originalPhotoLabel
.
hidden
=
!
_originalPhotoButton
.
isSelected
;
...
...
TZImagePickerController/TZImagePickerController/TZVideoPlayerController.m
View file @
34b76d72
...
...
@@ -183,6 +183,9 @@
}
-
(
void
)
doneButtonClick
{
if
([[
TZImageManager
manager
]
isAssetCannotBeSelected
:
_model
.
asset
])
{
return
;
}
if
(
self
.
navigationController
)
{
TZImagePickerController
*
imagePickerVc
=
(
TZImagePickerController
*
)
self
.
navigationController
;
if
(
imagePickerVc
.
autoDismiss
)
{
...
...
TZImagePickerController/ViewController.m
View file @
34b76d72
...
...
@@ -632,7 +632,36 @@
// Decide asset show or not't
// 决定asset显示与否
-
(
BOOL
)
isAssetCanSelect
:(
PHAsset
*
)
asset
{
-
(
BOOL
)
isAssetCanBeDisplayed
:(
PHAsset
*
)
asset
{
/*
switch (asset.mediaType) {
case PHAssetMediaTypeVideo: {
// 视频时长
// NSTimeInterval duration = phAsset.duration;
return NO;
} break;
case PHAssetMediaTypeImage: {
// 图片尺寸
if (phAsset.pixelWidth > 3000 || phAsset.pixelHeight > 3000) {
// return NO;
}
return YES;
} break;
case PHAssetMediaTypeAudio:
return NO;
break;
case PHAssetMediaTypeUnknown:
return NO;
break;
default: break;
}
*/
return
YES
;
}
// Decide asset can be selected
// 决定照片能否被选中
-
(
BOOL
)
isAssetCanBeSelected
:(
PHAsset
*
)
asset
{
/*
switch (asset.mediaType) {
case PHAssetMediaTypeVideo: {
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment