From f0e3bc8aa19ff730ba6e7223a4a0d36c735faa2c Mon Sep 17 00:00:00 2001 From: Fraser Date: Tue, 1 Jul 2014 16:53:21 +1200 Subject: [PATCH 1/7] Added static theming so colors can be customised MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Colors can now be customised with the following syntax DoImagePickerController.menuBackColor = [UIColor redColor]; This sets the color statically, so it doesn’t need to be set for new instances. If no colors are set, it default to original theme --- ImagePicker/DoImagePicker/DoAlbumCell.m | 6 +- .../DoImagePicker/DoImagePickerController.h | 24 ++++---- .../DoImagePicker/DoImagePickerController.m | 55 ++++++++++++++++--- 3 files changed, 63 insertions(+), 22 deletions(-) diff --git a/ImagePicker/DoImagePicker/DoAlbumCell.m b/ImagePicker/DoImagePicker/DoAlbumCell.m index 5474ac7..5c1f3b2 100644 --- a/ImagePicker/DoImagePicker/DoAlbumCell.m +++ b/ImagePicker/DoImagePicker/DoAlbumCell.m @@ -28,12 +28,12 @@ - (void)setSelected:(BOOL)selected animated:(BOOL)animated _lbAlbumName.textColor = [UIColor whiteColor]; _lbCount.textColor = [UIColor whiteColor]; - self.contentView.backgroundColor = DO_ALBUM_NAME_TEXT_COLOR; + self.contentView.backgroundColor = DoImagePickerController.albumNameSelectedTextColor; } else { - _lbAlbumName.textColor = DO_ALBUM_NAME_TEXT_COLOR; - _lbCount.textColor = DO_ALBUM_COUNT_TEXT_COLOR; + _lbAlbumName.textColor = DoImagePickerController.albumNameUnselectedTextColor; + _lbCount.textColor = DoImagePickerController.albumCountTextColor; self.contentView.backgroundColor = [UIColor whiteColor]; } diff --git a/ImagePicker/DoImagePicker/DoImagePickerController.h b/ImagePicker/DoImagePicker/DoImagePickerController.h index ded8a56..d7bfd93 100644 --- a/ImagePicker/DoImagePicker/DoImagePickerController.h +++ b/ImagePicker/DoImagePicker/DoImagePickerController.h @@ -7,16 +7,6 @@ #import -#define DO_RGB(r, g, b) [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:1] -#define DO_RGBA(r, g, b, a) [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:a] - -#define DO_MENU_BACK_COLOR DO_RGBA(57, 185, 238, 0.98) -#define DO_SIDE_BUTTON_COLOR DO_RGBA(57, 185, 238, 0.9) - -#define DO_ALBUM_NAME_TEXT_COLOR DO_RGB(57, 185, 238) -#define DO_ALBUM_COUNT_TEXT_COLOR DO_RGB(247, 200, 142) -#define DO_BOTTOM_TEXT_COLOR DO_RGB(255, 255, 255) - #define DO_PICKER_RESULT_UIIMAGE 0 #define DO_PICKER_RESULT_ASSET 1 @@ -79,6 +69,20 @@ @property (strong, nonatomic) NSMutableDictionary *dSelected; @property (strong, nonatomic) NSIndexPath *lastAccessed; +// static branding ++ (UIColor *)menuBackColor; ++ (void)setMenuBackColor:(UIColor *)color; ++ (UIColor *)sideButtonColor; ++ (void)setSideButtonColor:(UIColor *)color; ++ (UIColor *)albumNameSelectedTextColor; ++ (void)setAlbumNameSelectedTextColor:(UIColor *)color; ++ (UIColor *)albumNameUnselectedTextColor; ++ (void)setAlbumNameUnselectedTextColor:(UIColor *)color; ++ (UIColor *)albumCountTextColor; ++ (void)setAlbumCountTextColor:(UIColor *)color; ++ (UIColor *)bottomTextColor; ++ (void)setBottomTextColor:(UIColor *)color; + @end @protocol DoImagePickerControllerDelegate diff --git a/ImagePicker/DoImagePicker/DoImagePickerController.m b/ImagePicker/DoImagePicker/DoImagePickerController.m index 3b7bcde..11a6cb9 100644 --- a/ImagePicker/DoImagePicker/DoImagePickerController.m +++ b/ImagePicker/DoImagePicker/DoImagePickerController.m @@ -11,6 +11,16 @@ #import "DoAlbumCell.h" #import "DoPhotoCell.h" +#define DO_RGB(r, g, b) [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:1] +#define DO_RGBA(r, g, b, a) [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:a] + +#define DO_MENU_BACK_COLOR DO_RGBA(57, 185, 238, 0.98) +#define DO_SIDE_BUTTON_COLOR DO_RGBA(57, 185, 238, 0.9) + +#define DO_ALBUM_NAME_TEXT_COLOR DO_RGB(57, 185, 238) +#define DO_ALBUM_COUNT_TEXT_COLOR DO_RGB(247, 200, 142) +#define DO_BOTTOM_TEXT_COLOR DO_RGB(255, 255, 255) + @implementation DoImagePickerController - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil @@ -76,8 +86,8 @@ - (void)handleEnterForeground:(NSNotification*)notification - (void)initControls { // side buttons - _btUp.backgroundColor = DO_SIDE_BUTTON_COLOR; - _btDown.backgroundColor = DO_SIDE_BUTTON_COLOR; + _btUp.backgroundColor = DoImagePickerController.sideButtonColor; + _btDown.backgroundColor = DoImagePickerController.sideButtonColor; CALayer *layer1 = [_btDown layer]; [layer1 setMasksToBounds:YES]; @@ -89,11 +99,11 @@ - (void)initControls // table view UIImageView *ivHeader = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, _tvAlbumList.frame.size.width, 0.5)]; - ivHeader.backgroundColor = DO_ALBUM_NAME_TEXT_COLOR; + ivHeader.backgroundColor = DoImagePickerController.albumNameSelectedTextColor; _tvAlbumList.tableHeaderView = ivHeader; UIImageView *ivFooter = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, _tvAlbumList.frame.size.width, 0.5)]; - ivFooter.backgroundColor = DO_ALBUM_NAME_TEXT_COLOR; + ivFooter.backgroundColor = DoImagePickerController.albumNameSelectedTextColor; _tvAlbumList.tableFooterView = ivFooter; // dimmed view @@ -131,9 +141,9 @@ - (void)readAlbumList:(BOOL)bFirst #pragma mark - for bottom menu - (void)initBottomMenu { - _vBottomMenu.backgroundColor = DO_MENU_BACK_COLOR; - [_btSelectAlbum setTitleColor:DO_BOTTOM_TEXT_COLOR forState:UIControlStateNormal]; - [_btSelectAlbum setTitleColor:DO_BOTTOM_TEXT_COLOR forState:UIControlStateDisabled]; + _vBottomMenu.backgroundColor = DoImagePickerController.menuBackColor; + [_btSelectAlbum setTitleColor:DoImagePickerController.bottomTextColor forState:UIControlStateNormal]; + [_btSelectAlbum setTitleColor:DoImagePickerController.bottomTextColor forState:UIControlStateDisabled]; _ivLine1.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"line.png"]]; _ivLine2.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"line.png"]]; @@ -141,7 +151,7 @@ - (void)initBottomMenu if (_nMaxCount == DO_NO_LIMIT_SELECT) { _lbSelectCount.text = @"(0)"; - _lbSelectCount.textColor = DO_BOTTOM_TEXT_COLOR; + _lbSelectCount.textColor = DoImagePickerController.bottomTextColor; } else if (_nMaxCount <= 1) { @@ -158,7 +168,7 @@ - (void)initBottomMenu else { _lbSelectCount.text = [NSString stringWithFormat:@"(0/%d)", (int)_nMaxCount]; - _lbSelectCount.textColor = DO_BOTTOM_TEXT_COLOR; + _lbSelectCount.textColor = DoImagePickerController.bottomTextColor; } } @@ -591,6 +601,33 @@ - (NSInteger)getSelectedGroupIndex:(NSArray *)aGroups return -1; } +#pragma mark - static branding + +static UIColor *_menuBackColor; +static UIColor *_sideButtonColor; +static UIColor *_albumNameSelectedTextColor; +static UIColor *_albumNameUnselectedTextColor; +static UIColor *_albumCountTextColor; +static UIColor *_bottomTextColor; + ++ (UIColor *)menuBackColor { @synchronized(self) { return _menuBackColor ? _menuBackColor : DO_MENU_BACK_COLOR; } } ++ (void)setMenuBackColor:(UIColor *)color { @synchronized(self) { _menuBackColor = color; } } + ++ (UIColor *)sideButtonColor { @synchronized(self) { return _sideButtonColor ? _sideButtonColor : DO_SIDE_BUTTON_COLOR; } } ++ (void)setSideButtonColor:(UIColor *)color { @synchronized(self) { _sideButtonColor = color; } } + ++ (UIColor *)albumNameSelectedTextColor { @synchronized(self) { return _albumNameSelectedTextColor ? _albumNameSelectedTextColor : DO_ALBUM_NAME_TEXT_COLOR; } } ++ (void)setAlbumNameSelectedTextColor:(UIColor *)color { @synchronized(self) { _albumNameSelectedTextColor = color; } } + ++ (UIColor *)albumNameUnselectedTextColor { @synchronized(self) { return _albumNameUnselectedTextColor ? _albumNameUnselectedTextColor : DO_ALBUM_NAME_TEXT_COLOR; } } ++ (void)setAlbumNameUnselectedTextColor:(UIColor *)color { @synchronized(self) { _albumNameUnselectedTextColor = color; } } + ++ (UIColor *)albumCountTextColor { @synchronized(self) { return _albumCountTextColor ? _albumCountTextColor : DO_ALBUM_COUNT_TEXT_COLOR; } } ++ (void)setAlbumCountTextColor:(UIColor *)color { @synchronized(self) { _albumCountTextColor = color; } } + ++ (UIColor *)bottomTextColor { @synchronized(self) { return _bottomTextColor ? _bottomTextColor : DO_BOTTOM_TEXT_COLOR; } } ++ (void)setBottomTextColor:(UIColor *)color { @synchronized(self) { _bottomTextColor = color; } } + #pragma mark - Others - (void)didReceiveMemoryWarning { From 31aeb4ce328b719c6aaeb51eae0799c865fc31e8 Mon Sep 17 00:00:00 2001 From: Fraser Scott-Morrison Date: Fri, 15 May 2015 16:38:11 +1200 Subject: [PATCH 2/7] Adding pod spec --- DoImagePickerController.podspec | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 DoImagePickerController.podspec diff --git a/DoImagePickerController.podspec b/DoImagePickerController.podspec new file mode 100644 index 0000000..5e4ccd8 --- /dev/null +++ b/DoImagePickerController.podspec @@ -0,0 +1,19 @@ +Pod::Spec.new do |s| + s.name = 'DoImagePickerController' + s.version = '1.0' + s.summary = 'An image picker controller with single selection and multiple selection. Support to select lots photos with panning gesture' + s.homepage = 'https://github.com/IdleHandsApps/DoImagePickerController/' + s.description = <<-DESC + DoImagePickerController is an image picker controller with single selection and multiple selection. Support to select lots photos with panning gesture + DESC + s.license = 'MIT' + s.author = { 'Fraser Scott-Morrison' => 'fraserscottmorrison@me.com' } + s.source = { :git => 'https://github.com/IdleHandsApps/DoImagePickerController.git', :tag => s.version.to_s } + s.platform = :ios, '7.0' + s.source_files = 'ImagePicker/DoImagePicker/*{h,m}' + s.public_header_files = 'ImagePicker/DoImagePicker/*.h' + s.resources = 'ImagePicker/DoImagePicker/*.{xib}' + + s.ios.deployment_target = '7.0' + s.requires_arc = true +end From 1694ae14091ff1d33092a4003b1bc87b99dbcbf3 Mon Sep 17 00:00:00 2001 From: Fraser Scott-Morrison Date: Mon, 18 May 2015 10:03:58 +1200 Subject: [PATCH 3/7] Added images to pod resources --- .gitignore | 8 +++++++ DoImagePickerController.podspec | 34 +++++++++++++-------------- ImagePicker.xcodeproj/project.pbxproj | 2 ++ ImagePicker/ImagePicker-Info.plist | 4 ++-- 4 files changed, 29 insertions(+), 19 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fe6e86c --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ + +*.xcuserstate + +*.xcscheme + +ImagePicker.xcodeproj/xcuserdata/fraser.xcuserdatad/xcschemes/xcschememanagement.plist + +*.xccheckout diff --git a/DoImagePickerController.podspec b/DoImagePickerController.podspec index 5e4ccd8..8196b0d 100644 --- a/DoImagePickerController.podspec +++ b/DoImagePickerController.podspec @@ -1,19 +1,19 @@ Pod::Spec.new do |s| - s.name = 'DoImagePickerController' - s.version = '1.0' - s.summary = 'An image picker controller with single selection and multiple selection. Support to select lots photos with panning gesture' - s.homepage = 'https://github.com/IdleHandsApps/DoImagePickerController/' - s.description = <<-DESC - DoImagePickerController is an image picker controller with single selection and multiple selection. Support to select lots photos with panning gesture - DESC - s.license = 'MIT' - s.author = { 'Fraser Scott-Morrison' => 'fraserscottmorrison@me.com' } - s.source = { :git => 'https://github.com/IdleHandsApps/DoImagePickerController.git', :tag => s.version.to_s } - s.platform = :ios, '7.0' - s.source_files = 'ImagePicker/DoImagePicker/*{h,m}' - s.public_header_files = 'ImagePicker/DoImagePicker/*.h' - s.resources = 'ImagePicker/DoImagePicker/*.{xib}' +s.name = 'DoImagePickerController' +s.version = '1.3' +s.summary = 'An image picker controller with single selection and multiple selection. Support to select lots photos with panning gesture' +s.homepage = 'https://github.com/IdleHandsApps/DoImagePickerController/' +s.description = <<-DESC +DoImagePickerController is an image picker controller with single selection and multiple selection. Support to select lots photos with panning gesture +DESC +s.license = 'MIT' +s.author = { 'Fraser Scott-Morrison' => 'fraserscottmorrison@me.com' } +s.source = { :git => 'https://github.com/IdleHandsApps/DoImagePickerController.git', :tag => s.version.to_s } +s.platform = :ios, '7.0' +s.source_files = "DoImagePicker", "ImagePicker/DoImagePicker/*.{h,m}" +s.public_header_files = 'ImagePicker/DoImagePicker/*.h' +s.resources = ["Resources/Images/*.png","ImagePicker/DoImagePicker/*.xib"] - s.ios.deployment_target = '7.0' - s.requires_arc = true -end +s.ios.deployment_target = '7.0' +s.requires_arc = true +end \ No newline at end of file diff --git a/ImagePicker.xcodeproj/project.pbxproj b/ImagePicker.xcodeproj/project.pbxproj index 929e42b..f9a6fb5 100644 --- a/ImagePicker.xcodeproj/project.pbxproj +++ b/ImagePicker.xcodeproj/project.pbxproj @@ -53,6 +53,7 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 4CCA82E61B0946F200CA4365 /* DoImagePickerController.podspec */ = {isa = PBXFileReference; lastKnownFileType = text; path = DoImagePickerController.podspec; sourceTree = SOURCE_ROOT; }; 731D67C918A087A5002BAEF6 /* line@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "line@2x.png"; sourceTree = ""; }; 731D67CC18A0D066002BAEF6 /* show.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = show.png; sourceTree = ""; }; 731D67CD18A0D066002BAEF6 /* show@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "show@2x.png"; sourceTree = ""; }; @@ -171,6 +172,7 @@ 73238CF11890AAC60047DDA0 /* Supporting Files */ = { isa = PBXGroup; children = ( + 4CCA82E61B0946F200CA4365 /* DoImagePickerController.podspec */, 73238CF21890AAC60047DDA0 /* ImagePicker-Info.plist */, 73238CF31890AAC60047DDA0 /* InfoPlist.strings */, 73238CF61890AAC60047DDA0 /* main.m */, diff --git a/ImagePicker/ImagePicker-Info.plist b/ImagePicker/ImagePicker-Info.plist index cae8184..00799cb 100644 --- a/ImagePicker/ImagePicker-Info.plist +++ b/ImagePicker/ImagePicker-Info.plist @@ -17,11 +17,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.0 + 1.3 CFBundleSignature ???? CFBundleVersion - 1.0 + 1.3 LSRequiresIPhoneOS UIMainStoryboardFile From 6d874bb362ed0451af529c345ba1ca7da147fe1c Mon Sep 17 00:00:00 2001 From: Fraser Scott-Morrison Date: Tue, 28 Jun 2016 09:12:50 +1200 Subject: [PATCH 4/7] Added resource bundle --- DoImagePickerController.podspec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DoImagePickerController.podspec b/DoImagePickerController.podspec index 8196b0d..32c1e39 100644 --- a/DoImagePickerController.podspec +++ b/DoImagePickerController.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'DoImagePickerController' -s.version = '1.3' +s.version = '1.4' s.summary = 'An image picker controller with single selection and multiple selection. Support to select lots photos with panning gesture' s.homepage = 'https://github.com/IdleHandsApps/DoImagePickerController/' s.description = <<-DESC @@ -12,7 +12,7 @@ s.source = { :git => 'https://github.com/IdleHandsApps/DoImagePickerCo s.platform = :ios, '7.0' s.source_files = "DoImagePicker", "ImagePicker/DoImagePicker/*.{h,m}" s.public_header_files = 'ImagePicker/DoImagePicker/*.h' -s.resources = ["Resources/Images/*.png","ImagePicker/DoImagePicker/*.xib"] +s.resource_bundles = { 'DoImagePickerBundle' => ["Resources/Images/*.png","ImagePicker/DoImagePicker/*.xib"] } s.ios.deployment_target = '7.0' s.requires_arc = true From 7ccf699d248aff633f948b42c261bfa998501e91 Mon Sep 17 00:00:00 2001 From: Fraser Scott-Morrison Date: Tue, 28 Jun 2016 09:14:11 +1200 Subject: [PATCH 5/7] bumping version to 1.4 --- ImagePicker/ImagePicker-Info.plist | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ImagePicker/ImagePicker-Info.plist b/ImagePicker/ImagePicker-Info.plist index 00799cb..9539123 100644 --- a/ImagePicker/ImagePicker-Info.plist +++ b/ImagePicker/ImagePicker-Info.plist @@ -17,11 +17,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.3 + 1.4 CFBundleSignature ???? CFBundleVersion - 1.3 + 1.4 LSRequiresIPhoneOS UIMainStoryboardFile From 2245c553731f8a7b7f336e4b17de13a76a06241c Mon Sep 17 00:00:00 2001 From: Fraser Scott-Morrison Date: Tue, 28 Jun 2016 10:01:20 +1200 Subject: [PATCH 6/7] Moved resources to a module. 1.5 --- DoImagePickerController.podspec | 4 +- .../project.pbxproj | 74 +++++++------- .../contents.xcworkspacedata | 2 +- .../xcshareddata/ImagePicker.xccheckout | 41 -------- .../UserInterfaceState.xcuserstate | Bin 34141 -> 0 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 23 ----- .../xcschemes/ImagePicker.xcscheme | 96 ------------------ .../xcschemes/xcschememanagement.plist | 27 ----- ImagePicker/Base.lproj/Main.storyboard | 14 +-- ImagePicker/DoImagePicker/DoAlbumCell.xib | 9 +- .../DoImagePicker/DoImagePickerController.xib | 10 +- ImagePicker/DoImagePicker/DoPhotoCell.xib | 7 +- ...ist => DoImagePickerController-Info.plist} | 4 +- ...pch => DoImagePickerController-Prefix.pch} | 0 .../AppIcon.appiconset/Contents.json | 15 +++ ...> DoImagePickerControllerTests-Info.plist} | 0 16 files changed, 76 insertions(+), 250 deletions(-) rename {ImagePicker.xcodeproj => DoImagePickerController.xcodeproj}/project.pbxproj (89%) rename {ImagePicker.xcodeproj => DoImagePickerController.xcodeproj}/project.xcworkspace/contents.xcworkspacedata (50%) delete mode 100644 ImagePicker.xcodeproj/project.xcworkspace/xcshareddata/ImagePicker.xccheckout delete mode 100644 ImagePicker.xcodeproj/project.xcworkspace/xcuserdata/seungbocho.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 ImagePicker.xcodeproj/xcuserdata/seungbocho.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist delete mode 100644 ImagePicker.xcodeproj/xcuserdata/seungbocho.xcuserdatad/xcschemes/ImagePicker.xcscheme delete mode 100644 ImagePicker.xcodeproj/xcuserdata/seungbocho.xcuserdatad/xcschemes/xcschememanagement.plist rename ImagePicker/{ImagePicker-Info.plist => DoImagePickerController-Info.plist} (96%) rename ImagePicker/{ImagePicker-Prefix.pch => DoImagePickerController-Prefix.pch} (100%) rename ImagePickerTests/{ImagePickerTests-Info.plist => DoImagePickerControllerTests-Info.plist} (100%) diff --git a/DoImagePickerController.podspec b/DoImagePickerController.podspec index 32c1e39..40a8c53 100644 --- a/DoImagePickerController.podspec +++ b/DoImagePickerController.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'DoImagePickerController' -s.version = '1.4' +s.version = '1.5' s.summary = 'An image picker controller with single selection and multiple selection. Support to select lots photos with panning gesture' s.homepage = 'https://github.com/IdleHandsApps/DoImagePickerController/' s.description = <<-DESC @@ -12,7 +12,7 @@ s.source = { :git => 'https://github.com/IdleHandsApps/DoImagePickerCo s.platform = :ios, '7.0' s.source_files = "DoImagePicker", "ImagePicker/DoImagePicker/*.{h,m}" s.public_header_files = 'ImagePicker/DoImagePicker/*.h' -s.resource_bundles = { 'DoImagePickerBundle' => ["Resources/Images/*.png","ImagePicker/DoImagePicker/*.xib"] } +s.resource_bundles = { 'DoImagePickerController' => ["Resources/Images/*.png","ImagePicker/DoImagePicker/*.xib"] } s.ios.deployment_target = '7.0' s.requires_arc = true diff --git a/ImagePicker.xcodeproj/project.pbxproj b/DoImagePickerController.xcodeproj/project.pbxproj similarity index 89% rename from ImagePicker.xcodeproj/project.pbxproj rename to DoImagePickerController.xcodeproj/project.pbxproj index f9a6fb5..138c903 100644 --- a/ImagePicker.xcodeproj/project.pbxproj +++ b/DoImagePickerController.xcodeproj/project.pbxproj @@ -57,23 +57,23 @@ 731D67C918A087A5002BAEF6 /* line@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "line@2x.png"; sourceTree = ""; }; 731D67CC18A0D066002BAEF6 /* show.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = show.png; sourceTree = ""; }; 731D67CD18A0D066002BAEF6 /* show@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "show@2x.png"; sourceTree = ""; }; - 73238CE71890AAC60047DDA0 /* ImagePicker.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ImagePicker.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 73238CE71890AAC60047DDA0 /* DoImagePickerController.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DoImagePickerController.app; sourceTree = BUILT_PRODUCTS_DIR; }; 73238CEA1890AAC60047DDA0 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 73238CEC1890AAC60047DDA0 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 73238CEE1890AAC60047DDA0 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - 73238CF21890AAC60047DDA0 /* ImagePicker-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "ImagePicker-Info.plist"; sourceTree = ""; }; + 73238CF21890AAC60047DDA0 /* DoImagePickerController-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "DoImagePickerController-Info.plist"; sourceTree = ""; }; 73238CF41890AAC60047DDA0 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 73238CF61890AAC60047DDA0 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 73238CF81890AAC60047DDA0 /* ImagePicker-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ImagePicker-Prefix.pch"; sourceTree = ""; }; + 73238CF81890AAC60047DDA0 /* DoImagePickerController-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "DoImagePickerController-Prefix.pch"; sourceTree = ""; }; 73238CF91890AAC60047DDA0 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 73238CFA1890AAC60047DDA0 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 73238CFD1890AAC60047DDA0 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 73238CFF1890AAC60047DDA0 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; 73238D001890AAC60047DDA0 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; 73238D021890AAC70047DDA0 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; - 73238D081890AAC70047DDA0 /* ImagePickerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ImagePickerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 73238D081890AAC70047DDA0 /* DoImagePickerController.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DoImagePickerController.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 73238D091890AAC70047DDA0 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; - 73238D111890AAC70047DDA0 /* ImagePickerTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "ImagePickerTests-Info.plist"; sourceTree = ""; }; + 73238D111890AAC70047DDA0 /* DoImagePickerControllerTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "DoImagePickerControllerTests-Info.plist"; sourceTree = ""; }; 73238D131890AAC70047DDA0 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 73238D151890AAC70047DDA0 /* ImagePickerTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ImagePickerTests.m; sourceTree = ""; }; 73238D201890AD4B0047DDA0 /* DoImagePickerController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DoImagePickerController.h; sourceTree = ""; }; @@ -135,8 +135,8 @@ 73238CE81890AAC60047DDA0 /* Products */ = { isa = PBXGroup; children = ( - 73238CE71890AAC60047DDA0 /* ImagePicker.app */, - 73238D081890AAC70047DDA0 /* ImagePickerTests.xctest */, + 73238CE71890AAC60047DDA0 /* DoImagePickerController.app */, + 73238D081890AAC70047DDA0 /* DoImagePickerController.xctest */, ); name = Products; sourceTree = ""; @@ -173,10 +173,10 @@ isa = PBXGroup; children = ( 4CCA82E61B0946F200CA4365 /* DoImagePickerController.podspec */, - 73238CF21890AAC60047DDA0 /* ImagePicker-Info.plist */, + 73238CF21890AAC60047DDA0 /* DoImagePickerController-Info.plist */, 73238CF31890AAC60047DDA0 /* InfoPlist.strings */, 73238CF61890AAC60047DDA0 /* main.m */, - 73238CF81890AAC60047DDA0 /* ImagePicker-Prefix.pch */, + 73238CF81890AAC60047DDA0 /* DoImagePickerController-Prefix.pch */, ); name = "Supporting Files"; sourceTree = ""; @@ -193,7 +193,7 @@ 73238D101890AAC70047DDA0 /* Supporting Files */ = { isa = PBXGroup; children = ( - 73238D111890AAC70047DDA0 /* ImagePickerTests-Info.plist */, + 73238D111890AAC70047DDA0 /* DoImagePickerControllerTests-Info.plist */, 73238D121890AAC70047DDA0 /* InfoPlist.strings */, ); name = "Supporting Files"; @@ -247,9 +247,9 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - 73238CE61890AAC60047DDA0 /* ImagePicker */ = { + 73238CE61890AAC60047DDA0 /* DoImagePickerController */ = { isa = PBXNativeTarget; - buildConfigurationList = 73238D191890AAC70047DDA0 /* Build configuration list for PBXNativeTarget "ImagePicker" */; + buildConfigurationList = 73238D191890AAC70047DDA0 /* Build configuration list for PBXNativeTarget "DoImagePickerController" */; buildPhases = ( 73238CE31890AAC60047DDA0 /* Sources */, 73238CE41890AAC60047DDA0 /* Frameworks */, @@ -259,14 +259,14 @@ ); dependencies = ( ); - name = ImagePicker; + name = DoImagePickerController; productName = ImagePicker; - productReference = 73238CE71890AAC60047DDA0 /* ImagePicker.app */; + productReference = 73238CE71890AAC60047DDA0 /* DoImagePickerController.app */; productType = "com.apple.product-type.application"; }; - 73238D071890AAC70047DDA0 /* ImagePickerTests */ = { + 73238D071890AAC70047DDA0 /* DoImagePickerControllerTests */ = { isa = PBXNativeTarget; - buildConfigurationList = 73238D1C1890AAC70047DDA0 /* Build configuration list for PBXNativeTarget "ImagePickerTests" */; + buildConfigurationList = 73238D1C1890AAC70047DDA0 /* Build configuration list for PBXNativeTarget "DoImagePickerControllerTests" */; buildPhases = ( 73238D041890AAC70047DDA0 /* Sources */, 73238D051890AAC70047DDA0 /* Frameworks */, @@ -277,9 +277,9 @@ dependencies = ( 73238D0E1890AAC70047DDA0 /* PBXTargetDependency */, ); - name = ImagePickerTests; + name = DoImagePickerControllerTests; productName = ImagePickerTests; - productReference = 73238D081890AAC70047DDA0 /* ImagePickerTests.xctest */; + productReference = 73238D081890AAC70047DDA0 /* DoImagePickerController.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; /* End PBXNativeTarget section */ @@ -299,7 +299,7 @@ }; }; }; - buildConfigurationList = 73238CE21890AAC60047DDA0 /* Build configuration list for PBXProject "ImagePicker" */; + buildConfigurationList = 73238CE21890AAC60047DDA0 /* Build configuration list for PBXProject "DoImagePickerController" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = English; hasScannedForEncodings = 0; @@ -312,8 +312,8 @@ projectDirPath = ""; projectRoot = ""; targets = ( - 73238CE61890AAC60047DDA0 /* ImagePicker */, - 73238D071890AAC70047DDA0 /* ImagePickerTests */, + 73238CE61890AAC60047DDA0 /* DoImagePickerController */, + 73238D071890AAC70047DDA0 /* DoImagePickerControllerTests */, ); }; /* End PBXProject section */ @@ -382,7 +382,7 @@ /* Begin PBXTargetDependency section */ 73238D0E1890AAC70047DDA0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 73238CE61890AAC60047DDA0 /* ImagePicker */; + target = 73238CE61890AAC60047DDA0 /* DoImagePickerController */; targetProxy = 73238D0D1890AAC70047DDA0 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ @@ -495,9 +495,9 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "ImagePicker/ImagePicker-Prefix.pch"; - INFOPLIST_FILE = "ImagePicker/ImagePicker-Info.plist"; - PRODUCT_NAME = "$(TARGET_NAME)"; + GCC_PREFIX_HEADER = "ImagePicker/DoImagePickerController-Prefix.pch"; + INFOPLIST_FILE = "ImagePicker/DoImagePickerController-Info.plist"; + PRODUCT_NAME = DoImagePickerController; PROVISIONING_PROFILE = ""; WRAPPER_EXTENSION = app; }; @@ -511,9 +511,9 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "ImagePicker/ImagePicker-Prefix.pch"; - INFOPLIST_FILE = "ImagePicker/ImagePicker-Info.plist"; - PRODUCT_NAME = "$(TARGET_NAME)"; + GCC_PREFIX_HEADER = "ImagePicker/DoImagePickerController-Prefix.pch"; + INFOPLIST_FILE = "ImagePicker/DoImagePickerController-Info.plist"; + PRODUCT_NAME = DoImagePickerController; PROVISIONING_PROFILE = ""; WRAPPER_EXTENSION = app; }; @@ -530,13 +530,13 @@ "$(DEVELOPER_FRAMEWORKS_DIR)", ); GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "ImagePicker/ImagePicker-Prefix.pch"; + GCC_PREFIX_HEADER = "ImagePicker/DoImagePickerController-Prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", "$(inherited)", ); - INFOPLIST_FILE = "ImagePickerTests/ImagePickerTests-Info.plist"; - PRODUCT_NAME = "$(TARGET_NAME)"; + INFOPLIST_FILE = "ImagePickerTests/DoImagePickerControllerTests-Info.plist"; + PRODUCT_NAME = DoImagePickerController; TEST_HOST = "$(BUNDLE_LOADER)"; WRAPPER_EXTENSION = xctest; }; @@ -553,9 +553,9 @@ "$(DEVELOPER_FRAMEWORKS_DIR)", ); GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "ImagePicker/ImagePicker-Prefix.pch"; - INFOPLIST_FILE = "ImagePickerTests/ImagePickerTests-Info.plist"; - PRODUCT_NAME = "$(TARGET_NAME)"; + GCC_PREFIX_HEADER = "ImagePicker/DoImagePickerController-Prefix.pch"; + INFOPLIST_FILE = "ImagePickerTests/DoImagePickerControllerTests-Info.plist"; + PRODUCT_NAME = DoImagePickerController; TEST_HOST = "$(BUNDLE_LOADER)"; WRAPPER_EXTENSION = xctest; }; @@ -564,7 +564,7 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 73238CE21890AAC60047DDA0 /* Build configuration list for PBXProject "ImagePicker" */ = { + 73238CE21890AAC60047DDA0 /* Build configuration list for PBXProject "DoImagePickerController" */ = { isa = XCConfigurationList; buildConfigurations = ( 73238D171890AAC70047DDA0 /* Debug */, @@ -573,7 +573,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 73238D191890AAC70047DDA0 /* Build configuration list for PBXNativeTarget "ImagePicker" */ = { + 73238D191890AAC70047DDA0 /* Build configuration list for PBXNativeTarget "DoImagePickerController" */ = { isa = XCConfigurationList; buildConfigurations = ( 73238D1A1890AAC70047DDA0 /* Debug */, @@ -582,7 +582,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 73238D1C1890AAC70047DDA0 /* Build configuration list for PBXNativeTarget "ImagePickerTests" */ = { + 73238D1C1890AAC70047DDA0 /* Build configuration list for PBXNativeTarget "DoImagePickerControllerTests" */ = { isa = XCConfigurationList; buildConfigurations = ( 73238D1D1890AAC70047DDA0 /* Debug */, diff --git a/ImagePicker.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/DoImagePickerController.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 50% rename from ImagePicker.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to DoImagePickerController.xcodeproj/project.xcworkspace/contents.xcworkspacedata index 0c09ee9..f84c122 100644 --- a/ImagePicker.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/DoImagePickerController.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -2,6 +2,6 @@ + location = "self:/Users/fraser/Documents/DoImagePickerController/DoImagePickerController.xcodeproj"> diff --git a/ImagePicker.xcodeproj/project.xcworkspace/xcshareddata/ImagePicker.xccheckout b/ImagePicker.xcodeproj/project.xcworkspace/xcshareddata/ImagePicker.xccheckout deleted file mode 100644 index 193f368..0000000 --- a/ImagePicker.xcodeproj/project.xcworkspace/xcshareddata/ImagePicker.xccheckout +++ /dev/null @@ -1,41 +0,0 @@ - - - - - IDESourceControlProjectFavoriteDictionaryKey - - IDESourceControlProjectIdentifier - 663A9C6B-1B3F-41E1-A66F-AC4A2E8DA8C6 - IDESourceControlProjectName - ImagePicker - IDESourceControlProjectOriginsDictionary - - 53914F7A-695E-460E-A681-C2F69F56103D - https://github.com/donobono/DoImagePickerController.git - - IDESourceControlProjectPath - ImagePicker.xcodeproj/project.xcworkspace - IDESourceControlProjectRelativeInstallPathDictionary - - 53914F7A-695E-460E-A681-C2F69F56103D - ../.. - - IDESourceControlProjectURL - https://github.com/donobono/DoImagePickerController.git - IDESourceControlProjectVersion - 110 - IDESourceControlProjectWCCIdentifier - 53914F7A-695E-460E-A681-C2F69F56103D - IDESourceControlProjectWCConfigurations - - - IDESourceControlRepositoryExtensionIdentifierKey - public.vcs.git - IDESourceControlWCCIdentifierKey - 53914F7A-695E-460E-A681-C2F69F56103D - IDESourceControlWCCName - DoImagePickerController - - - - diff --git a/ImagePicker.xcodeproj/project.xcworkspace/xcuserdata/seungbocho.xcuserdatad/UserInterfaceState.xcuserstate b/ImagePicker.xcodeproj/project.xcworkspace/xcuserdata/seungbocho.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index a89e2e1a3e4451c234db69bcb7290d8075567b8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34141 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 Cr>!Oc diff --git a/ImagePicker.xcodeproj/xcuserdata/seungbocho.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/ImagePicker.xcodeproj/xcuserdata/seungbocho.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist deleted file mode 100644 index f967fd7..0000000 --- a/ImagePicker.xcodeproj/xcuserdata/seungbocho.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - diff --git a/ImagePicker.xcodeproj/xcuserdata/seungbocho.xcuserdatad/xcschemes/ImagePicker.xcscheme b/ImagePicker.xcodeproj/xcuserdata/seungbocho.xcuserdatad/xcschemes/ImagePicker.xcscheme deleted file mode 100644 index d6c3ded..0000000 --- a/ImagePicker.xcodeproj/xcuserdata/seungbocho.xcuserdatad/xcschemes/ImagePicker.xcscheme +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ImagePicker.xcodeproj/xcuserdata/seungbocho.xcuserdatad/xcschemes/xcschememanagement.plist b/ImagePicker.xcodeproj/xcuserdata/seungbocho.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index f1a5c83..0000000 --- a/ImagePicker.xcodeproj/xcuserdata/seungbocho.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,27 +0,0 @@ - - - - - SchemeUserState - - ImagePicker.xcscheme - - orderHint - 0 - - - SuppressBuildableAutocreation - - 73238CE61890AAC60047DDA0 - - primary - - - 73238D071890AAC70047DDA0 - - primary - - - - - diff --git a/ImagePicker/Base.lproj/Main.storyboard b/ImagePicker/Base.lproj/Main.storyboard index 6ddda3d..33bb3db 100644 --- a/ImagePicker/Base.lproj/Main.storyboard +++ b/ImagePicker/Base.lproj/Main.storyboard @@ -1,13 +1,14 @@ - + - + + - + @@ -93,9 +94,4 @@ - - - - - - \ No newline at end of file + diff --git a/ImagePicker/DoImagePicker/DoAlbumCell.xib b/ImagePicker/DoImagePicker/DoAlbumCell.xib index a613b07..872c7e0 100644 --- a/ImagePicker/DoImagePicker/DoAlbumCell.xib +++ b/ImagePicker/DoImagePicker/DoAlbumCell.xib @@ -1,12 +1,13 @@ - + - + + - + @@ -35,4 +36,4 @@ - \ No newline at end of file + diff --git a/ImagePicker/DoImagePicker/DoImagePickerController.xib b/ImagePicker/DoImagePicker/DoImagePickerController.xib index 7480eb9..9376454 100644 --- a/ImagePicker/DoImagePicker/DoImagePickerController.xib +++ b/ImagePicker/DoImagePicker/DoImagePickerController.xib @@ -1,10 +1,11 @@ - + - + + - + @@ -127,7 +128,7 @@ - + @@ -139,7 +140,6 @@ - diff --git a/ImagePicker/DoImagePicker/DoPhotoCell.xib b/ImagePicker/DoImagePicker/DoPhotoCell.xib index 45f133a..c33229d 100644 --- a/ImagePicker/DoImagePicker/DoPhotoCell.xib +++ b/ImagePicker/DoImagePicker/DoPhotoCell.xib @@ -1,12 +1,13 @@ - + - + + - + diff --git a/ImagePicker/ImagePicker-Info.plist b/ImagePicker/DoImagePickerController-Info.plist similarity index 96% rename from ImagePicker/ImagePicker-Info.plist rename to ImagePicker/DoImagePickerController-Info.plist index 9539123..04e6743 100644 --- a/ImagePicker/ImagePicker-Info.plist +++ b/ImagePicker/DoImagePickerController-Info.plist @@ -17,11 +17,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.4 + 1.5 CFBundleSignature ???? CFBundleVersion - 1.4 + 1.5 LSRequiresIPhoneOS UIMainStoryboardFile diff --git a/ImagePicker/ImagePicker-Prefix.pch b/ImagePicker/DoImagePickerController-Prefix.pch similarity index 100% rename from ImagePicker/ImagePicker-Prefix.pch rename to ImagePicker/DoImagePickerController-Prefix.pch diff --git a/ImagePicker/Images.xcassets/AppIcon.appiconset/Contents.json b/ImagePicker/Images.xcassets/AppIcon.appiconset/Contents.json index a396706..118c98f 100644 --- a/ImagePicker/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/ImagePicker/Images.xcassets/AppIcon.appiconset/Contents.json @@ -5,15 +5,30 @@ "size" : "29x29", "scale" : "2x" }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, { "idiom" : "iphone", "size" : "40x40", "scale" : "2x" }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, { "idiom" : "iphone", "size" : "60x60", "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" } ], "info" : { diff --git a/ImagePickerTests/ImagePickerTests-Info.plist b/ImagePickerTests/DoImagePickerControllerTests-Info.plist similarity index 100% rename from ImagePickerTests/ImagePickerTests-Info.plist rename to ImagePickerTests/DoImagePickerControllerTests-Info.plist From 599db89bfa73576d551c6ca0a469d7b118feb90d Mon Sep 17 00:00:00 2001 From: Fraser Scott-Morrison Date: Tue, 28 Jun 2016 14:57:19 +1200 Subject: [PATCH 7/7] All working for resource bundles. 1.6 --- DoImagePickerController.podspec | 2 +- ImagePicker/DoImagePicker/DoAlbumCell.xib | 2 +- .../DoImagePicker/DoImagePickerController.m | 134 +++++++++--------- .../DoImagePicker/DoImagePickerController.xib | 2 +- ImagePicker/DoImagePicker/DoPhotoCell.xib | 2 +- .../DoImagePickerController-Info.plist | 4 +- 6 files changed, 76 insertions(+), 70 deletions(-) diff --git a/DoImagePickerController.podspec b/DoImagePickerController.podspec index 40a8c53..8969f20 100644 --- a/DoImagePickerController.podspec +++ b/DoImagePickerController.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'DoImagePickerController' -s.version = '1.5' +s.version = '1.6' s.summary = 'An image picker controller with single selection and multiple selection. Support to select lots photos with panning gesture' s.homepage = 'https://github.com/IdleHandsApps/DoImagePickerController/' s.description = <<-DESC diff --git a/ImagePicker/DoImagePicker/DoAlbumCell.xib b/ImagePicker/DoImagePicker/DoAlbumCell.xib index 872c7e0..0d5987e 100644 --- a/ImagePicker/DoImagePicker/DoAlbumCell.xib +++ b/ImagePicker/DoImagePicker/DoAlbumCell.xib @@ -7,7 +7,7 @@ - + diff --git a/ImagePicker/DoImagePicker/DoImagePickerController.m b/ImagePicker/DoImagePicker/DoImagePickerController.m index 11a6cb9..2830e32 100644 --- a/ImagePicker/DoImagePicker/DoImagePickerController.m +++ b/ImagePicker/DoImagePicker/DoImagePickerController.m @@ -39,24 +39,27 @@ - (void)viewDidLoad [self initBottomMenu]; [self initControls]; - UINib *nib = [UINib nibWithNibName:@"DoPhotoCell" bundle:nil]; + NSBundle *podBundle = [NSBundle bundleForClass:DoPhotoCell.classForCoder]; + NSURL *bundleUrl = [podBundle URLForResource:@"DoImagePickerController" withExtension:@"bundle"]; + NSBundle *bundle = [NSBundle bundleWithURL:bundleUrl]; + UINib *nib = [UINib nibWithNibName:@"DoPhotoCell" bundle:bundle]; [_cvPhotoList registerNib:nib forCellWithReuseIdentifier:@"DoPhotoCell"]; _tvAlbumList.frame = CGRectMake(0, _vBottomMenu.frame.origin.y, self.view.frame.size.width, self.view.frame.size.height); _tvAlbumList.alpha = 0.0; - + [self readAlbumList:YES]; - + // new photo is located at the first of array ASSETHELPER.bReverse = YES; - - if (_nMaxCount != 1) - { - // init gesture for multiple selection with panning - UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(onPanForSelection:)]; - [self.view addGestureRecognizer:pan]; - } - + + if (_nMaxCount != 1) + { + // init gesture for multiple selection with panning + UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(onPanForSelection:)]; + [self.view addGestureRecognizer:pan]; + } + // init gesture for preview UILongPressGestureRecognizer *longTap = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(onLongTapForPreview:)]; longTap.minimumPressDuration = 0.3; @@ -74,7 +77,7 @@ - (void)viewDidDisappear:(BOOL)animated if (_nResultType == DO_PICKER_RESULT_UIIMAGE) [ASSETHELPER clearData]; - [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationWillEnterForegroundNotification object:nil]; + [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationWillEnterForegroundNotification object:nil]; } - (void)handleEnterForeground:(NSNotification*)notification @@ -90,12 +93,12 @@ - (void)initControls _btDown.backgroundColor = DoImagePickerController.sideButtonColor; CALayer *layer1 = [_btDown layer]; - [layer1 setMasksToBounds:YES]; - [layer1 setCornerRadius:_btDown.frame.size.height / 2.0 - 1]; + [layer1 setMasksToBounds:YES]; + [layer1 setCornerRadius:_btDown.frame.size.height / 2.0 - 1]; CALayer *layer2 = [_btUp layer]; - [layer2 setMasksToBounds:YES]; - [layer2 setCornerRadius:_btUp.frame.size.height / 2.0 - 1]; + [layer2 setMasksToBounds:YES]; + [layer2 setCornerRadius:_btUp.frame.size.height / 2.0 - 1]; // table view UIImageView *ivHeader = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, _tvAlbumList.frame.size.width, 0.5)]; @@ -118,7 +121,7 @@ - (void)readAlbumList:(BOOL)bFirst [ASSETHELPER getGroupList:^(NSArray *aGroups) { [_tvAlbumList reloadData]; - + NSInteger nIndex = 0; #ifdef DO_SAVE_SELECTED_ALBUM nIndex = [self getSelectedGroupIndex:aGroups]; @@ -176,7 +179,7 @@ - (IBAction)onSelectPhoto:(id)sender { NSMutableArray *aResult = [[NSMutableArray alloc] initWithCapacity:_dSelected.count]; NSArray *aKeys = [_dSelected keysSortedByValueUsingSelector:@selector(compare:)]; - + if (_nResultType == DO_PICKER_RESULT_UIIMAGE) { for (int i = 0; i < _dSelected.count; i++) @@ -191,7 +194,7 @@ - (IBAction)onSelectPhoto:(id)sender for (int i = 0; i < _dSelected.count; i++) [aResult addObject:[ASSETHELPER getAssetAtIndex:[aKeys[i] integerValue]]]; } - + [_delegate didSelectPhotosFromDoImagePickerController:self result:aResult]; } @@ -206,9 +209,9 @@ - (IBAction)onSelectAlbum:(id)sender { // show tableview [UIView animateWithDuration:0.2 animations:^(void) { - + _vDimmed.alpha = 0.7; - + _tvAlbumList.frame = CGRectMake(0, _vBottomMenu.frame.origin.y - _tvAlbumList.frame.size.height, _tvAlbumList.frame.size.width, _tvAlbumList.frame.size.height); _tvAlbumList.alpha = 1.0; @@ -257,9 +260,12 @@ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(N if (cell == nil) { - cell = [[[NSBundle mainBundle] loadNibNamed:@"DoAlbumCell" owner:nil options:nil] lastObject]; + NSBundle *podBundle = [NSBundle bundleForClass:DoAlbumCell.classForCoder]; + NSURL *bundleUrl = [podBundle URLForResource:@"DoImagePickerController" withExtension:@"bundle"]; + NSBundle *bundle = [NSBundle bundleWithURL:bundleUrl]; + cell = [[bundle loadNibNamed:@"DoAlbumCell" owner:nil options:nil] lastObject]; } - + NSDictionary *d = [ASSETHELPER getGroupInfo:indexPath.row]; cell.lbAlbumName.text = d[@"name"]; cell.lbCount.text = [NSString stringWithFormat:@"%@", d[@"count"]]; @@ -271,7 +277,7 @@ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath { [self showPhotosInGroup:indexPath.row]; [_btSelectAlbum setTitle:[ASSETHELPER getGroupInfo:indexPath.row][@"name"] forState:UIControlStateNormal]; - + [self hideBottomMenu]; } @@ -285,7 +291,7 @@ - (void)hideBottomMenu _ivShowMark.transform = CGAffineTransformMakeRotation(0); [UIView setAnimationDelay:0.1]; - + _tvAlbumList.alpha = 0.0; }]; } @@ -299,18 +305,18 @@ - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSe - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { DoPhotoCell *cell = (DoPhotoCell *)[_cvPhotoList dequeueReusableCellWithReuseIdentifier:@"DoPhotoCell" forIndexPath:indexPath]; - + if (_nColumnCount == 4) cell.ivPhoto.image = [ASSETHELPER getImageAtIndex:indexPath.row type:ASSET_PHOTO_THUMBNAIL]; else cell.ivPhoto.image = [ASSETHELPER getImageAtIndex:indexPath.row type:ASSET_PHOTO_ASPECT_THUMBNAIL]; - - if (_dSelected[@(indexPath.row)] == nil) - [cell setSelectMode:NO]; + + if (_dSelected[@(indexPath.row)] == nil) + [cell setSelectMode:NO]; else - [cell setSelectMode:YES]; - + [cell setSelectMode:YES]; + return cell; } @@ -318,20 +324,20 @@ - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPa { if (_nMaxCount > 1 || _nMaxCount == DO_NO_LIMIT_SELECT) { - DoPhotoCell *cell = (DoPhotoCell *)[collectionView cellForItemAtIndexPath:indexPath]; + DoPhotoCell *cell = (DoPhotoCell *)[collectionView cellForItemAtIndexPath:indexPath]; - if ((_dSelected[@(indexPath.row)] == nil) && (_nMaxCount > _dSelected.count)) - { - // select - _dSelected[@(indexPath.row)] = @(_dSelected.count); - [cell setSelectMode:YES]; - } - else - { - // unselect - [_dSelected removeObjectForKey:@(indexPath.row)]; - [cell setSelectMode:NO]; - } + if ((_dSelected[@(indexPath.row)] == nil) && (_nMaxCount > _dSelected.count)) + { + // select + _dSelected[@(indexPath.row)] = @(_dSelected.count); + [cell setSelectMode:YES]; + } + else + { + // unselect + [_dSelected removeObjectForKey:@(indexPath.row)]; + [cell setSelectMode:NO]; + } if (_nMaxCount == DO_NO_LIMIT_SELECT) _lbSelectCount.text = [NSString stringWithFormat:@"(%d)", (int)_dSelected.count]; @@ -355,7 +361,7 @@ - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollection return CGSizeMake(104, 104); else if (_nColumnCount == 4) return CGSizeMake(77, 77); - + return CGSizeZero; } @@ -385,9 +391,9 @@ - (void)onPanForSelection:(UIPanGestureRecognizer *)gestureRecognizer double fX = [gestureRecognizer locationInView:_cvPhotoList].x; double fY = [gestureRecognizer locationInView:_cvPhotoList].y; - + for (UICollectionViewCell *cell in _cvPhotoList.visibleCells) - { + { float fSX = cell.frame.origin.x; float fEX = cell.frame.origin.x + cell.frame.size.width; float fSY = cell.frame.origin.y; @@ -399,7 +405,7 @@ - (void)onPanForSelection:(UIPanGestureRecognizer *)gestureRecognizer if (_lastAccessed != indexPath) { - [self collectionView:_cvPhotoList didSelectItemAtIndexPath:indexPath]; + [self collectionView:_cvPhotoList didSelectItemAtIndexPath:indexPath]; } _lastAccessed = indexPath; @@ -423,7 +429,7 @@ - (void)onLongTapForPreview:(UILongPressGestureRecognizer *)gestureRecognizer { double fX = [gestureRecognizer locationInView:_cvPhotoList].x; double fY = [gestureRecognizer locationInView:_cvPhotoList].y; - + // check boundary of controls CGPoint pt = [gestureRecognizer locationInView:self.view]; if (CGRectContainsPoint(_vBottomMenu.frame, pt)) @@ -477,13 +483,13 @@ - (void)showPhotosInGroup:(NSInteger)nIndex _cvPhotoList.alpha = 1.0; }]; - if (aPhotos.count > 0) - { - [_cvPhotoList scrollToItemAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UICollectionViewScrollPositionTop animated:NO]; + if (aPhotos.count > 0) + { + [_cvPhotoList scrollToItemAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UICollectionViewScrollPositionTop animated:NO]; } - + _btUp.alpha = 0.0; - + dispatch_async(dispatch_get_main_queue(), ^(void) { if (_cvPhotoList.contentSize.height < _cvPhotoList.frame.size.height) _btDown.alpha = 0.0; @@ -526,7 +532,7 @@ - (void)hidePreview [_ivPreview removeFromSuperview]; _ivPreview = nil; - + _vDimmed.alpha = 0.0; [_vDimmed removeGestureRecognizer:[_vDimmed.gestureRecognizers lastObject]]; } @@ -534,7 +540,7 @@ - (void)hidePreview - (void)onPanToClosePreview:(UIPanGestureRecognizer *)gestureRecognizer { CGPoint translation = [gestureRecognizer translationInView:self.view]; - + if (gestureRecognizer.state == UIGestureRecognizerStateEnded) { [UIView animateWithDuration:0.2 animations:^(void) { @@ -546,9 +552,9 @@ - (void)onPanToClosePreview:(UIPanGestureRecognizer *)gestureRecognizer pt.y = self.view.frame.size.height * 1.5; else if (_ivPreview.center.y < _vDimmed.center.y) pt.y = -self.view.frame.size.height * 1.5; - + _ivPreview.center = pt; - + [self hidePreview]; } else @@ -561,8 +567,8 @@ - (void)onPanToClosePreview:(UIPanGestureRecognizer *)gestureRecognizer } else { - _ivPreview.center = CGPointMake(_ivPreview.center.x, _ivPreview.center.y + translation.y); - [gestureRecognizer setTranslation:CGPointMake(0, 0) inView:self.view]; + _ivPreview.center = CGPointMake(_ivPreview.center.x, _ivPreview.center.y + translation.y); + [gestureRecognizer setTranslation:CGPointMake(0, 0) inView:self.view]; _vDimmed.alpha = 1 - ABS(_ivPreview.center.y - _vDimmed.center.y) / (self.view.frame.size.height / 2.0); } @@ -572,9 +578,9 @@ - (void)onPanToClosePreview:(UIPanGestureRecognizer *)gestureRecognizer - (void)saveSelectedGroup:(NSInteger)nIndex { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - - [defaults setObject:[[ASSETHELPER getGroupAtIndex:nIndex] valueForProperty:ALAssetsGroupPropertyName] forKey:@"DO_SELECTED_ALBUM"]; - [defaults synchronize]; + + [defaults setObject:[[ASSETHELPER getGroupAtIndex:nIndex] valueForProperty:ALAssetsGroupPropertyName] forKey:@"DO_SELECTED_ALBUM"]; + [defaults synchronize]; NSLog(@"[[ASSETHELPER getGroupAtIndex:nIndex] valueForProperty:ALAssetsGroupPropertyName] : %@", [[ASSETHELPER getGroupAtIndex:nIndex] valueForProperty:ALAssetsGroupPropertyName]); } @@ -582,7 +588,7 @@ - (void)saveSelectedGroup:(NSInteger)nIndex - (NSString *)loadSelectedGroup { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - + NSLog(@"---------> %@", [defaults objectForKey:@"DO_SELECTED_ALBUM"]); return [defaults objectForKey:@"DO_SELECTED_ALBUM"]; diff --git a/ImagePicker/DoImagePicker/DoImagePickerController.xib b/ImagePicker/DoImagePicker/DoImagePickerController.xib index 9376454..c722918 100644 --- a/ImagePicker/DoImagePicker/DoImagePickerController.xib +++ b/ImagePicker/DoImagePicker/DoImagePickerController.xib @@ -5,7 +5,7 @@ - + diff --git a/ImagePicker/DoImagePicker/DoPhotoCell.xib b/ImagePicker/DoImagePicker/DoPhotoCell.xib index c33229d..3830627 100644 --- a/ImagePicker/DoImagePicker/DoPhotoCell.xib +++ b/ImagePicker/DoImagePicker/DoPhotoCell.xib @@ -7,7 +7,7 @@ - + diff --git a/ImagePicker/DoImagePickerController-Info.plist b/ImagePicker/DoImagePickerController-Info.plist index 04e6743..72084aa 100644 --- a/ImagePicker/DoImagePickerController-Info.plist +++ b/ImagePicker/DoImagePickerController-Info.plist @@ -17,11 +17,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.5 + 1.6 CFBundleSignature ???? CFBundleVersion - 1.5 + 1.6 LSRequiresIPhoneOS UIMainStoryboardFile