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
a4ab2318
Commit
a4ab2318
authored
Jun 21, 2016
by
banchichen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化demo页的UI,新增多个开关,方便大家调试
parent
f2f2364d
Changes
4
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
268 additions
and
62 deletions
+268
-62
.DS_Store
.DS_Store
+0
-0
TZImagePickerController/Base.lproj/Main.storyboard
TZImagePickerController/Base.lproj/Main.storyboard
+185
-23
TZImagePickerController/TZImagePickerController/TZPhotoPickerController.m
...troller/TZImagePickerController/TZPhotoPickerController.m
+2
-2
TZImagePickerController/ViewController.m
TZImagePickerController/ViewController.m
+81
-37
No files found.
.DS_Store
View file @
a4ab2318
No preview for this file type
TZImagePickerController/Base.lproj/Main.storyboard
View file @
a4ab2318
This diff is collapsed.
Click to expand it.
TZImagePickerController/TZImagePickerController/TZPhotoPickerController.m
View file @
a4ab2318
...
...
@@ -67,7 +67,7 @@ static CGSize AssetGridThumbnailSize;
self
.
view
.
backgroundColor
=
[
UIColor
whiteColor
];
self
.
navigationItem
.
title
=
_model
.
name
;
self
.
navigationItem
.
rightBarButtonItem
=
[[
UIBarButtonItem
alloc
]
initWithTitle
:
@"取消"
style
:
UIBarButtonItemStylePlain
target
:
self
action
:
@selector
(
cancel
)];
_showTakePhotoBtn
=
(
[
_model
.
name
isEqualToString
:
@"相机胶卷"
]
||
[
_model
.
name
isEqualToString
:
@"Camera Roll"
]
||
[
_model
.
name
isEqualToString
:
@"所有照片"
]
||
[
_model
.
name
isEqualToString
:
@"All Photos"
]
);
_showTakePhotoBtn
=
(
([
_model
.
name
isEqualToString
:
@"相机胶卷"
]
||
[
_model
.
name
isEqualToString
:
@"Camera Roll"
]
||
[
_model
.
name
isEqualToString
:
@"所有照片"
]
||
[
_model
.
name
isEqualToString
:
@"All Photos"
])
&&
tzImagePickerVc
.
allowTakePicture
);
if
(
!
tzImagePickerVc
.
sortAscendingByModificationDate
&&
_isFirstAppear
&&
iOS8Later
)
{
[[
TZImageManager
manager
]
getCameraRollAlbum
:
tzImagePickerVc
.
allowPickingVideo
allowPickingImage
:
tzImagePickerVc
.
allowPickingImage
completion
:^
(
TZAlbumModel
*
model
)
{
_model
=
model
;
...
...
@@ -75,7 +75,7 @@ static CGSize AssetGridThumbnailSize;
[
self
initSubviews
];
}];
}
else
{
if
(
_showTakePhotoBtn
||
!
iOS8Later
)
{
if
(
_showTakePhotoBtn
||
!
iOS8Later
||
_isFirstAppear
)
{
[[
TZImageManager
manager
]
getAssetsFromFetchResult
:
_model
.
result
allowPickingVideo
:
tzImagePickerVc
.
allowPickingVideo
allowPickingImage
:
tzImagePickerVc
.
allowPickingImage
completion
:^
(
NSArray
<
TZAssetModel
*>
*
models
)
{
_models
=
[
NSMutableArray
arrayWithArray
:
models
];
[
self
initSubviews
];
...
...
TZImagePickerController/ViewController.m
View file @
a4ab2318
...
...
@@ -25,6 +25,13 @@
LxGridViewFlowLayout
*
_layout
;
}
@property
(
nonatomic
,
strong
)
UICollectionView
*
collectionView
;
// 6个设置开关
@property
(
weak
,
nonatomic
)
IBOutlet
UISwitch
*
showTakePhotoBtnSwitch
;
///< 在内部显示拍照按钮
@property
(
weak
,
nonatomic
)
IBOutlet
UISwitch
*
sortAscendingSwitch
;
///< 照片排列按修改时间升序
@property
(
weak
,
nonatomic
)
IBOutlet
UISwitch
*
allowPickingVideoSwitch
;
///< 允许选择视频
@property
(
weak
,
nonatomic
)
IBOutlet
UISwitch
*
allowPickingImageSwitch
;
///< 允许选择图片
@property
(
weak
,
nonatomic
)
IBOutlet
UISwitch
*
allowPickingOriginalPhotoSwitch
;
///< 允许选择原图
@property
(
weak
,
nonatomic
)
IBOutlet
UISwitch
*
showSheetSwitch
;
///< 显示一个sheet,把拍照按钮放在外面
@end
@implementation
ViewController
...
...
@@ -44,11 +51,11 @@
_layout
.
itemSize
=
CGSizeMake
(
_itemWH
,
_itemWH
);
_layout
.
minimumInteritemSpacing
=
_margin
;
_layout
.
minimumLineSpacing
=
_margin
;
_collectionView
=
[[
UICollectionView
alloc
]
initWithFrame
:
CGRectMake
(
_margin
,
120
,
self
.
view
.
tz_width
-
2
*
_margin
,
4
00
)
collectionViewLayout
:
_layout
];
_collectionView
=
[[
UICollectionView
alloc
]
initWithFrame
:
CGRectMake
(
0
,
300
,
self
.
view
.
tz_width
,
self
.
view
.
tz_height
-
3
00
)
collectionViewLayout
:
_layout
];
CGFloat
rgb
=
244
/
255
.
0
;
_collectionView
.
alwaysBounceVertical
=
YES
;
_collectionView
.
backgroundColor
=
[
UIColor
colorWithRed
:
rgb
green
:
rgb
blue
:
rgb
alpha
:
1
.
0
];
_collectionView
.
contentInset
=
UIEdgeInsetsMake
(
4
,
0
,
0
,
2
);
_collectionView
.
scrollIndicatorInsets
=
UIEdgeInsetsMake
(
0
,
0
,
0
,
-
2
);
_collectionView
.
contentInset
=
UIEdgeInsetsMake
(
4
,
4
,
4
,
4
);
_collectionView
.
dataSource
=
self
;
_collectionView
.
delegate
=
self
;
[
self
.
view
addSubview
:
_collectionView
];
...
...
@@ -77,7 +84,7 @@
-
(
void
)
collectionView
:(
UICollectionView
*
)
collectionView
didSelectItemAtIndexPath
:(
NSIndexPath
*
)
indexPath
{
if
(
indexPath
.
row
==
_selectedPhotos
.
count
)
{
[
self
p
ickPhotoButtonClick
:
nil
];
[
self
p
ushImagePickerController
];
}
else
{
// preview photos / 预览照片
TZImagePickerController
*
imagePickerVc
=
[[
TZImagePickerController
alloc
]
initWithSelectedAssets
:
_selectedAssets
selectedPhotos
:
_selectedPhotos
index
:
indexPath
.
row
];
imagePickerVc
.
isSelectOriginalPhoto
=
_isSelectOriginalPhoto
;
...
...
@@ -104,6 +111,41 @@
}
}
-
(
void
)
pushImagePickerController
{
TZImagePickerController
*
imagePickerVc
=
[[
TZImagePickerController
alloc
]
initWithMaxImagesCount
:
9
delegate
:
self
];
#pragma mark - 四类个性化设置,这些参数都可以不传,此时会走默认设置
imagePickerVc
.
isSelectOriginalPhoto
=
_isSelectOriginalPhoto
;
// 1.如果你需要将拍照按钮放在外面,不要传这个参数
imagePickerVc
.
selectedAssets
=
_selectedAssets
;
// optional, 可选的
imagePickerVc
.
allowTakePicture
=
self
.
showTakePhotoBtnSwitch
.
isOn
;
// 在内部显示拍照按钮
// 2. Set the appearance
// 2. 在这里设置imagePickerVc的外观
// imagePickerVc.navigationBar.barTintColor = [UIColor greenColor];
// imagePickerVc.oKButtonTitleColorDisabled = [UIColor lightGrayColor];
// imagePickerVc.oKButtonTitleColorNormal = [UIColor greenColor];
// 3. Set allow picking video & photo & originalPhoto or not
// 3. 设置是否可以选择视频/图片/原图
imagePickerVc
.
allowPickingVideo
=
self
.
allowPickingVideoSwitch
.
isOn
;
imagePickerVc
.
allowPickingImage
=
self
.
allowPickingImageSwitch
.
isOn
;
imagePickerVc
.
allowPickingOriginalPhoto
=
self
.
allowPickingOriginalPhotoSwitch
.
isOn
;
// 4. 照片排列按修改时间升序
imagePickerVc
.
sortAscendingByModificationDate
=
self
.
sortAscendingSwitch
.
isOn
;
#pragma mark - 到这里为止
// You can get the photos by block, the same as by delegate.
// 你可以通过block或者代理,来得到用户选择的照片.
[
imagePickerVc
setDidFinishPickingPhotosHandle
:
^
(
NSArray
<
UIImage
*>
*
photos
,
NSArray
*
assets
,
BOOL
isSelectOriginalPhoto
)
{
}];
[
self
presentViewController
:
imagePickerVc
animated
:
YES
completion
:
nil
];
}
#pragma mark Click Event
-
(
void
)
deleteBtnClik
:(
UIButton
*
)
sender
{
...
...
@@ -119,35 +161,29 @@
}];
}
-
(
IBAction
)
pickPhotoButtonClick
:(
UIButton
*
)
sender
{
TZImagePickerController
*
imagePickerVc
=
[[
TZImagePickerController
alloc
]
initWithMaxImagesCount
:
9
delegate
:
self
];
imagePickerVc
.
isSelectOriginalPhoto
=
_isSelectOriginalPhoto
;
// tip:如果你需要将拍照放在外面,不要传这个参数
imagePickerVc
.
selectedAssets
=
_selectedAssets
;
// optional, 可选的
// imagePickerVc.allowTakePicture = NO; // 隐藏拍照按钮
// You can get the photos by block, the same as by delegate.
// 你可以通过block或者代理,来得到用户选择的照片.
[
imagePickerVc
setDidFinishPickingPhotosHandle
:
^
(
NSArray
<
UIImage
*>
*
photos
,
NSArray
*
assets
,
BOOL
isSelectOriginalPhoto
)
{
}];
// Set the appearance
// 在这里设置imagePickerVc的外观
// imagePickerVc.navigationBar.barTintColor = [UIColor greenColor];
// imagePickerVc.oKButtonTitleColorDisabled = [UIColor lightGrayColor];
// imagePickerVc.oKButtonTitleColorNormal = [UIColor greenColor];
-
(
IBAction
)
showTakePhotoBtnSwitchClick
:(
UISwitch
*
)
sender
{
if
(
sender
.
isOn
)
{
[
_showSheetSwitch
setOn
:
NO
animated
:
YES
];
[
_allowPickingImageSwitch
setOn
:
YES
animated
:
YES
];
}
}
// Set allow picking video & photo & originalPhoto or not
// 设置是否可以选择视频/图片/原图
// imagePickerVc.allowPickingVideo = NO
;
// imagePickerVc.allowPickingImage = NO;
// imagePickerVc.allowPickingOriginalPhoto = NO;
-
(
IBAction
)
showSheetSwitchClick
:(
UISwitch
*
)
sender
{
if
(
sender
.
isOn
)
{
[
_showTakePhotoBtnSwitch
setOn
:
NO
animated
:
YES
]
;
}
}
imagePickerVc
.
sortAscendingByModificationDate
=
NO
;
-
(
IBAction
)
allowPickingOriginPhotoSwitchClick
:(
UISwitch
*
)
sender
{
if
(
sender
.
isOn
)
{
[
_allowPickingImageSwitch
setOn
:
YES
animated
:
YES
];
}
}
[
self
presentViewController
:
imagePickerVc
animated
:
YES
completion
:
nil
];
-
(
IBAction
)
allowPickingImageSwitchClick
:(
UISwitch
*
)
sender
{
if
(
!
sender
.
isOn
)
{
[
_allowPickingOriginalPhotoSwitch
setOn
:
NO
animated
:
YES
];
}
}
#pragma mark TZImagePickerControllerDelegate
...
...
@@ -158,8 +194,14 @@
// NSLog(@"cancel");
}
/// User finish picking photo,if assets are not empty, user picking original photo.
/// 用户选择好了图片,如果assets非空,则用户选择了原图。
// The picker should dismiss itself; when it dismissed these handle will be called.
// If isOriginalPhoto is YES, user picked the original photo.
// You can get original photo with asset, by the method [[TZImageManager manager] getOriginalPhotoWithAsset:completion:].
// The UIImage Object in photos default width is 828px, you can set it by photoWidth property.
// 这个照片选择器会自己dismiss,当选择器dismiss的时候,会执行下面的代理方法
// 如果isSelectOriginalPhoto为YES,表明用户选择了原图
// 你可以通过一个asset获得原图,通过这个方法:[[TZImageManager manager] getOriginalPhotoWithAsset:completion:]
// photos数组里的UIImage对象,默认是828像素宽,你可以通过设置photoWidth属性的值来改变它
-
(
void
)
imagePickerController
:(
TZImagePickerController
*
)
picker
didFinishPickingPhotos
:(
NSArray
*
)
photos
sourceAssets
:(
NSArray
*
)
assets
isSelectOriginalPhoto
:(
BOOL
)
isSelectOriginalPhoto
{
_selectedPhotos
=
[
NSMutableArray
arrayWithArray
:
photos
];
_selectedAssets
=
[
NSMutableArray
arrayWithArray
:
assets
];
...
...
@@ -169,8 +211,10 @@
_collectionView
.
contentSize
=
CGSizeMake
(
0
,
((
_selectedPhotos
.
count
+
2
)
/
3
)
*
(
_margin
+
_itemWH
));
}
/// User finish picking video,
/// 用户选择好了视频
// If user picking a video, this callback will be called.
// If system version > iOS8,asset is kind of PHAsset class, else is ALAsset class.
// 如果用户选择了一个视频,下面的handle会被执行
// 如果系统版本大于iOS8,asset是PHAsset类的对象,否则是ALAsset类的对象
-
(
void
)
imagePickerController
:(
TZImagePickerController
*
)
picker
didFinishPickingVideo
:(
UIImage
*
)
coverImage
sourceAssets
:(
id
)
asset
{
_selectedPhotos
=
[
NSMutableArray
arrayWithArray
:@[
coverImage
]];
_selectedAssets
=
[
NSMutableArray
arrayWithArray
:@[
asset
]];
...
...
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