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
d12a1e54
Commit
d12a1e54
authored
Jun 17, 2017
by
yuzheng.tz
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修正编译警告;适配iOS11
parent
843337bc
Changes
9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
42 additions
and
21 deletions
+42
-21
TZImagePickerController.xcodeproj/project.pbxproj
TZImagePickerController.xcodeproj/project.pbxproj
+2
-2
TZImagePickerController/Assets.xcassets/AppIcon.appiconset/Contents.json
...ntroller/Assets.xcassets/AppIcon.appiconset/Contents.json
+5
-0
TZImagePickerController/Info.plist
TZImagePickerController/Info.plist
+3
-3
TZImagePickerController/TZImagePickerController/TZGifPhotoPreviewController.m
...ler/TZImagePickerController/TZGifPhotoPreviewController.m
+5
-0
TZImagePickerController/TZImagePickerController/TZImageManager.h
...PickerController/TZImagePickerController/TZImageManager.h
+2
-5
TZImagePickerController/TZImagePickerController/TZImageManager.m
...PickerController/TZImagePickerController/TZImageManager.m
+18
-11
TZImagePickerController/TZImagePickerController/TZImagePickerController.m
...troller/TZImagePickerController/TZImagePickerController.m
+1
-0
TZImagePickerController/TZImagePickerController/TZVideoPlayerController.m
...troller/TZImagePickerController/TZVideoPlayerController.m
+5
-0
TZImagePickerController/ViewController.m
TZImagePickerController/ViewController.m
+1
-0
No files found.
TZImagePickerController.xcodeproj/project.pbxproj
View file @
d12a1e54
...
...
@@ -541,7 +541,7 @@
"$(PROJECT_DIR)/TZImagePickerController"
,
);
INFOPLIST_FILE
=
TZImagePickerController/Info.plist
;
IPHONEOS_DEPLOYMENT_TARGET
=
6
.0
;
IPHONEOS_DEPLOYMENT_TARGET
=
7
.0
;
LD_RUNPATH_SEARCH_PATHS
=
"$(inherited) @executable_path/Frameworks"
;
PRODUCT_BUNDLE_IDENTIFIER
=
tanzhen.TZImagePickerController
;
PRODUCT_NAME
=
"$(TARGET_NAME)"
;
...
...
@@ -562,7 +562,7 @@
"$(PROJECT_DIR)/TZImagePickerController"
,
);
INFOPLIST_FILE
=
TZImagePickerController/Info.plist
;
IPHONEOS_DEPLOYMENT_TARGET
=
6
.0
;
IPHONEOS_DEPLOYMENT_TARGET
=
7
.0
;
LD_RUNPATH_SEARCH_PATHS
=
"$(inherited) @executable_path/Frameworks"
;
PRODUCT_BUNDLE_IDENTIFIER
=
tanzhen.TZImagePickerController
;
PRODUCT_NAME
=
"$(TARGET_NAME)"
;
...
...
TZImagePickerController/Assets.xcassets/AppIcon.appiconset/Contents.json
View file @
d12a1e54
...
...
@@ -39,6 +39,11 @@
"idiom"
:
"iphone"
,
"size"
:
"60x60"
,
"scale"
:
"3x"
},
{
"idiom"
:
"ios-marketing"
,
"size"
:
"1024x1024"
,
"scale"
:
"1x"
}
],
"info"
:
{
...
...
TZImagePickerController/Info.plist
View file @
d12a1e54
...
...
@@ -15,7 +15,7 @@
<key>
CFBundlePackageType
</key>
<string>
APPL
</string>
<key>
CFBundleShortVersionString
</key>
<string>
1.
7.8
</string>
<string>
1.
8.1
</string>
<key>
CFBundleSignature
</key>
<string>
????
</string>
<key>
CFBundleVersion
</key>
...
...
@@ -24,10 +24,10 @@
<true/>
<key>
NSCameraUsageDescription
</key>
<string>
访问相机以拍照
</string>
<key>
NSPhotoLibraryUsageDescription
</key>
<string>
访问相册以选择照片
</string>
<key>
NSLocationWhenInUseUsageDescription
</key>
<string>
允许定位以把位置保存到照片中
</string>
<key>
NSPhotoLibraryUsageDescription
</key>
<string>
访问相册以选择照片
</string>
<key>
UILaunchStoryboardName
</key>
<string>
LaunchScreen
</string>
<key>
UIMainStoryboardFile
</key>
...
...
TZImagePickerController/TZImagePickerController/TZGifPhotoPreviewController.m
View file @
d12a1e54
...
...
@@ -13,6 +13,9 @@
#import "TZPhotoPreviewCell.h"
#import "TZImageManager.h"
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
@interface
TZGifPhotoPreviewController
()
{
UIView
*
_toolBar
;
UIButton
*
_doneButton
;
...
...
@@ -124,4 +127,6 @@
}
}
#pragma clang diagnostic pop
@end
TZImagePickerController/TZImagePickerController/TZImageManager.h
View file @
d12a1e54
...
...
@@ -11,8 +11,6 @@
#import <AVFoundation/AVFoundation.h>
#import <Photos/Photos.h>
NS_ASSUME_NONNULL_BEGIN
@class
TZAlbumModel
,
TZAssetModel
;
@
protocol
TZImagePickerControllerDelegate
;
@interface
TZImageManager
:
NSObject
...
...
@@ -20,6 +18,7 @@ NS_ASSUME_NONNULL_BEGIN
@property
(
nonatomic
,
strong
)
PHCachingImageManager
*
cachingImageManager
;
+
(
instancetype
)
manager
NS_SWIFT_NAME
(
default
());
+
(
void
)
deallocManager
;
@property
(
assign
,
nonatomic
)
id
<
TZImagePickerControllerDelegate
>
pickerDelegate
;
...
...
@@ -76,7 +75,7 @@ NS_ASSUME_NONNULL_BEGIN
/// Get video 获得视频
-
(
void
)
getVideoWithAsset
:(
id
)
asset
completion
:(
void
(
^
)(
AVPlayerItem
*
playerItem
,
NSDictionary
*
info
))
completion
;
-
(
void
)
getVideoWithAsset
:(
id
)
asset
progressHandler
:(
void
(
^
)(
double
progress
,
NSError
*
error
,
BOOL
*
stop
,
NSDictionary
*
info
))
progressHandler
completion
:(
void
(
^
)(
AVPlayerItem
*
_Nullable
,
NSDictionary
*
_Nullable
))
completion
;
-
(
void
)
getVideoWithAsset
:(
id
)
asset
progressHandler
:(
void
(
^
)(
double
progress
,
NSError
*
error
,
BOOL
*
stop
,
NSDictionary
*
info
))
progressHandler
completion
:(
void
(
^
)(
AVPlayerItem
*
,
NSDictionary
*
))
completion
;
/// Export video 导出视频
-
(
void
)
getVideoOutputPathWithAsset
:(
id
)
asset
completion
:(
void
(
^
)(
NSString
*
outputPath
))
completion
;
...
...
@@ -99,8 +98,6 @@ NS_ASSUME_NONNULL_BEGIN
@end
NS_ASSUME_NONNULL_END
//@interface TZSortDescriptor : NSSortDescriptor
//
//@end
TZImagePickerController/TZImagePickerController/TZImageManager.m
View file @
d12a1e54
...
...
@@ -23,9 +23,10 @@ static CGSize AssetGridThumbnailSize;
static
CGFloat
TZScreenWidth
;
static
CGFloat
TZScreenScale
;
static
TZImageManager
*
manager
;
static
dispatch_once_t
onceToken
;
+
(
instancetype
)
manager
{
static
TZImageManager
*
manager
;
static
dispatch_once_t
onceToken
;
dispatch_once
(
&
onceToken
,
^
{
manager
=
[[
self
alloc
]
init
];
if
(
iOS8Later
)
{
...
...
@@ -43,6 +44,11 @@ static CGFloat TZScreenScale;
return
manager
;
}
+
(
void
)
deallocManager
{
onceToken
=
0
;
manager
=
nil
;
}
-
(
void
)
setColumnNumber
:(
NSInteger
)
columnNumber
{
_columnNumber
=
columnNumber
;
CGFloat
margin
=
4
;
...
...
@@ -375,7 +381,7 @@ static CGFloat TZScreenScale;
for
(
NSInteger
i
=
0
;
i
<
photos
.
count
;
i
++
)
{
TZAssetModel
*
model
=
photos
[
i
];
if
([
model
.
asset
isKindOfClass
:[
PHAsset
class
]])
{
[[
PHImageManager
defaultManager
]
requestImageDataForAsset
:
model
.
asset
options
:
nil
resultHandler
:^
(
NSData
*
_Nullable
imageData
,
NSString
*
_Nullable
dataUTI
,
UIImageOrientation
orientation
,
NSDictionary
*
_Nullable
info
)
{
[[
PHImageManager
defaultManager
]
requestImageDataForAsset
:
model
.
asset
options
:
nil
resultHandler
:^
(
NSData
*
imageData
,
NSString
*
dataUTI
,
UIImageOrientation
orientation
,
NSDictionary
*
info
)
{
if
(
model
.
type
!=
TZAssetModelMediaTypeVideo
)
dataLength
+=
imageData
.
length
;
assetCount
++
;
if
(
assetCount
>=
photos
.
count
)
{
...
...
@@ -455,7 +461,7 @@ static CGFloat TZScreenScale;
// 下面两行代码,来自hsjcom,他的github是:https://github.com/hsjcom 表示感谢
PHImageRequestOptions
*
option
=
[[
PHImageRequestOptions
alloc
]
init
];
option
.
resizeMode
=
PHImageRequestOptionsResizeModeFast
;
int32_t
imageRequestID
=
[[
PHImageManager
defaultManager
]
requestImageForAsset
:
asset
targetSize
:
imageSize
contentMode
:
PHImageContentModeAspectFill
options
:
option
resultHandler
:^
(
UIImage
*
_Nullable
result
,
NSDictionary
*
_Nullable
info
)
{
int32_t
imageRequestID
=
[[
PHImageManager
defaultManager
]
requestImageForAsset
:
asset
targetSize
:
imageSize
contentMode
:
PHImageContentModeAspectFill
options
:
option
resultHandler
:^
(
UIImage
*
result
,
NSDictionary
*
info
)
{
if
(
result
)
{
image
=
result
;
}
...
...
@@ -476,7 +482,7 @@ static CGFloat TZScreenScale;
};
options
.
networkAccessAllowed
=
YES
;
options
.
resizeMode
=
PHImageRequestOptionsResizeModeFast
;
[[
PHImageManager
defaultManager
]
requestImageDataForAsset
:
asset
options
:
options
resultHandler
:^
(
NSData
*
_Nullable
imageData
,
NSString
*
_Nullable
dataUTI
,
UIImageOrientation
orientation
,
NSDictionary
*
_Nullable
info
)
{
[[
PHImageManager
defaultManager
]
requestImageDataForAsset
:
asset
options
:
options
resultHandler
:^
(
NSData
*
imageData
,
NSString
*
dataUTI
,
UIImageOrientation
orientation
,
NSDictionary
*
info
)
{
UIImage
*
resultImage
=
[
UIImage
imageWithData
:
imageData
scale
:
0
.
1
];
resultImage
=
[
self
scaleImage
:
resultImage
toSize
:
imageSize
];
if
(
!
resultImage
)
{
...
...
@@ -544,7 +550,7 @@ static CGFloat TZScreenScale;
PHImageRequestOptions
*
option
=
[[
PHImageRequestOptions
alloc
]
init
];
option
.
networkAccessAllowed
=
YES
;
option
.
resizeMode
=
PHImageRequestOptionsResizeModeFast
;
[[
PHImageManager
defaultManager
]
requestImageForAsset
:
asset
targetSize
:
PHImageManagerMaximumSize
contentMode
:
PHImageContentModeAspectFit
options
:
option
resultHandler
:^
(
UIImage
*
_Nullable
result
,
NSDictionary
*
_Nullable
info
)
{
[[
PHImageManager
defaultManager
]
requestImageForAsset
:
asset
targetSize
:
PHImageManagerMaximumSize
contentMode
:
PHImageContentModeAspectFit
options
:
option
resultHandler
:^
(
UIImage
*
result
,
NSDictionary
*
info
)
{
BOOL
downloadFinined
=
(
!
[[
info
objectForKey
:
PHImageCancelledKey
]
boolValue
]
&&
!
[
info
objectForKey
:
PHImageErrorKey
]);
if
(
downloadFinined
&&
result
)
{
result
=
[
self
fixOrientation
:
result
];
...
...
@@ -572,7 +578,7 @@ static CGFloat TZScreenScale;
PHImageRequestOptions
*
option
=
[[
PHImageRequestOptions
alloc
]
init
];
option
.
networkAccessAllowed
=
YES
;
option
.
resizeMode
=
PHImageRequestOptionsResizeModeFast
;
[[
PHImageManager
defaultManager
]
requestImageDataForAsset
:
asset
options
:
option
resultHandler
:^
(
NSData
*
_Nullable
imageData
,
NSString
*
_Nullable
dataUTI
,
UIImageOrientation
orientation
,
NSDictionary
*
_Nullable
info
)
{
[[
PHImageManager
defaultManager
]
requestImageDataForAsset
:
asset
options
:
option
resultHandler
:^
(
NSData
*
imageData
,
NSString
*
dataUTI
,
UIImageOrientation
orientation
,
NSDictionary
*
info
)
{
BOOL
downloadFinined
=
(
!
[[
info
objectForKey
:
PHImageCancelledKey
]
boolValue
]
&&
!
[
info
objectForKey
:
PHImageErrorKey
]);
if
(
downloadFinined
&&
imageData
)
{
if
(
completion
)
completion
(
imageData
,
info
,
NO
);
...
...
@@ -606,7 +612,7 @@ static CGFloat TZScreenScale;
request
.
location
=
location
;
}
request
.
creationDate
=
[
NSDate
date
];
}
completionHandler
:
^
(
BOOL
success
,
NSError
*
_Nullable
error
)
{
}
completionHandler
:
^
(
BOOL
success
,
NSError
*
error
)
{
dispatch_sync
(
dispatch_get_main_queue
(),
^
{
if
(
success
&&
completion
)
{
completion
(
nil
);
...
...
@@ -640,11 +646,11 @@ static CGFloat TZScreenScale;
#pragma mark - Get Video
/// Get Video / 获取视频
-
(
void
)
getVideoWithAsset
:(
id
)
asset
completion
:(
void
(
^
)(
AVPlayerItem
*
_Nullable
,
NSDictionary
*
_Nullable
))
completion
{
-
(
void
)
getVideoWithAsset
:(
id
)
asset
completion
:(
void
(
^
)(
AVPlayerItem
*
,
NSDictionary
*
))
completion
{
[
self
getVideoWithAsset
:
asset
progressHandler
:
nil
completion
:
completion
];
}
-
(
void
)
getVideoWithAsset
:(
id
)
asset
progressHandler
:(
void
(
^
)(
double
progress
,
NSError
*
error
,
BOOL
*
stop
,
NSDictionary
*
info
))
progressHandler
completion
:(
void
(
^
)(
AVPlayerItem
*
_Nullable
,
NSDictionary
*
_Nullable
))
completion
{
-
(
void
)
getVideoWithAsset
:(
id
)
asset
progressHandler
:(
void
(
^
)(
double
progress
,
NSError
*
error
,
BOOL
*
stop
,
NSDictionary
*
info
))
progressHandler
completion
:(
void
(
^
)(
AVPlayerItem
*
,
NSDictionary
*
))
completion
{
if
([
asset
isKindOfClass
:[
PHAsset
class
]])
{
PHVideoRequestOptions
*
option
=
[[
PHVideoRequestOptions
alloc
]
init
];
option
.
networkAccessAllowed
=
YES
;
...
...
@@ -655,7 +661,7 @@ static CGFloat TZScreenScale;
}
});
};
[[
PHImageManager
defaultManager
]
requestPlayerItemForVideo
:
asset
options
:
option
resultHandler
:^
(
AVPlayerItem
*
_Nullable
playerItem
,
NSDictionary
*
_Nullable
info
)
{
[[
PHImageManager
defaultManager
]
requestPlayerItemForVideo
:
asset
options
:
option
resultHandler
:^
(
AVPlayerItem
*
playerItem
,
NSDictionary
*
info
)
{
if
(
completion
)
completion
(
playerItem
,
info
);
}];
}
else
if
([
asset
isKindOfClass
:[
ALAsset
class
]])
{
...
...
@@ -993,6 +999,7 @@ static CGFloat TZScreenScale;
CGImageRelease
(
cgimg
);
return
img
;
}
#pragma clang diagnostic pop
@end
...
...
TZImagePickerController/TZImagePickerController/TZImagePickerController.m
View file @
d12a1e54
...
...
@@ -629,6 +629,7 @@
[
self
.
navigationController
pushViewController
:
photoPickerVc
animated
:
YES
];
[
tableView
deselectRowAtIndexPath
:
indexPath
animated
:
NO
];
}
#pragma clang diagnostic pop
@end
...
...
TZImagePickerController/TZImagePickerController/TZVideoPlayerController.m
View file @
d12a1e54
...
...
@@ -27,6 +27,9 @@
}
@end
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
@implementation
TZVideoPlayerController
-
(
void
)
viewDidLoad
{
...
...
@@ -167,4 +170,6 @@
[[
NSNotificationCenter
defaultCenter
]
removeObserver
:
self
];
}
#pragma clang diagnostic pop
@end
TZImagePickerController/ViewController.m
View file @
d12a1e54
...
...
@@ -625,6 +625,7 @@
-
(
UIInterfaceOrientationMask
)
supportedInterfaceOrientations
{
return
UIInterfaceOrientationMaskPortrait
;
}
#pragma clang diagnostic pop
@end
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