diff --git a/ARTiledImageView.podspec b/ARTiledImageView.podspec index 29ea19a..b5fe66d 100644 --- a/ARTiledImageView.podspec +++ b/ARTiledImageView.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "ARTiledImageView" - s.version = "1.2.0" + s.version = "1.2.2" s.summary = "Display, pan and deep zoom with tiled images." s.description = "Display, pan and deep zoom with tiled images on iOS." s.homepage = "https://github.com/dblock/ARTiledImageView" diff --git a/CHANGELOG.md b/CHANGELOG.md index 7845dd4..14370ce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.2.3 (06/27/2018) + +* Runs the thread sanitizer and addresses any non-main thread issues - (@orta)[http://github.com/orta] + ## 1.2.2 (05/11/2014) * Use code from PSTCenteredScrollView for centering when scrolling out - (@orta)[http://github.com/orta] diff --git a/Classes/ARTiledImageView.m b/Classes/ARTiledImageView.m index fe55a2d..099fd67 100644 --- a/Classes/ARTiledImageView.m +++ b/Classes/ARTiledImageView.m @@ -19,6 +19,7 @@ @interface ARTiledImageView () @property (nonatomic, assign) NSInteger maxLevelOfDetail; @property (atomic, strong, readonly) NSCache *tileCache; @property (atomic, readonly) NSMutableDictionary *downloadOperations; +@property (nonatomic, assign) CGRect threadSafeBounds; @end @implementation ARTiledImageView @@ -57,6 +58,17 @@ - (id)initWithDataSource:(NSObject *)dataSource min return self; } +- (void)setBounds:(CGRect)bounds +{ + [super setBounds:bounds]; + _threadSafeBounds = bounds; +} + +- (void)setFrame:(CGRect)frame +{ + [super setBounds:frame]; + _threadSafeBounds = self.bounds; +} - (void)drawRect:(CGRect)rect { @@ -71,8 +83,7 @@ - (void)drawRect:(CGRect)rect CGFloat _scaleX = CGContextGetCTM(context).a; CGFloat _scaleY = CGContextGetCTM(context).d; - CATiledLayer *tiledLayer = (CATiledLayer *) [self layer]; - CGSize tileSize = tiledLayer.tileSize; + CGSize tileSize = [self.dataSource tileSizeForImageView:self];; // // Even at scales lower than 100%, we are drawing into a rect in the coordinate system of the full @@ -108,8 +119,9 @@ - (void)drawRect:(CGRect)rect NSString *tileCacheKey = [NSString stringWithFormat:@"%@/%@_%@", @(level), @(col), @(row)]; ARTile *tile = [self.tileCache objectForKey:tileCacheKey]; + if (!tile) { - tileRect = CGRectIntersection(self.bounds, tileRect); + tileRect = CGRectIntersection(self.threadSafeBounds, tileRect); tile = [[ARTile alloc] initWithImage:tileImage rect:tileRect]; [self.tileCache setObject:tile forKey:tileCacheKey cost:level]; } diff --git a/Demo.xcodeproj/project.pbxproj b/Demo.xcodeproj/project.pbxproj index 93aee3f..c2d654f 100644 --- a/Demo.xcodeproj/project.pbxproj +++ b/Demo.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 062C37FA2B7A134C2CD81CE7 /* libPods-IntegrationTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BB78FF8232289E4004B5E0CC /* libPods-IntegrationTests.a */; }; 3C7F86CD18CE609200F7091A /* ARTiledImageDemoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C7F86CC18CE609200F7091A /* ARTiledImageDemoViewController.m */; }; 3CB0E6D718C8B9E2009CE8DB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3CB0E6D618C8B9E2009CE8DB /* Foundation.framework */; }; 3CB0E6D918C8B9E2009CE8DB /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3CB0E6D818C8B9E2009CE8DB /* CoreGraphics.framework */; }; @@ -35,8 +36,7 @@ 3CBB03B4192BD83800689F89 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 3CBB03AE192BD83800689F89 /* README.md */; }; 5EA9D66C199CBFF5008CF9C7 /* ARTiledImageViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 5EA9D66B199CBFF5008CF9C7 /* ARTiledImageViewTests.m */; }; 60893D66196EDFD3009C23E8 /* ARTiledImageScrollViewSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 60893D65196EDFD3009C23E8 /* ARTiledImageScrollViewSpec.m */; }; - 9C16FD7BCD284401E13005A5 /* Pods.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6EEC3904F6FF578E5A14E56A /* Pods.framework */; }; - FB1F8B2406C58436722DBE47 /* Pods_IntegrationTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03FE807228187CAE10A8B782 /* Pods_IntegrationTests.framework */; }; + F7C9DFFC886CA938469449B8 /* libPods-Demo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 279FD81F012300F376DED6AD /* libPods-Demo.a */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -50,7 +50,8 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 03FE807228187CAE10A8B782 /* Pods_IntegrationTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_IntegrationTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 08B337A588890CA29C9AD5C9 /* Pods-IntegrationTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-IntegrationTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-IntegrationTests/Pods-IntegrationTests.release.xcconfig"; sourceTree = ""; }; + 279FD81F012300F376DED6AD /* libPods-Demo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Demo.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 3C7F86CB18CE609200F7091A /* ARTiledImageDemoViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTiledImageDemoViewController.h; sourceTree = ""; }; 3C7F86CC18CE609200F7091A /* ARTiledImageDemoViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTiledImageDemoViewController.m; sourceTree = ""; }; 3CB0E6D318C8B9E2009CE8DB /* Demo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Demo.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -83,14 +84,15 @@ 3CBB03AC192BD83800689F89 /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; 3CBB03AD192BD83800689F89 /* Podfile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Podfile; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 3CBB03AE192BD83800689F89 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README.md; sourceTree = ""; }; - 3F34D96F2052D2240A43A7DF /* Pods-IntegrationTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-IntegrationTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-IntegrationTests/Pods-IntegrationTests.debug.xcconfig"; sourceTree = ""; }; 5EA9D66B199CBFF5008CF9C7 /* ARTiledImageViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTiledImageViewTests.m; sourceTree = ""; }; - 60893D64196EABB0009C23E8 /* ARTiledImageView.podspec */ = {isa = PBXFileReference; lastKnownFileType = text; path = ARTiledImageView.podspec; sourceTree = ""; }; + 60893D64196EABB0009C23E8 /* ARTiledImageView.podspec */ = {isa = PBXFileReference; lastKnownFileType = text; path = ARTiledImageView.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 60893D65196EDFD3009C23E8 /* ARTiledImageScrollViewSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTiledImageScrollViewSpec.m; sourceTree = ""; }; + 60A4AF9F20E3E30C009CA06F /* ARTiledImageView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ARTiledImageView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 61E8D311677B7C1F0FF4CC10 /* Pods-IntegrationTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-IntegrationTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-IntegrationTests/Pods-IntegrationTests.debug.xcconfig"; sourceTree = ""; }; 6EEC3904F6FF578E5A14E56A /* Pods.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 802221C95BCB7B9ADE69611C /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.debug.xcconfig; path = "Pods/Target Support Files/Pods/Pods.debug.xcconfig"; sourceTree = ""; }; - 94223D223C89CCCE0BE9813F /* Pods-IntegrationTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-IntegrationTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-IntegrationTests/Pods-IntegrationTests.release.xcconfig"; sourceTree = ""; }; - BAC338B0F4B664B004C1518B /* Pods.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.release.xcconfig; path = "Pods/Target Support Files/Pods/Pods.release.xcconfig"; sourceTree = ""; }; + 984BC608B077E4D5CFEEA408 /* Pods-Demo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Demo.release.xcconfig"; path = "Pods/Target Support Files/Pods-Demo/Pods-Demo.release.xcconfig"; sourceTree = ""; }; + BB78FF8232289E4004B5E0CC /* libPods-IntegrationTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-IntegrationTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + D474716A08FF3B67E7331A22 /* Pods-Demo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Demo.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Demo/Pods-Demo.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -101,7 +103,7 @@ 3CB0E6D918C8B9E2009CE8DB /* CoreGraphics.framework in Frameworks */, 3CB0E6DB18C8B9E2009CE8DB /* UIKit.framework in Frameworks */, 3CB0E6D718C8B9E2009CE8DB /* Foundation.framework in Frameworks */, - 9C16FD7BCD284401E13005A5 /* Pods.framework in Frameworks */, + F7C9DFFC886CA938469449B8 /* libPods-Demo.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -112,7 +114,7 @@ 3CB0E6F618C8B9E2009CE8DB /* XCTest.framework in Frameworks */, 3CB0E6F818C8B9E3009CE8DB /* UIKit.framework in Frameworks */, 3CB0E6F718C8B9E2009CE8DB /* Foundation.framework in Frameworks */, - FB1F8B2406C58436722DBE47 /* Pods_IntegrationTests.framework in Frameworks */, + 062C37FA2B7A134C2CD81CE7 /* libPods-IntegrationTests.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -133,7 +135,7 @@ 3CBB03AD192BD83800689F89 /* Podfile */, 3CBB03AE192BD83800689F89 /* README.md */, 60893D64196EABB0009C23E8 /* ARTiledImageView.podspec */, - 8AEDFDA82BC08E1FE705F3E7 /* Pods */, + 84986D07112CC426815B81BF /* Pods */, ); sourceTree = ""; }; @@ -149,12 +151,14 @@ 3CB0E6D518C8B9E2009CE8DB /* Frameworks */ = { isa = PBXGroup; children = ( + 60A4AF9F20E3E30C009CA06F /* ARTiledImageView.framework */, 3CB0E6D618C8B9E2009CE8DB /* Foundation.framework */, 3CB0E6D818C8B9E2009CE8DB /* CoreGraphics.framework */, 3CB0E6DA18C8B9E2009CE8DB /* UIKit.framework */, 3CB0E6F518C8B9E2009CE8DB /* XCTest.framework */, 6EEC3904F6FF578E5A14E56A /* Pods.framework */, - 03FE807228187CAE10A8B782 /* Pods_IntegrationTests.framework */, + 279FD81F012300F376DED6AD /* libPods-Demo.a */, + BB78FF8232289E4004B5E0CC /* libPods-IntegrationTests.a */, ); name = Frameworks; sourceTree = ""; @@ -211,13 +215,13 @@ name = "Supporting Files"; sourceTree = ""; }; - 8AEDFDA82BC08E1FE705F3E7 /* Pods */ = { + 84986D07112CC426815B81BF /* Pods */ = { isa = PBXGroup; children = ( - 802221C95BCB7B9ADE69611C /* Pods.debug.xcconfig */, - BAC338B0F4B664B004C1518B /* Pods.release.xcconfig */, - 3F34D96F2052D2240A43A7DF /* Pods-IntegrationTests.debug.xcconfig */, - 94223D223C89CCCE0BE9813F /* Pods-IntegrationTests.release.xcconfig */, + D474716A08FF3B67E7331A22 /* Pods-Demo.debug.xcconfig */, + 984BC608B077E4D5CFEEA408 /* Pods-Demo.release.xcconfig */, + 61E8D311677B7C1F0FF4CC10 /* Pods-IntegrationTests.debug.xcconfig */, + 08B337A588890CA29C9AD5C9 /* Pods-IntegrationTests.release.xcconfig */, ); name = Pods; sourceTree = ""; @@ -229,12 +233,10 @@ isa = PBXNativeTarget; buildConfigurationList = 3CB0E70518C8B9E3009CE8DB /* Build configuration list for PBXNativeTarget "Demo" */; buildPhases = ( - 3EEC72D849A44CE489E1277C /* Check Pods Manifest.lock */, + 104B2AA7560EF77151919278 /* [CP] Check Pods Manifest.lock */, 3CB0E6CF18C8B9E2009CE8DB /* Sources */, 3CB0E6D018C8B9E2009CE8DB /* Frameworks */, 3CB0E6D118C8B9E2009CE8DB /* Resources */, - CF0BCF3DED9E42FFAA600A20 /* Copy Pods Resources */, - 9E9CBFD8F3D81D52BA1C98F6 /* Embed Pods Frameworks */, ); buildRules = ( ); @@ -249,12 +251,10 @@ isa = PBXNativeTarget; buildConfigurationList = 3CB0E70818C8B9E3009CE8DB /* Build configuration list for PBXNativeTarget "IntegrationTests" */; buildPhases = ( - BE3A7AB44CD649DE8FEEB154 /* Check Pods Manifest.lock */, + 936273B4489DABC5C3486BC0 /* [CP] Check Pods Manifest.lock */, 3CB0E6F018C8B9E2009CE8DB /* Sources */, 3CB0E6F118C8B9E2009CE8DB /* Frameworks */, 3CB0E6F218C8B9E2009CE8DB /* Resources */, - 92777E9C63BE481285A7B3F2 /* Copy Pods Resources */, - 0649950A10D43D323BED9A34 /* Embed Pods Frameworks */, ); buildRules = ( ); @@ -330,94 +330,40 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0649950A10D43D323BED9A34 /* Embed Pods Frameworks */ = { + 104B2AA7560EF77151919278 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", ); - name = "Embed Pods Frameworks"; + name = "[CP] Check Pods Manifest.lock"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Demo-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-IntegrationTests/Pods-IntegrationTests-frameworks.sh\"\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 3EEC72D849A44CE489E1277C /* Check Pods Manifest.lock */ = { + 936273B4489DABC5C3486BC0 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", ); - name = "Check Pods Manifest.lock"; + name = "[CP] Check Pods Manifest.lock"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-IntegrationTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; - showEnvVarsInLog = 0; - }; - 92777E9C63BE481285A7B3F2 /* Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-IntegrationTests/Pods-IntegrationTests-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - 9E9CBFD8F3D81D52BA1C98F6 /* Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Embed Pods Frameworks"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods/Pods-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - BE3A7AB44CD649DE8FEEB154 /* Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Check Pods Manifest.lock"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; - showEnvVarsInLog = 0; - }; - CF0BCF3DED9E42FFAA600A20 /* Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods/Pods-resources.sh\"\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -557,7 +503,7 @@ }; 3CB0E70618C8B9E3009CE8DB /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 802221C95BCB7B9ADE69611C /* Pods.debug.xcconfig */; + baseConfigurationReference = D474716A08FF3B67E7331A22 /* Pods-Demo.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; @@ -568,6 +514,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "Demo/Demo-Prefix.pch"; INFOPLIST_FILE = "Demo/Demo-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = app; }; @@ -575,7 +522,7 @@ }; 3CB0E70718C8B9E3009CE8DB /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BAC338B0F4B664B004C1518B /* Pods.release.xcconfig */; + baseConfigurationReference = 984BC608B077E4D5CFEEA408 /* Pods-Demo.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; @@ -586,6 +533,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "Demo/Demo-Prefix.pch"; INFOPLIST_FILE = "Demo/Demo-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = app; }; @@ -593,7 +541,7 @@ }; 3CB0E70918C8B9E3009CE8DB /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3F34D96F2052D2240A43A7DF /* Pods-IntegrationTests.debug.xcconfig */; + baseConfigurationReference = 61E8D311677B7C1F0FF4CC10 /* Pods-IntegrationTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/Demo.app/Demo"; FRAMEWORK_SEARCH_PATHS = ( @@ -617,7 +565,7 @@ }; 3CB0E70A18C8B9E3009CE8DB /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 94223D223C89CCCE0BE9813F /* Pods-IntegrationTests.release.xcconfig */; + baseConfigurationReference = 08B337A588890CA29C9AD5C9 /* Pods-IntegrationTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/Demo.app/Demo"; FRAMEWORK_SEARCH_PATHS = ( diff --git a/Demo/ARTiledImageDemoViewController.h b/Demo/ARTiledImageDemoViewController.h index 0786a8a..09898fc 100644 --- a/Demo/ARTiledImageDemoViewController.h +++ b/Demo/ARTiledImageDemoViewController.h @@ -6,7 +6,7 @@ // Copyright (c) 2014 Artsy. All rights reserved. // -#import "ARTiledImageScrollView.h" +@class ARTiledImageScrollView; @interface ARTiledImageDemoViewController : UIViewController diff --git a/Demo/ARTiledImageDemoViewController.m b/Demo/ARTiledImageDemoViewController.m index 6c4f2db..55c2d6e 100644 --- a/Demo/ARTiledImageDemoViewController.m +++ b/Demo/ARTiledImageDemoViewController.m @@ -7,9 +7,10 @@ // #import "ARTiledImageDemoViewController.h" -#import "ARTiledImageScrollView.h" -#import "ARWebTiledImageDataSource.h" -#import "ARLocalTiledImageDataSource.h" + +#import +#import +#import @interface ARTiledImageDemoViewController () @property (nonatomic, readonly) NSObject *dataSource; diff --git a/Gemfile b/Gemfile index b8952c8..00a6b3f 100644 --- a/Gemfile +++ b/Gemfile @@ -1,3 +1,3 @@ source 'https://rubygems.org' -gem 'cocoapods', '0.39.0' +gem 'cocoapods' diff --git a/IntegrationTests/IntegrationTests-Prefix.pch b/IntegrationTests/IntegrationTests-Prefix.pch index 7f57095..f5c3f8f 100644 --- a/IntegrationTests/IntegrationTests-Prefix.pch +++ b/IntegrationTests/IntegrationTests-Prefix.pch @@ -20,6 +20,6 @@ #define EXP_SHORTHAND #include #include -#include +#include #endif diff --git a/Podfile b/Podfile index 0b45af5..2d6cb89 100644 --- a/Podfile +++ b/Podfile @@ -1,12 +1,16 @@ workspace 'ARTiledImageView' +inhibit_all_warnings! -pod 'ARTiledImageView', :path => 'ARTiledImageView.podspec' +target "Demo" do + pod 'ARTiledImageView', :path => 'ARTiledImageView.podspec' -target 'IntegrationTests' do - pod 'Specta' - pod 'Expecta' - pod 'FBSnapshotTestCase' - pod 'Expecta+Snapshots' + target 'IntegrationTests' do + inherit! :search_paths + + pod 'Specta' + pod 'Expecta' + pod 'FBSnapshotTestCase', :subspecs => ["Core"] + pod 'Expecta+Snapshots' + end end -use_frameworks! diff --git a/Podfile.lock b/Podfile.lock index 393122c..909aa97 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -2,34 +2,40 @@ PODS: - ARTiledImageView (1.2.0): - SDWebImage/Core - Expecta (1.0.5) - - Expecta+Snapshots (2.0.0): + - "Expecta+Snapshots (2.0.0)": - Expecta (~> 1.0) - FBSnapshotTestCase/Core (~> 2.0.3) - - FBSnapshotTestCase (2.0.7): - - FBSnapshotTestCase/SwiftSupport (= 2.0.7) - FBSnapshotTestCase/Core (2.0.7) - - FBSnapshotTestCase/SwiftSupport (2.0.7): - - FBSnapshotTestCase/Core - SDWebImage/Core (3.7.5) - Specta (1.0.5) DEPENDENCIES: - ARTiledImageView (from `ARTiledImageView.podspec`) - Expecta - - Expecta+Snapshots - - FBSnapshotTestCase + - "Expecta+Snapshots" + - FBSnapshotTestCase/Core - Specta +SPEC REPOS: + https://github.com/cocoapods/specs.git: + - Expecta + - "Expecta+Snapshots" + - FBSnapshotTestCase + - SDWebImage + - Specta + EXTERNAL SOURCES: ARTiledImageView: :path: ARTiledImageView.podspec SPEC CHECKSUMS: - ARTiledImageView: 2db7735f5d3fcb4c859c912834a6a1bf20716377 + ARTiledImageView: ddbd6bdd1f660fcd0156ada0229c0f3e226427d4 Expecta: e1c022fcd33910b6be89c291d2775b3fe27a89fe - Expecta+Snapshots: 29b38dd695bc72a0ed2bea833937d78df41943ba + "Expecta+Snapshots": 29b38dd695bc72a0ed2bea833937d78df41943ba FBSnapshotTestCase: 7e85180d0d141a0cf472352edda7e80d7eaeb547 SDWebImage: 69c6303e3348fba97e03f65d65d4fbc26740f461 Specta: ac94d110b865115fe60ff2c6d7281053c6f8e8a2 -COCOAPODS: 0.39.0 +PODFILE CHECKSUM: 03e80ea7e7a670be3fab7b0f8ae3406bf6578afe + +COCOAPODS: 1.5.3 diff --git a/README.md b/README.md index 4670a65..6c4eae1 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ ## Demo -![animated](Screenshots/goya3.gif) +![animated](https://github.com/dblock/ARTiledImageView/raw/master/Screenshots/goya3.gif) [Francisco De Goya Y Lucientes, SeƱora Sabasa Garcia, ca. 1806/1811](https://artsy.net/artwork/francisco-jose-de-goya-y-lucientes-senora-sabasa-garcia), courtesy of the National Gallery of Art, Washington D.C., via [Artsy](https://artsy.net).