From f804143fb2c3ff668fdf5a025f27c021ff9b50cf Mon Sep 17 00:00:00 2001 From: "Aox.CL" Date: Thu, 19 Jan 2017 12:33:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=9B=BE=E7=89=87=E6=BB=91?= =?UTF-8?q?=E5=8A=A8=E5=B4=A9=E6=BA=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.修复图片滑动崩溃 2.修复图片索引问题 --- SDPhotoBrowser.xcodeproj/project.pbxproj | 5 + .../UserInterfaceState.xcuserstate | Bin 0 -> 12095 bytes .../xcschemes/SDPhotoBrowser.xcscheme | 101 ++++++++++++++++++ .../xcschemes/xcschememanagement.plist | 27 +++++ .../SDPhotoBrowser/SDPhotoBrowser.m | 12 ++- 5 files changed, 141 insertions(+), 4 deletions(-) create mode 100644 SDPhotoBrowser.xcodeproj/project.xcworkspace/xcuserdata/DRAGELEC.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 SDPhotoBrowser.xcodeproj/xcuserdata/DRAGELEC.xcuserdatad/xcschemes/SDPhotoBrowser.xcscheme create mode 100644 SDPhotoBrowser.xcodeproj/xcuserdata/DRAGELEC.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/SDPhotoBrowser.xcodeproj/project.pbxproj b/SDPhotoBrowser.xcodeproj/project.pbxproj index 5c9d98d..ab31557 100755 --- a/SDPhotoBrowser.xcodeproj/project.pbxproj +++ b/SDPhotoBrowser.xcodeproj/project.pbxproj @@ -419,6 +419,9 @@ LastUpgradeCheck = 0510; ORGANIZATIONNAME = GSD; TargetAttributes = { + 9973FAAD1A824A1E0089A512 = { + DevelopmentTeam = PBXMZG3489; + }; 9973FACE1A824A1F0089A512 = { TestTargetID = 9973FAAD1A824A1E0089A512; }; @@ -615,6 +618,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; + DEVELOPMENT_TEAM = PBXMZG3489; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "SDPhotoBrowser/Others/SDPhotoBrowser-Prefix.pch"; INFOPLIST_FILE = "SDPhotoBrowser/Others/SDPhotoBrowser-Info.plist"; @@ -629,6 +633,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; + DEVELOPMENT_TEAM = PBXMZG3489; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "SDPhotoBrowser/Others/SDPhotoBrowser-Prefix.pch"; INFOPLIST_FILE = "SDPhotoBrowser/Others/SDPhotoBrowser-Info.plist"; diff --git a/SDPhotoBrowser.xcodeproj/project.xcworkspace/xcuserdata/DRAGELEC.xcuserdatad/UserInterfaceState.xcuserstate b/SDPhotoBrowser.xcodeproj/project.xcworkspace/xcuserdata/DRAGELEC.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..bd11a213b3bee7a2faf5487fc093829800f6ac48 GIT binary patch literal 12095 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 literal 0 HcmV?d00001 diff --git a/SDPhotoBrowser.xcodeproj/xcuserdata/DRAGELEC.xcuserdatad/xcschemes/SDPhotoBrowser.xcscheme b/SDPhotoBrowser.xcodeproj/xcuserdata/DRAGELEC.xcuserdatad/xcschemes/SDPhotoBrowser.xcscheme new file mode 100644 index 0000000..7a64420 --- /dev/null +++ b/SDPhotoBrowser.xcodeproj/xcuserdata/DRAGELEC.xcuserdatad/xcschemes/SDPhotoBrowser.xcscheme @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SDPhotoBrowser.xcodeproj/xcuserdata/DRAGELEC.xcuserdatad/xcschemes/xcschememanagement.plist b/SDPhotoBrowser.xcodeproj/xcuserdata/DRAGELEC.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..31b4b30 --- /dev/null +++ b/SDPhotoBrowser.xcodeproj/xcuserdata/DRAGELEC.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,27 @@ + + + + + SchemeUserState + + SDPhotoBrowser.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 9973FAAD1A824A1E0089A512 + + primary + + + 9973FACE1A824A1F0089A512 + + primary + + + + + diff --git a/SDPhotoBrowser/SDPhotoBrowser/SDPhotoBrowser.m b/SDPhotoBrowser/SDPhotoBrowser/SDPhotoBrowser.m index 1a420e2..a756a65 100755 --- a/SDPhotoBrowser/SDPhotoBrowser/SDPhotoBrowser.m +++ b/SDPhotoBrowser/SDPhotoBrowser/SDPhotoBrowser.m @@ -23,6 +23,9 @@ // ============================================= +// 防止数组越界 +#define kIndex(index) index <= _scrollView.subviews.count - 1 ? index : _scrollView.subviews.count - 1 + @implementation SDPhotoBrowser { UIScrollView *_scrollView; @@ -87,7 +90,7 @@ - (void)setupToolbars - (void)saveImage { int index = _scrollView.contentOffset.x / _scrollView.bounds.size.width; - UIImageView *currentImageView = _scrollView.subviews[index]; + UIImageView *currentImageView = _scrollView.subviews[kIndex(index)]; UIImageWriteToSavedPhotosAlbum(currentImageView.image, self, @selector(image:didFinishSavingWithError:contextInfo:), NULL); @@ -156,7 +159,7 @@ - (void)setupScrollView // 加载图片 - (void)setupImageOfImageViewForIndex:(NSInteger)index { - SDBrowserImageView *imageView = _scrollView.subviews[index]; + SDBrowserImageView *imageView = _scrollView.subviews[kIndex(index)]; self.currentImageIndex = index; if (imageView.hasLoadedImage) return; if ([self highQualityImageURLForIndex:index]) { @@ -342,7 +345,7 @@ - (void)scrollViewDidScroll:(UIScrollView *)scrollView CGFloat margin = 150; CGFloat x = scrollView.contentOffset.x; if ((x - index * self.bounds.size.width) > margin || (x - index * self.bounds.size.width) < - margin) { - SDBrowserImageView *imageView = _scrollView.subviews[index]; + SDBrowserImageView *imageView = _scrollView.subviews[kIndex(index)]; if (imageView.isScaled) { [UIView animateWithDuration:0.5 animations:^{ imageView.transform = CGAffineTransformIdentity; @@ -354,7 +357,8 @@ - (void)scrollViewDidScroll:(UIScrollView *)scrollView if (!_willDisappear) { - _indexLabel.text = [NSString stringWithFormat:@"%d/%ld", index + 1, (long)self.imageCount]; + // 当前图片索引不能超过图片数量 + _indexLabel.text = [NSString stringWithFormat:@"%d/%ld", index < _scrollView.subviews.count ? index + 1 : index, (long)self.imageCount]; } [self setupImageOfImageViewForIndex:index]; }