diff --git a/Podfile b/Podfile index 2ed9bc5..11245e8 100644 --- a/Podfile +++ b/Podfile @@ -3,6 +3,7 @@ platform:ios,"8.0" inhibit_all_warnings! target 'TZImagePreviewController' do - pod 'TZImagePickerController', '3.1.1' + pod 'TZImagePickerController', '3.1.7' + #pod 'TZImagePickerController', :path => "/Users/tanzhen/Desktop/github/TZImagePickerController" pod 'SDWebImage' end diff --git a/Podfile.lock b/Podfile.lock index 115d5ee..ca0f3dc 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,17 +1,17 @@ PODS: - - SDWebImage (4.4.2): - - SDWebImage/Core (= 4.4.2) - - SDWebImage/Core (4.4.2) - - TZImagePickerController (3.1.1) + - SDWebImage (4.4.3): + - SDWebImage/Core (= 4.4.3) + - SDWebImage/Core (4.4.3) + - TZImagePickerController (3.1.7) DEPENDENCIES: - SDWebImage - - TZImagePickerController (= 3.1.1) + - TZImagePickerController (= 3.1.7) SPEC CHECKSUMS: - SDWebImage: 624d6e296c69b244bcede364c72ae0430ac14681 - TZImagePickerController: b33cb21ea66c1ed4c56443a0e8c84494c44be560 + SDWebImage: c5594f1a19c48d526d321e548902b56b479cd508 + TZImagePickerController: 3027e1e2029c830186c6a167c88c933b8556fdc7 -PODFILE CHECKSUM: 9d3a27521a41fe2548e081017103b8a31faa5173 +PODFILE CHECKSUM: 3bfecb2f1680d3e57cae5d8fcf7d8a1b9a844751 COCOAPODS: 1.3.1 diff --git a/Pods/Headers/Private/TZImagePickerController/TZImageRequestOperation.h b/Pods/Headers/Private/TZImagePickerController/TZImageRequestOperation.h new file mode 120000 index 0000000..bcef156 --- /dev/null +++ b/Pods/Headers/Private/TZImagePickerController/TZImageRequestOperation.h @@ -0,0 +1 @@ +../../../TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImageRequestOperation.h \ No newline at end of file diff --git a/Pods/Headers/Public/TZImagePickerController/TZImageRequestOperation.h b/Pods/Headers/Public/TZImagePickerController/TZImageRequestOperation.h new file mode 120000 index 0000000..bcef156 --- /dev/null +++ b/Pods/Headers/Public/TZImagePickerController/TZImageRequestOperation.h @@ -0,0 +1 @@ +../../../TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImageRequestOperation.h \ No newline at end of file diff --git a/Pods/Local Podspecs/TZImagePickerController.podspec.json b/Pods/Local Podspecs/TZImagePickerController.podspec.json index 4bab97b..07fc001 100644 --- a/Pods/Local Podspecs/TZImagePickerController.podspec.json +++ b/Pods/Local Podspecs/TZImagePickerController.podspec.json @@ -1,6 +1,6 @@ { "name": "TZImagePickerController", - "version": "3.0.0", + "version": "3.1.6", "summary": "A clone of UIImagePickerController, support picking multiple photos、original photo and video", "homepage": "https://github.com/banchichen/TZImagePickerController", "license": "MIT", @@ -12,7 +12,7 @@ }, "source": { "git": "https://github.com/banchichen/TZImagePickerController.git", - "tag": "3.0.0" + "tag": "3.1.6" }, "requires_arc": true, "resources": "TZImagePickerController/TZImagePickerController/*.{png,bundle}", diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index 115d5ee..ca0f3dc 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -1,17 +1,17 @@ PODS: - - SDWebImage (4.4.2): - - SDWebImage/Core (= 4.4.2) - - SDWebImage/Core (4.4.2) - - TZImagePickerController (3.1.1) + - SDWebImage (4.4.3): + - SDWebImage/Core (= 4.4.3) + - SDWebImage/Core (4.4.3) + - TZImagePickerController (3.1.7) DEPENDENCIES: - SDWebImage - - TZImagePickerController (= 3.1.1) + - TZImagePickerController (= 3.1.7) SPEC CHECKSUMS: - SDWebImage: 624d6e296c69b244bcede364c72ae0430ac14681 - TZImagePickerController: b33cb21ea66c1ed4c56443a0e8c84494c44be560 + SDWebImage: c5594f1a19c48d526d321e548902b56b479cd508 + TZImagePickerController: 3027e1e2029c830186c6a167c88c933b8556fdc7 -PODFILE CHECKSUM: 9d3a27521a41fe2548e081017103b8a31faa5173 +PODFILE CHECKSUM: 3bfecb2f1680d3e57cae5d8fcf7d8a1b9a844751 COCOAPODS: 1.3.1 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index e423dc9..bf8ca5f 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -7,92 +7,94 @@ objects = { /* Begin PBXBuildFile section */ - 01C738E8771CC8C0DAD5A76D1972766F /* SDWebImageImageIOCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 38260C3CDBDE725FA614B7A08B74921F /* SDWebImageImageIOCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 053864C552957D9D77A600CBF7E5A597 /* SDWebImageDownloaderOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 1248C001673FA1FCD4DB071754101528 /* SDWebImageDownloaderOperation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 0546EAB1A2A0B132560D36431E19564D /* NSData+ImageContentType.m in Sources */ = {isa = PBXBuildFile; fileRef = B2B51AB71875E71132EF0C3B05E7D71A /* NSData+ImageContentType.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 05F332A8571B861B3098CDA55770E9D5 /* SDImageCacheConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BF96D91E27C60955598317311163AC /* SDImageCacheConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0782D2EF2C8ED9E12E51AF3BCCD9DC07 /* TZImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1CC7D6746DEE0BDB09E983CE6B10EAFC /* TZImageManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 07A583C714DE669FC7510577A7A28D45 /* SDWebImageCoderHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = C1850722E11A3FC5F23BC982EBCE2E19 /* SDWebImageCoderHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0DDB7E280AB3CA86021DA2010A61C676 /* UIView+WebCacheOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = DB1386B144AF08F4C05F84EE16E82446 /* UIView+WebCacheOperation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 0FCC57550B06F0310A6C295A7BE5B0DD /* TZImageCropManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F8048FD2A468115C0325B03A9ABE170 /* TZImageCropManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 1385F9DB9EABE17C519F34C03DFD7B67 /* SDWebImageCompat.h in Headers */ = {isa = PBXBuildFile; fileRef = 224839211FFC32DA5CBF7502128705A2 /* SDWebImageCompat.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 13B7EA464952DB069A54C92DE2FBE2D2 /* UIView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 138F27FE7AE86815007C42DEAB13E6D6 /* UIView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1636D5993D7C83286D7E26C30DD869D3 /* TZAssetCell.h in Headers */ = {isa = PBXBuildFile; fileRef = ABF4D3E9E4CFAD018EE7C284934E4FB6 /* TZAssetCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 01C738E8771CC8C0DAD5A76D1972766F /* SDWebImageImageIOCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 94A2800829FBEA796B544EEE1D4B97DB /* SDWebImageImageIOCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 046175DE25A6F6F3E6D80081619E4D26 /* TZPhotoPreviewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 393FDD5D9311C6F722EA84048F417624 /* TZPhotoPreviewCell.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 053864C552957D9D77A600CBF7E5A597 /* SDWebImageDownloaderOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = B43EB0DA094B2FC1DE524B19F4061699 /* SDWebImageDownloaderOperation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 0546EAB1A2A0B132560D36431E19564D /* NSData+ImageContentType.m in Sources */ = {isa = PBXBuildFile; fileRef = 992123E30BB704A170E5BE577E85AF6C /* NSData+ImageContentType.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 05F332A8571B861B3098CDA55770E9D5 /* SDImageCacheConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 82EEC6ACEFFE7D67314D76CBA2902DFC /* SDImageCacheConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 07A583C714DE669FC7510577A7A28D45 /* SDWebImageCoderHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 040818BECDE3C541A971973240117420 /* SDWebImageCoderHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0DDB7E280AB3CA86021DA2010A61C676 /* UIView+WebCacheOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 21B44848D8FCCD0A68BC90F02BE51418 /* UIView+WebCacheOperation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 1385F9DB9EABE17C519F34C03DFD7B67 /* SDWebImageCompat.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D3FDB660288C5BBA59F28AB8B9E0492 /* SDWebImageCompat.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 13B7EA464952DB069A54C92DE2FBE2D2 /* UIView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 73147BF3C1F9B8B5121B114E5733C190 /* UIView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; 1702A2BCD1D524959FA9FF3A6A0BA611 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 37AEB30F12E596B1D1F470FB86450924 /* ImageIO.framework */; }; - 184CC61B0479F48B80BB928CF553ED83 /* UIImage+MultiFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = CF14DFA2196916963099905EEBE49A10 /* UIImage+MultiFormat.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 185E60632403F0AE482243971431D1EB /* SDWebImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = D6245D678C4FF1B9D1B1B42D70676F91 /* SDWebImageDownloader.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 1D10535A885A5D1D31DF020DE39139DC /* SDWebImageDownloaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 87AED9C0AF04FB8A40FAA12EC5E016F8 /* SDWebImageDownloaderOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 215AF1BF62E1285CE079CCDED3294A37 /* UIView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = CE23C9A01F73C11B4F15EADC23954909 /* UIView+WebCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 2713EC32A3BB801774E3876873E5A392 /* SDWebImageFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 3760CBAA59EAFFBBD8C2CDE1567B0926 /* SDWebImageFrame.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2C44FD524ABE03FDBB4E1553699C71FE /* TZImagePickerController.h in Headers */ = {isa = PBXBuildFile; fileRef = 833D5D456949D7DDAA3A4E71D439C7BF /* TZImagePickerController.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 30B45FA35DB1369C27E53299F753D6E4 /* SDWebImageCoderHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = CB5F2449DC558DD5A42518E3082FB7CA /* SDWebImageCoderHelper.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 3595D88B378BD3F41D617E46381D30AC /* NSButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = B327BFCA5CEE67EF5F26191EE6E2456B /* NSButton+WebCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 3989E5D7648AA1ACAEFE7A159EF77982 /* TZPhotoPreviewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = B9A63161A7A76D22F601ACCB7C38FD16 /* TZPhotoPreviewCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3FC149DCDC441B67165EFD95556A8775 /* TZGifPhotoPreviewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EA5ABF99D5786000AE3EB92381017F5 /* TZGifPhotoPreviewController.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 41684D7F2D21ADF16A6F08151A2F0CE8 /* TZPhotoPreviewController.h in Headers */ = {isa = PBXBuildFile; fileRef = CAC9896D9D108A5F07B9CD6046726056 /* TZPhotoPreviewController.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 41A06EF343E02CF06BFB68AF78A8DC7B /* UIImage+ForceDecode.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E0C55BCE6562FEE8928411BB05A00C6 /* UIImage+ForceDecode.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 4746D0500975EC199817F42E779EABD6 /* TZLocationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E6F26A33139B0C19A6F3B9086C6364C /* TZLocationManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 4753EA2D999B6C529763096DA50C2D17 /* SDWebImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 42C1B37098E125468364E64AD82291BF /* SDWebImageCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4AE7C452267B9875B69FD2ABAA63060A /* SDWebImageCodersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B5AED5ACE7A14FAA1DE17082A17AE4F /* SDWebImageCodersManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 4D5D92EED286787F21AE87A189815F2B /* SDWebImageFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 0894953D9D0DC18617E37140A1AABD5D /* SDWebImageFrame.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 514F107F160502616F4565FD30D38D08 /* TZPhotoPreviewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 80957151A0BFEBA62884F7C4B64A791C /* TZPhotoPreviewCell.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 5340F6B61F98FBD67A7D131C16E48BC1 /* NSButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = AB4F680DC34A7276993408CF1410D96D /* NSButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 54B93FEDA4A2BCF767F489641251B119 /* NSImage+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = A49DC4B4A77B3F3A156D4EE1A003DF53 /* NSImage+WebCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 5668EDE7D01A8F2A2BB5104CEBB43C63 /* SDWebImageImageIOCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C81E926A8032654175503FCE7AA4E3F /* SDWebImageImageIOCoder.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 5A9DDC5E770FE31973C7060B81499C15 /* UIImageView+HighlightedWebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = F1DB48D028641338829E0AA3E865B30B /* UIImageView+HighlightedWebCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 5AB4EB6DE5145227E1922D3B8E385C75 /* SDImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C19E5C52550EE1DFCF8D34A407617DB /* SDImageCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5B81ED3FAE80987C13C22CA5988BB99B /* UIImage+ForceDecode.h in Headers */ = {isa = PBXBuildFile; fileRef = 403D53B1ECDC388DB7C9B4032F9A2E40 /* UIImage+ForceDecode.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5C665CFA1F76F1DD80034F05BE3E3AA1 /* UIView+WebCacheOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = FCE4313F84322935009FEA0B6BD1B1EB /* UIView+WebCacheOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 630DD2E4B7F8CA048C8AC0FF14D2E59F /* TZImageCropManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E938F89A50F325793B07F82A547A9619 /* TZImageCropManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6807C43971CD8027D4EAB5491EE93FA1 /* TZLocationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 05C677E160F303E3DC37A4FE65105452 /* TZLocationManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6C9B02DD6B089EA3845A186D7874306D /* SDWebImageTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = DFC80AD4AAE334B0896DA7A480EB0793 /* SDWebImageTransition.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6DFBFD42C7ED1F76A1A9CD02D61040B7 /* TZImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 05A5A8E3267609D207C906EB61A6E865 /* TZImageManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 71FDD8040BC5848A6B66585E97ED79F8 /* TZVideoPlayerController.h in Headers */ = {isa = PBXBuildFile; fileRef = 22008102178B7ED73B538EBE62F67AC5 /* TZVideoPlayerController.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 73387F6AC878A9F968F12A8E2397056E /* NSImage+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = C61A91EC01BEC81255A080F2B57160EB /* NSImage+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 76FE2BE5E2AD02536218C840559A780F /* TZProgressView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2348411A7A72F904064B8A67C79C33CC /* TZProgressView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7B2797FE15FC290252DAE446E1F99CD2 /* UIView+Layout.h in Headers */ = {isa = PBXBuildFile; fileRef = C57CCE1202F90578997BC1EDC8AC97CC /* UIView+Layout.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7C68EAFF35D56DB46301159AFB4C3611 /* SDWebImagePrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = A3BBDD6935F59684EA447DF5E7237D90 /* SDWebImagePrefetcher.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 81C63543A5A20672017F5C1077C54DA2 /* NSData+ImageContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 0618DABE2232A13A1BBEC7725172779E /* NSData+ImageContentType.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8682FD31C49631AA3E6B6F62DEF5FE2D /* TZImagePickerController-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CC6AB618D1CC2E0107702C5D03F5849E /* TZImagePickerController-dummy.m */; }; - 86C0B7F32AEE98F9017EC50C24E19470 /* UIView+Layout.m in Sources */ = {isa = PBXBuildFile; fileRef = 287E0F40ED265FFC12E3491F0F16C9DD /* UIView+Layout.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 8992975A0859D4AE5AA6B7677DEB46CD /* SDWebImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 69EC87B90D6DC45C13A9C7F2119ED383 /* SDWebImageManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 8B9219F2807F97A8809486CFBE6E7E7F /* TZPhotoPreviewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 0610DF95342E3ECEEAA5CFF5F8F13C50 /* TZPhotoPreviewController.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 8BD61B0622F00E8BC7A010EEB7AB3354 /* SDWebImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = F189D115DF23492C8DB154B85E25ECED /* SDWebImageCoder.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 8CC9CB8E032E58A04B08FD58BF0AEA6B /* TZAssetModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 18A1C7DE167C08B17A517856B8862DF9 /* TZAssetModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8CCEAB13744618EABF2A1ED404627B84 /* SDWebImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = C597A59DF3BC9A2B8DDB650FA24C0B5D /* SDWebImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8CE9E3231FE3A0A39B711D45A02C7B28 /* SDWebImageCodersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 36616F0456AD85E4BA3967B4E6AFE1DF /* SDWebImageCodersManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8D7DF88D363D8FA2A54D838CBD5F6E08 /* TZPhotoPickerController.h in Headers */ = {isa = PBXBuildFile; fileRef = 6624DB57BB30F2D1D3E3AC55ECD43310 /* TZPhotoPickerController.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 923CF53BE55EAAEB3C55B0ED13E7FFF7 /* SDWebImageGIFCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 551ED56FC457AB592A3AFB148E6A4AD4 /* SDWebImageGIFCoder.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 184CC61B0479F48B80BB928CF553ED83 /* UIImage+MultiFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CF2DDE907F831E9531A8D3538485DDF /* UIImage+MultiFormat.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 185E60632403F0AE482243971431D1EB /* SDWebImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = EA2D0154103FF7253752DD2EDC89B13F /* SDWebImageDownloader.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 1AE234092D4DFE812841817FCC9E59F1 /* TZGifPhotoPreviewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 08A9D0D8D11DDCADF02CFC1E9FD5C1EE /* TZGifPhotoPreviewController.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1C821AA84E5296166FDA32D6F164ACC6 /* TZProgressView.h in Headers */ = {isa = PBXBuildFile; fileRef = BA86188322E738698CD288FEC93A0978 /* TZProgressView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1D10535A885A5D1D31DF020DE39139DC /* SDWebImageDownloaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 727D8027DA46F56E257C3BA3ED73A32E /* SDWebImageDownloaderOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 215AF1BF62E1285CE079CCDED3294A37 /* UIView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = C21B63AAAA4583C8B8D45AC1A7DECAD7 /* UIView+WebCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 225C63AAC49A53A7E4A60F37DF68B5D1 /* TZImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 53AE53DCF59053519BE0257045B96569 /* TZImageManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 2303DF9BE04E42D49847B83C94A9BF28 /* TZImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DA5761FC6E513864674CB119D598A0D /* TZImageManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2713EC32A3BB801774E3876873E5A392 /* SDWebImageFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 8DFAB6138DCF28D5517E09D7DE1713C0 /* SDWebImageFrame.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2978111CE8D3BAA61227EA8EE28BF0A5 /* TZImageCropManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A5D1F035C1867F40E5C994AEC8DD0A85 /* TZImageCropManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2CFA952FEEFCCED87007B075D154FE99 /* TZImagePickerController-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E81298D856A892080C44D86B1CEF0C4 /* TZImagePickerController-dummy.m */; }; + 30B45FA35DB1369C27E53299F753D6E4 /* SDWebImageCoderHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C95D26B576AC15CCD8A6C129A257FBD /* SDWebImageCoderHelper.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 3595D88B378BD3F41D617E46381D30AC /* NSButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 94CB6B606B11C26170394BA2F93BC65F /* NSButton+WebCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 38CEC25C20AF48691BA2870AB1F8A7C7 /* TZPhotoPickerController.h in Headers */ = {isa = PBXBuildFile; fileRef = BEB53E43D223608B93568A1C4D7A66BF /* TZPhotoPickerController.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3E070D010BA8E6074CCF3ACB943384D5 /* TZGifPhotoPreviewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E6F8F42833DC935B4862A9764E86C0D1 /* TZGifPhotoPreviewController.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 3E94119E1109DFD3DB100709BDCB242E /* TZPhotoPreviewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = DCEDBF0B0699A9A38625E6932023A156 /* TZPhotoPreviewCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 41A06EF343E02CF06BFB68AF78A8DC7B /* UIImage+ForceDecode.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0FBBDA0E353D2D04FB7C15AE33C606 /* UIImage+ForceDecode.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 4753EA2D999B6C529763096DA50C2D17 /* SDWebImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B09F5DE6675BC893BCDA111982F4C3A /* SDWebImageCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4A4B74B3FD2D173A0436495D2CF886DA /* NSBundle+TZImagePicker.h in Headers */ = {isa = PBXBuildFile; fileRef = 62F5F81CF79FE5A8DF8F0D80B13A5F27 /* NSBundle+TZImagePicker.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4AE7C452267B9875B69FD2ABAA63060A /* SDWebImageCodersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CF0AAAFED95796ABD42EF4486A0DC7D /* SDWebImageCodersManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 4D5D92EED286787F21AE87A189815F2B /* SDWebImageFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = E32D52C665972C86E1064A1FB9CCBC3F /* SDWebImageFrame.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 5340F6B61F98FBD67A7D131C16E48BC1 /* NSButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = F54A0C8632F48586307C6CCAD95FEFB9 /* NSButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 54B93FEDA4A2BCF767F489641251B119 /* NSImage+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 54FAF994C5EE3F2CDE00EB284C57E404 /* NSImage+WebCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 5668EDE7D01A8F2A2BB5104CEBB43C63 /* SDWebImageImageIOCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E3542F41A2EBB3097B2F0ACDC9BFB48 /* SDWebImageImageIOCoder.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 5A9DDC5E770FE31973C7060B81499C15 /* UIImageView+HighlightedWebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 14D66FBF457C20D4AC04D22C0B0B4EC7 /* UIImageView+HighlightedWebCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 5AB4EB6DE5145227E1922D3B8E385C75 /* SDImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = AB28E27EA193A6405917DC9D2321EF04 /* SDImageCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5B81ED3FAE80987C13C22CA5988BB99B /* UIImage+ForceDecode.h in Headers */ = {isa = PBXBuildFile; fileRef = 9158766318503F06F6406C6645DC4FEC /* UIImage+ForceDecode.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5C665CFA1F76F1DD80034F05BE3E3AA1 /* UIView+WebCacheOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A30624C13F23AFD1C1446310F4A7768 /* UIView+WebCacheOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6A7CCCA40D90BA71C64582EEB9D45D06 /* TZPhotoPickerController.m in Sources */ = {isa = PBXBuildFile; fileRef = 984396F8F484F0CCA681545B86CB3227 /* TZPhotoPickerController.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 6C9B02DD6B089EA3845A186D7874306D /* SDWebImageTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = 6CA38190FED090A2B2F31352DF4E83AF /* SDWebImageTransition.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 73387F6AC878A9F968F12A8E2397056E /* NSImage+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 112BDC7A3BCD23C6FCA8B96CBDEBA53C /* NSImage+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 79F546FF26467B2AEE730468C08EAF25 /* TZAssetModel.h in Headers */ = {isa = PBXBuildFile; fileRef = D13B435B3E0D1D5141798815F2A03FE4 /* TZAssetModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7C68EAFF35D56DB46301159AFB4C3611 /* SDWebImagePrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 47A80DC97FD6975A3D9254F3324CB22F /* SDWebImagePrefetcher.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 7E15173A9AB8D3D4E2ABCEBC71D6DD3A /* TZPhotoPreviewController.m in Sources */ = {isa = PBXBuildFile; fileRef = AF814533C8A8288CEEB161B7BF13779D /* TZPhotoPreviewController.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 81C63543A5A20672017F5C1077C54DA2 /* NSData+ImageContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 38BA8A0DAC27BF18A443E8E5FB7FE333 /* NSData+ImageContentType.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8794650D48A43EF71628264B1E9A8EE3 /* TZLocationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E5DDC27E3E01E01C499CE3DFDBB5A94F /* TZLocationManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8992975A0859D4AE5AA6B7677DEB46CD /* SDWebImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D4EB6A6271984DB11AEF7314FA60B0DB /* SDWebImageManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 8BD61B0622F00E8BC7A010EEB7AB3354 /* SDWebImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = AE114C67E2A94F3528D7E0CE817F98A4 /* SDWebImageCoder.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 8CCEAB13744618EABF2A1ED404627B84 /* SDWebImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = FDAD0C512A99900A35D6191DE570EF6E /* SDWebImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8CE9E3231FE3A0A39B711D45A02C7B28 /* SDWebImageCodersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 943936650547551F18340AE0975EC649 /* SDWebImageCodersManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 902DB0745EA76085A00907A1E4B9B2B9 /* TZPhotoPreviewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A1331F0D91E6529412F474574E35495 /* TZPhotoPreviewController.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 923CF53BE55EAAEB3C55B0ED13E7FFF7 /* SDWebImageGIFCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = E8270D264F169F0AF1D5D3C71F4936DB /* SDWebImageGIFCoder.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 976B1B230E91635F21049B498CE903CD /* Pods-TZImagePreviewController-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 52DE9D953E11B23A45D3F166F3923D7C /* Pods-TZImagePreviewController-dummy.m */; }; - 9900EDADEEEE30EBF3100CBE7B85FCB6 /* NSBundle+TZImagePicker.h in Headers */ = {isa = PBXBuildFile; fileRef = A5DC12D18E05E2747ECDA65325A49D5A /* NSBundle+TZImagePicker.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D78F36744F4181C6687A8B0F0F772C4 /* SDAnimatedImageRep.m in Sources */ = {isa = PBXBuildFile; fileRef = DD456D3F85789EFFF603B55096BC6016 /* SDAnimatedImageRep.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 9DFF40E75941BA5B1A2D8FC4987007FD /* SDWebImageCompat.m in Sources */ = {isa = PBXBuildFile; fileRef = 7892A940B167A3B337F61FEC48CAA293 /* SDWebImageCompat.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - A1BAE2E980E92664E2E1A4E0E88C8F0C /* SDWebImageGIFCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 53AB0D47BC1A6EAA3470269669FE0227 /* SDWebImageGIFCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A929A35DE144C6A46DEACE905DC9A892 /* UIImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 44AAECAE4B08CD5C5CD246908A40E650 /* UIImageView+WebCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - ACEDC278DA91FF11436639C4783E4FA5 /* NSBundle+TZImagePicker.m in Sources */ = {isa = PBXBuildFile; fileRef = 05C42EE27FA37D411F8AA3E84C97D724 /* NSBundle+TZImagePicker.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - AD2A19D6D33D0A534277C32F33358FBB /* SDWebImagePrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = E0935A0BB15CB3A14CE6F4FEEAEAEB9D /* SDWebImagePrefetcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AEE3C72DD099F2EAC4576F575510D43B /* UIButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EFB67AEAD28CBD5B89761349DE46A47 /* UIButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B10C2C2BEC1FB929880BAEED148DD56A /* SDWebImageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 247704218727198352889F939834A281 /* SDWebImageOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BCDC616037F321B892E5038FA62E9BB2 /* SDWebImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = BCD8FAE1D53F67FBCF52F485F19AE2EC /* SDWebImage-dummy.m */; }; - BDF64C1AFC5257BDBD874F267D6943BA /* UIImage+GIF.m in Sources */ = {isa = PBXBuildFile; fileRef = 5301D03826CB71B7F0E94E7781773CA1 /* UIImage+GIF.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - C3244D36521EB75C7A694C78164E49DA /* UIImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 7844E9F43647E5FF8BBBB96E4EC73F73 /* UIImageView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C6382488820A6B2974B40FA26E561006 /* TZAssetModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E760A1FDF263BF7E6056E171F26291C /* TZAssetModel.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - CA17FEAADC8AD2C553134A27C4416C68 /* TZGifPhotoPreviewController.m in Sources */ = {isa = PBXBuildFile; fileRef = DFBF62D89FE92DD5630D68B73552FF76 /* TZGifPhotoPreviewController.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - D0DE565CCA7A0C1693A6714BAC9A2C07 /* TZProgressView.h in Headers */ = {isa = PBXBuildFile; fileRef = FE9D5C4C0638F06BB9BFBF5B8112BE59 /* TZProgressView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D80E10EE0EFD1117A569271C47CCBC58 /* SDImageCacheConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 65C48C85C82DF855C11C2B26C2AB139E /* SDImageCacheConfig.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - DCD459C1C91247A396D20D1B61077E38 /* UIImageView+HighlightedWebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = CADDC636088FA157E29C8D1D0B4ED280 /* UIImageView+HighlightedWebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9D52CDA038C47D8007FE95E677201D57 /* TZImageCropManager.m in Sources */ = {isa = PBXBuildFile; fileRef = F6F594AB4A7D306EAD9AC2A3AB542C56 /* TZImageCropManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 9D78F36744F4181C6687A8B0F0F772C4 /* SDAnimatedImageRep.m in Sources */ = {isa = PBXBuildFile; fileRef = B029D783DDE6E210F74823CAE393650F /* SDAnimatedImageRep.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 9DFF40E75941BA5B1A2D8FC4987007FD /* SDWebImageCompat.m in Sources */ = {isa = PBXBuildFile; fileRef = F4B9206546A447004E4BC249E44397F2 /* SDWebImageCompat.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + A010F7BEAA4AF9DDFECD19A04AE10F57 /* TZImagePickerController.m in Sources */ = {isa = PBXBuildFile; fileRef = 87BE065B159A830D6BE5E21BA72F8D60 /* TZImagePickerController.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + A1BAE2E980E92664E2E1A4E0E88C8F0C /* SDWebImageGIFCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CC020C9A7EC2279ED2264CEEDF744B6 /* SDWebImageGIFCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A929A35DE144C6A46DEACE905DC9A892 /* UIImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = BEF06649CE8611C6F244B72E9E2F79A4 /* UIImageView+WebCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + AD2A19D6D33D0A534277C32F33358FBB /* SDWebImagePrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CC9BC30A95BE151585C937C652FF05F /* SDWebImagePrefetcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AEE3C72DD099F2EAC4576F575510D43B /* UIButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = EFD78B7F8FC162383A97499FD37803F8 /* UIButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AFE4BB49B08319CB2F78F628A8DC89E3 /* TZImagePickerController.h in Headers */ = {isa = PBXBuildFile; fileRef = B39322E50BC1BCF6EFD68F9367C95C05 /* TZImagePickerController.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B10C2C2BEC1FB929880BAEED148DD56A /* SDWebImageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 254EC04FF044B5FCE43DF3027CAFF9F8 /* SDWebImageOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BC65584E648E509FB730A7F93A3CF518 /* TZAssetCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 965D6CEE97D453F14ECD78548AF3A1A6 /* TZAssetCell.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + BC89D5902E7406950BE2A08F761986FC /* UIView+Layout.h in Headers */ = {isa = PBXBuildFile; fileRef = 6AE40B9292D77398F573BCDF2C59A8F6 /* UIView+Layout.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BCDC616037F321B892E5038FA62E9BB2 /* SDWebImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = EAA7BF84CBAEA41D0A400ECDE050D673 /* SDWebImage-dummy.m */; }; + BDF64C1AFC5257BDBD874F267D6943BA /* UIImage+GIF.m in Sources */ = {isa = PBXBuildFile; fileRef = 6295C6869424DB7BFA9D98B17F97FBF1 /* UIImage+GIF.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + C1BDFEE9791BD1BC67D3C38A9FFE9193 /* TZVideoPlayerController.h in Headers */ = {isa = PBXBuildFile; fileRef = 6844F6847F587F0E5457030054DC32D5 /* TZVideoPlayerController.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C1F4E3EC9190E52EFB717340A3020570 /* TZAssetModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 368D735EE68556285C7056E0CDB8549B /* TZAssetModel.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + C3244D36521EB75C7A694C78164E49DA /* UIImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 144B28E02D1C4AB5F085C6480ECE688F /* UIImageView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C50EEC0A1777C68864C960F12E415725 /* TZAssetCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 372BCB10CDE4D0EC42B64C480108CD5C /* TZAssetCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C8D95BB71AB4B04E1B6A295DD247B73A /* TZImageRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = E760469BB1144445D5132F93ED8387D8 /* TZImageRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CE1D833164A9D644E23425425D7A64E3 /* TZVideoPlayerController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8DC82B4F0FF70ED4EA07778AD4719590 /* TZVideoPlayerController.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + D0236D04B4D8F4FBD7AC253251A9CA44 /* TZImageRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = A9606523F2EC2E4CFD80BEB3838317F5 /* TZImageRequestOperation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + D80E10EE0EFD1117A569271C47CCBC58 /* SDImageCacheConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = D9C1ED29869406A5BFD8AE07B34ABAC1 /* SDImageCacheConfig.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + DCD459C1C91247A396D20D1B61077E38 /* UIImageView+HighlightedWebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 05B064869FB41A77452312EA687EBDA2 /* UIImageView+HighlightedWebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; DCDDD78A74B7B73AE6AE8A62DC0C3695 /* Photos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A15F4934EDBB53B544974AC3E8A56D2B /* Photos.framework */; }; - DFDF49AA011679B95BEE793805B28065 /* TZPhotoPickerController.m in Sources */ = {isa = PBXBuildFile; fileRef = 0170AE165A25AAB746D1CDD1C4965B73 /* TZPhotoPickerController.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - E863A5A1509EA2162629415473E22FA7 /* SDAnimatedImageRep.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D8D8A67C179AE5026A3AE64F9FEA911 /* SDAnimatedImageRep.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E868FBB50663C70C0D3BBDC5C02E3C52 /* UIImage+GIF.h in Headers */ = {isa = PBXBuildFile; fileRef = F10FD17C7C44F20FF51EBBBBB74FADD7 /* UIImage+GIF.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EAC2D9350F6E39030F67D05EEEF420F2 /* SDWebImageTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = F5700A955E10B76FA9816AF3FAECB5D9 /* SDWebImageTransition.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - F27AEACD84435C8C67E720C3B6D6B59E /* TZAssetCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B6E7BFFF0258A0104C86F8EAED9C590 /* TZAssetCell.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - F2F40787799C63D4BBD6B1AA3FB0FF04 /* TZImagePickerController.m in Sources */ = {isa = PBXBuildFile; fileRef = 32A0166860629B4CEDB32A0AFB04003B /* TZImagePickerController.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - F4FB200BA4BD78D56A1BC3F347A279CA /* SDWebImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = DB25F3D5FD136EF4A76BCD61D3BAB799 /* SDWebImageManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F56B6C64654E4C82DB0A740351B7E0BF /* UIImage+MultiFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CBBF6FD0367B03CE07379790F0669A5 /* UIImage+MultiFormat.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F91C1798F68F9307B7A576CDE17C848D /* SDImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 377B2370DA9C303F74BDCC9421EF623E /* SDImageCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - FD2678433C3518E9E5179959D40ACDF0 /* TZVideoPlayerController.m in Sources */ = {isa = PBXBuildFile; fileRef = 35938F4076FA5F6A4A0531ED172F9E40 /* TZVideoPlayerController.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - FD5301E2D403311622F9B72B0508FA88 /* UIButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 78FEEC4279D1D28D320940AE29A52109 /* UIButton+WebCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + E20DA6FB376ECDB8F073BA7A8CC56E19 /* TZLocationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 44DF73C24E6E9E0FB113446935C80EC9 /* TZLocationManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + E863A5A1509EA2162629415473E22FA7 /* SDAnimatedImageRep.h in Headers */ = {isa = PBXBuildFile; fileRef = 1BCEDBF47FC3D1A35F33E3F4EA2FA73C /* SDAnimatedImageRep.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E868FBB50663C70C0D3BBDC5C02E3C52 /* UIImage+GIF.h in Headers */ = {isa = PBXBuildFile; fileRef = 95A104C79CB011DC5DB7B7A892EF234D /* UIImage+GIF.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E87B7B736590F8551B858ECC1E5F6D02 /* NSBundle+TZImagePicker.m in Sources */ = {isa = PBXBuildFile; fileRef = 31EC72731A1E661E99D1BA87C842B8BB /* NSBundle+TZImagePicker.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + EAC2D9350F6E39030F67D05EEEF420F2 /* SDWebImageTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A5C118A86B132DB6D5BF61AE8FAD5B5 /* SDWebImageTransition.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + F4FB200BA4BD78D56A1BC3F347A279CA /* SDWebImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C546AA8651B8E19DFD8E74627768D12A /* SDWebImageManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F56B6C64654E4C82DB0A740351B7E0BF /* UIImage+MultiFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = E2159423A4FAE370CDCA42643D3571E2 /* UIImage+MultiFormat.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F7F5AAB4BCBDE13526A733BC6CD17530 /* UIView+Layout.m in Sources */ = {isa = PBXBuildFile; fileRef = FEAFF3C64570D3AB241E1465831A4C32 /* UIView+Layout.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + F857F7DC0CAAE4B9E3BACD41DFDB3B58 /* TZProgressView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1DF46FA54B87ED354EFEC7C42CEA2D69 /* TZProgressView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + F91C1798F68F9307B7A576CDE17C848D /* SDImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F365504BCE5400A1FCDD93EF225951C /* SDImageCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + FD5301E2D403311622F9B72B0508FA88 /* UIButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = AF17AA89B44339C8AF161D3E02F62B11 /* UIButton+WebCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -113,107 +115,109 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 0170AE165A25AAB746D1CDD1C4965B73 /* TZPhotoPickerController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TZPhotoPickerController.m; path = TZImagePickerController/TZImagePickerController/TZPhotoPickerController.m; sourceTree = ""; }; - 05A5A8E3267609D207C906EB61A6E865 /* TZImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TZImageManager.h; path = TZImagePickerController/TZImagePickerController/TZImageManager.h; sourceTree = ""; }; - 05C42EE27FA37D411F8AA3E84C97D724 /* NSBundle+TZImagePicker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBundle+TZImagePicker.m"; path = "TZImagePickerController/TZImagePickerController/NSBundle+TZImagePicker.m"; sourceTree = ""; }; - 05C677E160F303E3DC37A4FE65105452 /* TZLocationManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TZLocationManager.h; path = TZImagePickerController/TZImagePickerController/TZLocationManager.h; sourceTree = ""; }; - 0610DF95342E3ECEEAA5CFF5F8F13C50 /* TZPhotoPreviewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TZPhotoPreviewController.m; path = TZImagePickerController/TZImagePickerController/TZPhotoPreviewController.m; sourceTree = ""; }; - 0618DABE2232A13A1BBEC7725172779E /* NSData+ImageContentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+ImageContentType.h"; path = "SDWebImage/NSData+ImageContentType.h"; sourceTree = ""; }; - 062099BE56A5BD26607B3EB8BA45509B /* TZImagePickerController.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = TZImagePickerController.xcconfig; sourceTree = ""; }; - 0894953D9D0DC18617E37140A1AABD5D /* SDWebImageFrame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageFrame.m; path = SDWebImage/SDWebImageFrame.m; sourceTree = ""; }; - 1248C001673FA1FCD4DB071754101528 /* SDWebImageDownloaderOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderOperation.m; path = SDWebImage/SDWebImageDownloaderOperation.m; sourceTree = ""; }; - 138F27FE7AE86815007C42DEAB13E6D6 /* UIView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCache.h"; path = "SDWebImage/UIView+WebCache.h"; sourceTree = ""; }; + 040818BECDE3C541A971973240117420 /* SDWebImageCoderHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCoderHelper.h; path = SDWebImage/SDWebImageCoderHelper.h; sourceTree = ""; }; + 05B064869FB41A77452312EA687EBDA2 /* UIImageView+HighlightedWebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+HighlightedWebCache.h"; path = "SDWebImage/UIImageView+HighlightedWebCache.h"; sourceTree = ""; }; + 08A9D0D8D11DDCADF02CFC1E9FD5C1EE /* TZGifPhotoPreviewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TZGifPhotoPreviewController.h; path = TZImagePickerController/TZImagePickerController/TZGifPhotoPreviewController.h; sourceTree = ""; }; + 09DCE739B5AFF3035CF9FCC542CD8598 /* SDWebImage.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.xcconfig; sourceTree = ""; }; + 0A30624C13F23AFD1C1446310F4A7768 /* UIView+WebCacheOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCacheOperation.h"; path = "SDWebImage/UIView+WebCacheOperation.h"; sourceTree = ""; }; + 0C95D26B576AC15CCD8A6C129A257FBD /* SDWebImageCoderHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCoderHelper.m; path = SDWebImage/SDWebImageCoderHelper.m; sourceTree = ""; }; + 0CF2DDE907F831E9531A8D3538485DDF /* UIImage+MultiFormat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MultiFormat.m"; path = "SDWebImage/UIImage+MultiFormat.m"; sourceTree = ""; }; + 0D3FDB660288C5BBA59F28AB8B9E0492 /* SDWebImageCompat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCompat.h; path = SDWebImage/SDWebImageCompat.h; sourceTree = ""; }; + 112BDC7A3BCD23C6FCA8B96CBDEBA53C /* NSImage+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSImage+WebCache.h"; path = "SDWebImage/NSImage+WebCache.h"; sourceTree = ""; }; + 144B28E02D1C4AB5F085C6480ECE688F /* UIImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+WebCache.h"; path = "SDWebImage/UIImageView+WebCache.h"; sourceTree = ""; }; + 14D66FBF457C20D4AC04D22C0B0B4EC7 /* UIImageView+HighlightedWebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+HighlightedWebCache.m"; path = "SDWebImage/UIImageView+HighlightedWebCache.m"; sourceTree = ""; }; 15334C6C4DF61F6DC1BAD4CBC40C1526 /* Pods-TZImagePreviewController.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-TZImagePreviewController.release.xcconfig"; sourceTree = ""; }; 178893F06FC03E5101A699A92A5DB854 /* libTZImagePickerController.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libTZImagePickerController.a; path = libTZImagePickerController.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 18A1C7DE167C08B17A517856B8862DF9 /* TZAssetModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TZAssetModel.h; path = TZImagePickerController/TZImagePickerController/TZAssetModel.h; sourceTree = ""; }; - 1CC7D6746DEE0BDB09E983CE6B10EAFC /* TZImageManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TZImageManager.m; path = TZImagePickerController/TZImagePickerController/TZImageManager.m; sourceTree = ""; }; - 1EA5ABF99D5786000AE3EB92381017F5 /* TZGifPhotoPreviewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TZGifPhotoPreviewController.h; path = TZImagePickerController/TZImagePickerController/TZGifPhotoPreviewController.h; sourceTree = ""; }; - 22008102178B7ED73B538EBE62F67AC5 /* TZVideoPlayerController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TZVideoPlayerController.h; path = TZImagePickerController/TZImagePickerController/TZVideoPlayerController.h; sourceTree = ""; }; - 224839211FFC32DA5CBF7502128705A2 /* SDWebImageCompat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCompat.h; path = SDWebImage/SDWebImageCompat.h; sourceTree = ""; }; - 2348411A7A72F904064B8A67C79C33CC /* TZProgressView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TZProgressView.m; path = TZImagePickerController/TZImagePickerController/TZProgressView.m; sourceTree = ""; }; - 247704218727198352889F939834A281 /* SDWebImageOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOperation.h; path = SDWebImage/SDWebImageOperation.h; sourceTree = ""; }; - 287E0F40ED265FFC12E3491F0F16C9DD /* UIView+Layout.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+Layout.m"; path = "TZImagePickerController/TZImagePickerController/UIView+Layout.m"; sourceTree = ""; }; - 2B6E7BFFF0258A0104C86F8EAED9C590 /* TZAssetCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TZAssetCell.m; path = TZImagePickerController/TZImagePickerController/TZAssetCell.m; sourceTree = ""; }; - 2C81E926A8032654175503FCE7AA4E3F /* SDWebImageImageIOCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageImageIOCoder.m; path = SDWebImage/SDWebImageImageIOCoder.m; sourceTree = ""; }; + 1BCEDBF47FC3D1A35F33E3F4EA2FA73C /* SDAnimatedImageRep.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImageRep.h; path = SDWebImage/SDAnimatedImageRep.h; sourceTree = ""; }; + 1DF46FA54B87ED354EFEC7C42CEA2D69 /* TZProgressView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TZProgressView.m; path = TZImagePickerController/TZImagePickerController/TZProgressView.m; sourceTree = ""; }; + 21B44848D8FCCD0A68BC90F02BE51418 /* UIView+WebCacheOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheOperation.m"; path = "SDWebImage/UIView+WebCacheOperation.m"; sourceTree = ""; }; + 2498510226EA45446DFBF664F8E7DB51 /* TZImagePickerController.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = TZImagePickerController.bundle; path = TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle; sourceTree = ""; }; + 254EC04FF044B5FCE43DF3027CAFF9F8 /* SDWebImageOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOperation.h; path = SDWebImage/SDWebImageOperation.h; sourceTree = ""; }; + 2CF0AAAFED95796ABD42EF4486A0DC7D /* SDWebImageCodersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCodersManager.m; path = SDWebImage/SDWebImageCodersManager.m; sourceTree = ""; }; + 31EC72731A1E661E99D1BA87C842B8BB /* NSBundle+TZImagePicker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBundle+TZImagePicker.m"; path = "TZImagePickerController/TZImagePickerController/NSBundle+TZImagePicker.m"; sourceTree = ""; }; 321E05903DB5C9EBFE3513F1D5B19C55 /* Pods-TZImagePreviewController-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-TZImagePreviewController-resources.sh"; sourceTree = ""; }; - 32A0166860629B4CEDB32A0AFB04003B /* TZImagePickerController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TZImagePickerController.m; path = TZImagePickerController/TZImagePickerController/TZImagePickerController.m; sourceTree = ""; }; - 35938F4076FA5F6A4A0531ED172F9E40 /* TZVideoPlayerController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TZVideoPlayerController.m; path = TZImagePickerController/TZImagePickerController/TZVideoPlayerController.m; sourceTree = ""; }; - 36616F0456AD85E4BA3967B4E6AFE1DF /* SDWebImageCodersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCodersManager.h; path = SDWebImage/SDWebImageCodersManager.h; sourceTree = ""; }; - 3760CBAA59EAFFBBD8C2CDE1567B0926 /* SDWebImageFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageFrame.h; path = SDWebImage/SDWebImageFrame.h; sourceTree = ""; }; - 377B2370DA9C303F74BDCC9421EF623E /* SDImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCache.m; path = SDWebImage/SDImageCache.m; sourceTree = ""; }; + 368D735EE68556285C7056E0CDB8549B /* TZAssetModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TZAssetModel.m; path = TZImagePickerController/TZImagePickerController/TZAssetModel.m; sourceTree = ""; }; + 372BCB10CDE4D0EC42B64C480108CD5C /* TZAssetCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TZAssetCell.h; path = TZImagePickerController/TZImagePickerController/TZAssetCell.h; sourceTree = ""; }; 37AEB30F12E596B1D1F470FB86450924 /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.3.sdk/System/Library/Frameworks/ImageIO.framework; sourceTree = DEVELOPER_DIR; }; - 38260C3CDBDE725FA614B7A08B74921F /* SDWebImageImageIOCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageImageIOCoder.h; path = SDWebImage/SDWebImageImageIOCoder.h; sourceTree = ""; }; - 3827BD46EEC25AF62EDACD41951AA481 /* SDWebImage.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.xcconfig; sourceTree = ""; }; - 3B5AED5ACE7A14FAA1DE17082A17AE4F /* SDWebImageCodersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCodersManager.m; path = SDWebImage/SDWebImageCodersManager.m; sourceTree = ""; }; - 3E0C55BCE6562FEE8928411BB05A00C6 /* UIImage+ForceDecode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+ForceDecode.m"; path = "SDWebImage/UIImage+ForceDecode.m"; sourceTree = ""; }; - 403D53B1ECDC388DB7C9B4032F9A2E40 /* UIImage+ForceDecode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+ForceDecode.h"; path = "SDWebImage/UIImage+ForceDecode.h"; sourceTree = ""; }; - 42C1B37098E125468364E64AD82291BF /* SDWebImageCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCoder.h; path = SDWebImage/SDWebImageCoder.h; sourceTree = ""; }; - 44AAECAE4B08CD5C5CD246908A40E650 /* UIImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+WebCache.m"; path = "SDWebImage/UIImageView+WebCache.m"; sourceTree = ""; }; - 4C19E5C52550EE1DFCF8D34A407617DB /* SDImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCache.h; path = SDWebImage/SDImageCache.h; sourceTree = ""; }; - 4D8D8A67C179AE5026A3AE64F9FEA911 /* SDAnimatedImageRep.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImageRep.h; path = SDWebImage/SDAnimatedImageRep.h; sourceTree = ""; }; - 4E6F26A33139B0C19A6F3B9086C6364C /* TZLocationManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TZLocationManager.m; path = TZImagePickerController/TZImagePickerController/TZLocationManager.m; sourceTree = ""; }; + 38BA8A0DAC27BF18A443E8E5FB7FE333 /* NSData+ImageContentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+ImageContentType.h"; path = "SDWebImage/NSData+ImageContentType.h"; sourceTree = ""; }; + 393FDD5D9311C6F722EA84048F417624 /* TZPhotoPreviewCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TZPhotoPreviewCell.m; path = TZImagePickerController/TZImagePickerController/TZPhotoPreviewCell.m; sourceTree = ""; }; + 44DF73C24E6E9E0FB113446935C80EC9 /* TZLocationManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TZLocationManager.m; path = TZImagePickerController/TZImagePickerController/TZLocationManager.m; sourceTree = ""; }; + 47A80DC97FD6975A3D9254F3324CB22F /* SDWebImagePrefetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImagePrefetcher.m; path = SDWebImage/SDWebImagePrefetcher.m; sourceTree = ""; }; + 4DA5761FC6E513864674CB119D598A0D /* TZImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TZImageManager.h; path = TZImagePickerController/TZImagePickerController/TZImageManager.h; sourceTree = ""; }; + 4E3542F41A2EBB3097B2F0ACDC9BFB48 /* SDWebImageImageIOCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageImageIOCoder.m; path = SDWebImage/SDWebImageImageIOCoder.m; sourceTree = ""; }; + 4F365504BCE5400A1FCDD93EF225951C /* SDImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCache.m; path = SDWebImage/SDImageCache.m; sourceTree = ""; }; 52DE9D953E11B23A45D3F166F3923D7C /* Pods-TZImagePreviewController-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-TZImagePreviewController-dummy.m"; sourceTree = ""; }; - 5301D03826CB71B7F0E94E7781773CA1 /* UIImage+GIF.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+GIF.m"; path = "SDWebImage/UIImage+GIF.m"; sourceTree = ""; }; - 53AB0D47BC1A6EAA3470269669FE0227 /* SDWebImageGIFCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageGIFCoder.h; path = SDWebImage/SDWebImageGIFCoder.h; sourceTree = ""; }; - 551ED56FC457AB592A3AFB148E6A4AD4 /* SDWebImageGIFCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageGIFCoder.m; path = SDWebImage/SDWebImageGIFCoder.m; sourceTree = ""; }; + 53AE53DCF59053519BE0257045B96569 /* TZImageManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TZImageManager.m; path = TZImagePickerController/TZImagePickerController/TZImageManager.m; sourceTree = ""; }; + 54FAF994C5EE3F2CDE00EB284C57E404 /* NSImage+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSImage+WebCache.m"; path = "SDWebImage/NSImage+WebCache.m"; sourceTree = ""; }; + 55539ED35FCE6A8F9077CF1D5FC1B8BB /* SDWebImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-prefix.pch"; sourceTree = ""; }; 555BDBB7E3E0CF3166CF1F1E79A9DAC8 /* libPods-TZImagePreviewController.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-TZImagePreviewController.a"; path = "libPods-TZImagePreviewController.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 578F7276656662E591EC638FB3B0D738 /* Pods-TZImagePreviewController-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-TZImagePreviewController-acknowledgements.markdown"; sourceTree = ""; }; - 5E760A1FDF263BF7E6056E171F26291C /* TZAssetModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TZAssetModel.m; path = TZImagePickerController/TZImagePickerController/TZAssetModel.m; sourceTree = ""; }; - 65C48C85C82DF855C11C2B26C2AB139E /* SDImageCacheConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheConfig.m; path = SDWebImage/SDImageCacheConfig.m; sourceTree = ""; }; - 6624DB57BB30F2D1D3E3AC55ECD43310 /* TZPhotoPickerController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TZPhotoPickerController.h; path = TZImagePickerController/TZImagePickerController/TZPhotoPickerController.h; sourceTree = ""; }; - 69EC87B90D6DC45C13A9C7F2119ED383 /* SDWebImageManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageManager.m; path = SDWebImage/SDWebImageManager.m; sourceTree = ""; }; - 7844E9F43647E5FF8BBBB96E4EC73F73 /* UIImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+WebCache.h"; path = "SDWebImage/UIImageView+WebCache.h"; sourceTree = ""; }; - 7892A940B167A3B337F61FEC48CAA293 /* SDWebImageCompat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCompat.m; path = SDWebImage/SDWebImageCompat.m; sourceTree = ""; }; - 78FEEC4279D1D28D320940AE29A52109 /* UIButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+WebCache.m"; path = "SDWebImage/UIButton+WebCache.m"; sourceTree = ""; }; - 7CBBF6FD0367B03CE07379790F0669A5 /* UIImage+MultiFormat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MultiFormat.h"; path = "SDWebImage/UIImage+MultiFormat.h"; sourceTree = ""; }; - 7EFB67AEAD28CBD5B89761349DE46A47 /* UIButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+WebCache.h"; path = "SDWebImage/UIButton+WebCache.h"; sourceTree = ""; }; - 80957151A0BFEBA62884F7C4B64A791C /* TZPhotoPreviewCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TZPhotoPreviewCell.m; path = TZImagePickerController/TZImagePickerController/TZPhotoPreviewCell.m; sourceTree = ""; }; - 833D5D456949D7DDAA3A4E71D439C7BF /* TZImagePickerController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TZImagePickerController.h; path = TZImagePickerController/TZImagePickerController/TZImagePickerController.h; sourceTree = ""; }; - 87AED9C0AF04FB8A40FAA12EC5E016F8 /* SDWebImageDownloaderOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderOperation.h; path = SDWebImage/SDWebImageDownloaderOperation.h; sourceTree = ""; }; - 8F8048FD2A468115C0325B03A9ABE170 /* TZImageCropManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TZImageCropManager.m; path = TZImagePickerController/TZImagePickerController/TZImageCropManager.m; sourceTree = ""; }; + 5A1331F0D91E6529412F474574E35495 /* TZPhotoPreviewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TZPhotoPreviewController.h; path = TZImagePickerController/TZImagePickerController/TZPhotoPreviewController.h; sourceTree = ""; }; + 6295C6869424DB7BFA9D98B17F97FBF1 /* UIImage+GIF.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+GIF.m"; path = "SDWebImage/UIImage+GIF.m"; sourceTree = ""; }; + 62F5F81CF79FE5A8DF8F0D80B13A5F27 /* NSBundle+TZImagePicker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSBundle+TZImagePicker.h"; path = "TZImagePickerController/TZImagePickerController/NSBundle+TZImagePicker.h"; sourceTree = ""; }; + 6844F6847F587F0E5457030054DC32D5 /* TZVideoPlayerController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TZVideoPlayerController.h; path = TZImagePickerController/TZImagePickerController/TZVideoPlayerController.h; sourceTree = ""; }; + 6AE40B9292D77398F573BCDF2C59A8F6 /* UIView+Layout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+Layout.h"; path = "TZImagePickerController/TZImagePickerController/UIView+Layout.h"; sourceTree = ""; }; + 6CA38190FED090A2B2F31352DF4E83AF /* SDWebImageTransition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageTransition.h; path = SDWebImage/SDWebImageTransition.h; sourceTree = ""; }; + 727D8027DA46F56E257C3BA3ED73A32E /* SDWebImageDownloaderOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderOperation.h; path = SDWebImage/SDWebImageDownloaderOperation.h; sourceTree = ""; }; + 73147BF3C1F9B8B5121B114E5733C190 /* UIView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCache.h"; path = "SDWebImage/UIView+WebCache.h"; sourceTree = ""; }; + 7B09F5DE6675BC893BCDA111982F4C3A /* SDWebImageCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCoder.h; path = SDWebImage/SDWebImageCoder.h; sourceTree = ""; }; + 7D0FBBDA0E353D2D04FB7C15AE33C606 /* UIImage+ForceDecode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+ForceDecode.m"; path = "SDWebImage/UIImage+ForceDecode.m"; sourceTree = ""; }; + 82EEC6ACEFFE7D67314D76CBA2902DFC /* SDImageCacheConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCacheConfig.h; path = SDWebImage/SDImageCacheConfig.h; sourceTree = ""; }; + 87BE065B159A830D6BE5E21BA72F8D60 /* TZImagePickerController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TZImagePickerController.m; path = TZImagePickerController/TZImagePickerController/TZImagePickerController.m; sourceTree = ""; }; + 8CC020C9A7EC2279ED2264CEEDF744B6 /* SDWebImageGIFCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageGIFCoder.h; path = SDWebImage/SDWebImageGIFCoder.h; sourceTree = ""; }; + 8DC82B4F0FF70ED4EA07778AD4719590 /* TZVideoPlayerController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TZVideoPlayerController.m; path = TZImagePickerController/TZImagePickerController/TZVideoPlayerController.m; sourceTree = ""; }; + 8DFAB6138DCF28D5517E09D7DE1713C0 /* SDWebImageFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageFrame.h; path = SDWebImage/SDWebImageFrame.h; sourceTree = ""; }; + 8E81298D856A892080C44D86B1CEF0C4 /* TZImagePickerController-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "TZImagePickerController-dummy.m"; sourceTree = ""; }; + 9158766318503F06F6406C6645DC4FEC /* UIImage+ForceDecode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+ForceDecode.h"; path = "SDWebImage/UIImage+ForceDecode.h"; sourceTree = ""; }; 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 943936650547551F18340AE0975EC649 /* SDWebImageCodersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCodersManager.h; path = SDWebImage/SDWebImageCodersManager.h; sourceTree = ""; }; + 94A2800829FBEA796B544EEE1D4B97DB /* SDWebImageImageIOCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageImageIOCoder.h; path = SDWebImage/SDWebImageImageIOCoder.h; sourceTree = ""; }; + 94CB6B606B11C26170394BA2F93BC65F /* NSButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSButton+WebCache.m"; path = "SDWebImage/NSButton+WebCache.m"; sourceTree = ""; }; + 95A104C79CB011DC5DB7B7A892EF234D /* UIImage+GIF.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+GIF.h"; path = "SDWebImage/UIImage+GIF.h"; sourceTree = ""; }; + 965D6CEE97D453F14ECD78548AF3A1A6 /* TZAssetCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TZAssetCell.m; path = TZImagePickerController/TZImagePickerController/TZAssetCell.m; sourceTree = ""; }; + 984396F8F484F0CCA681545B86CB3227 /* TZPhotoPickerController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TZPhotoPickerController.m; path = TZImagePickerController/TZImagePickerController/TZPhotoPickerController.m; sourceTree = ""; }; + 992123E30BB704A170E5BE577E85AF6C /* NSData+ImageContentType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+ImageContentType.m"; path = "SDWebImage/NSData+ImageContentType.m"; sourceTree = ""; }; + 9A5C118A86B132DB6D5BF61AE8FAD5B5 /* SDWebImageTransition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageTransition.m; path = SDWebImage/SDWebImageTransition.m; sourceTree = ""; }; + 9CC9BC30A95BE151585C937C652FF05F /* SDWebImagePrefetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImagePrefetcher.h; path = SDWebImage/SDWebImagePrefetcher.h; sourceTree = ""; }; A15F4934EDBB53B544974AC3E8A56D2B /* Photos.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Photos.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.3.sdk/System/Library/Frameworks/Photos.framework; sourceTree = DEVELOPER_DIR; }; - A3BBDD6935F59684EA447DF5E7237D90 /* SDWebImagePrefetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImagePrefetcher.m; path = SDWebImage/SDWebImagePrefetcher.m; sourceTree = ""; }; - A49DC4B4A77B3F3A156D4EE1A003DF53 /* NSImage+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSImage+WebCache.m"; path = "SDWebImage/NSImage+WebCache.m"; sourceTree = ""; }; - A5DC12D18E05E2747ECDA65325A49D5A /* NSBundle+TZImagePicker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSBundle+TZImagePicker.h"; path = "TZImagePickerController/TZImagePickerController/NSBundle+TZImagePicker.h"; sourceTree = ""; }; - A62852DC84F0AE576AF152829BEDEE4B /* TZImagePickerController-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "TZImagePickerController-prefix.pch"; sourceTree = ""; }; - AB4F680DC34A7276993408CF1410D96D /* NSButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSButton+WebCache.h"; path = "SDWebImage/NSButton+WebCache.h"; sourceTree = ""; }; - ABF4D3E9E4CFAD018EE7C284934E4FB6 /* TZAssetCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TZAssetCell.h; path = TZImagePickerController/TZImagePickerController/TZAssetCell.h; sourceTree = ""; }; + A1947EBBD68779CCF7DDFE9B4263EEA1 /* TZImagePickerController-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "TZImagePickerController-prefix.pch"; sourceTree = ""; }; + A5D1F035C1867F40E5C994AEC8DD0A85 /* TZImageCropManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TZImageCropManager.h; path = TZImagePickerController/TZImagePickerController/TZImageCropManager.h; sourceTree = ""; }; + A9606523F2EC2E4CFD80BEB3838317F5 /* TZImageRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TZImageRequestOperation.m; path = TZImagePickerController/TZImagePickerController/TZImageRequestOperation.m; sourceTree = ""; }; + AB28E27EA193A6405917DC9D2321EF04 /* SDImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCache.h; path = SDWebImage/SDImageCache.h; sourceTree = ""; }; + ACDE1143C377F89FEFA7009B9866A9A5 /* TZImagePickerController.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = TZImagePickerController.xcconfig; sourceTree = ""; }; + AE114C67E2A94F3528D7E0CE817F98A4 /* SDWebImageCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCoder.m; path = SDWebImage/SDWebImageCoder.m; sourceTree = ""; }; + AF17AA89B44339C8AF161D3E02F62B11 /* UIButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+WebCache.m"; path = "SDWebImage/UIButton+WebCache.m"; sourceTree = ""; }; + AF814533C8A8288CEEB161B7BF13779D /* TZPhotoPreviewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TZPhotoPreviewController.m; path = TZImagePickerController/TZImagePickerController/TZPhotoPreviewController.m; sourceTree = ""; }; + B029D783DDE6E210F74823CAE393650F /* SDAnimatedImageRep.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImageRep.m; path = SDWebImage/SDAnimatedImageRep.m; sourceTree = ""; }; B1D6ECB517C5C02CE3FEBE11D2CBE5B2 /* Pods-TZImagePreviewController.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-TZImagePreviewController.debug.xcconfig"; sourceTree = ""; }; - B2B51AB71875E71132EF0C3B05E7D71A /* NSData+ImageContentType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+ImageContentType.m"; path = "SDWebImage/NSData+ImageContentType.m"; sourceTree = ""; }; - B327BFCA5CEE67EF5F26191EE6E2456B /* NSButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSButton+WebCache.m"; path = "SDWebImage/NSButton+WebCache.m"; sourceTree = ""; }; + B39322E50BC1BCF6EFD68F9367C95C05 /* TZImagePickerController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TZImagePickerController.h; path = TZImagePickerController/TZImagePickerController/TZImagePickerController.h; sourceTree = ""; }; B42955191C3DBC9907D29A534C04900B /* libSDWebImage.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libSDWebImage.a; path = libSDWebImage.a; sourceTree = BUILT_PRODUCTS_DIR; }; - B9A63161A7A76D22F601ACCB7C38FD16 /* TZPhotoPreviewCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TZPhotoPreviewCell.h; path = TZImagePickerController/TZImagePickerController/TZPhotoPreviewCell.h; sourceTree = ""; }; + B43EB0DA094B2FC1DE524B19F4061699 /* SDWebImageDownloaderOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderOperation.m; path = SDWebImage/SDWebImageDownloaderOperation.m; sourceTree = ""; }; B9D50F8C9CEDF2BCEBD85A51891F2483 /* Pods-TZImagePreviewController-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-TZImagePreviewController-acknowledgements.plist"; sourceTree = ""; }; - BCD8FAE1D53F67FBCF52F485F19AE2EC /* SDWebImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SDWebImage-dummy.m"; sourceTree = ""; }; - C1850722E11A3FC5F23BC982EBCE2E19 /* SDWebImageCoderHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCoderHelper.h; path = SDWebImage/SDWebImageCoderHelper.h; sourceTree = ""; }; - C3BCA0CF04F6BC655D26C347876C2E54 /* SDWebImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-prefix.pch"; sourceTree = ""; }; - C57CCE1202F90578997BC1EDC8AC97CC /* UIView+Layout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+Layout.h"; path = "TZImagePickerController/TZImagePickerController/UIView+Layout.h"; sourceTree = ""; }; - C597A59DF3BC9A2B8DDB650FA24C0B5D /* SDWebImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloader.h; path = SDWebImage/SDWebImageDownloader.h; sourceTree = ""; }; - C61A91EC01BEC81255A080F2B57160EB /* NSImage+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSImage+WebCache.h"; path = "SDWebImage/NSImage+WebCache.h"; sourceTree = ""; }; - CAC9896D9D108A5F07B9CD6046726056 /* TZPhotoPreviewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TZPhotoPreviewController.h; path = TZImagePickerController/TZImagePickerController/TZPhotoPreviewController.h; sourceTree = ""; }; - CADDC636088FA157E29C8D1D0B4ED280 /* UIImageView+HighlightedWebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+HighlightedWebCache.h"; path = "SDWebImage/UIImageView+HighlightedWebCache.h"; sourceTree = ""; }; - CB5F2449DC558DD5A42518E3082FB7CA /* SDWebImageCoderHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCoderHelper.m; path = SDWebImage/SDWebImageCoderHelper.m; sourceTree = ""; }; + BA86188322E738698CD288FEC93A0978 /* TZProgressView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TZProgressView.h; path = TZImagePickerController/TZImagePickerController/TZProgressView.h; sourceTree = ""; }; + BEB53E43D223608B93568A1C4D7A66BF /* TZPhotoPickerController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TZPhotoPickerController.h; path = TZImagePickerController/TZImagePickerController/TZPhotoPickerController.h; sourceTree = ""; }; + BEF06649CE8611C6F244B72E9E2F79A4 /* UIImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+WebCache.m"; path = "SDWebImage/UIImageView+WebCache.m"; sourceTree = ""; }; + C21B63AAAA4583C8B8D45AC1A7DECAD7 /* UIView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCache.m"; path = "SDWebImage/UIView+WebCache.m"; sourceTree = ""; }; + C546AA8651B8E19DFD8E74627768D12A /* SDWebImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageManager.h; path = SDWebImage/SDWebImageManager.h; sourceTree = ""; }; CBE35B67C1720341940B92BD6DAA4D43 /* Pods-TZImagePreviewController-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-TZImagePreviewController-frameworks.sh"; sourceTree = ""; }; - CC6AB618D1CC2E0107702C5D03F5849E /* TZImagePickerController-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "TZImagePickerController-dummy.m"; sourceTree = ""; }; - CE23C9A01F73C11B4F15EADC23954909 /* UIView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCache.m"; path = "SDWebImage/UIView+WebCache.m"; sourceTree = ""; }; - CF14DFA2196916963099905EEBE49A10 /* UIImage+MultiFormat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MultiFormat.m"; path = "SDWebImage/UIImage+MultiFormat.m"; sourceTree = ""; }; - D6245D678C4FF1B9D1B1B42D70676F91 /* SDWebImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloader.m; path = SDWebImage/SDWebImageDownloader.m; sourceTree = ""; }; - DB1386B144AF08F4C05F84EE16E82446 /* UIView+WebCacheOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheOperation.m"; path = "SDWebImage/UIView+WebCacheOperation.m"; sourceTree = ""; }; - DB25F3D5FD136EF4A76BCD61D3BAB799 /* SDWebImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageManager.h; path = SDWebImage/SDWebImageManager.h; sourceTree = ""; }; - DD456D3F85789EFFF603B55096BC6016 /* SDAnimatedImageRep.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImageRep.m; path = SDWebImage/SDAnimatedImageRep.m; sourceTree = ""; }; - DFBF62D89FE92DD5630D68B73552FF76 /* TZGifPhotoPreviewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TZGifPhotoPreviewController.m; path = TZImagePickerController/TZImagePickerController/TZGifPhotoPreviewController.m; sourceTree = ""; }; - DFC80AD4AAE334B0896DA7A480EB0793 /* SDWebImageTransition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageTransition.h; path = SDWebImage/SDWebImageTransition.h; sourceTree = ""; }; - E0935A0BB15CB3A14CE6F4FEEAEAEB9D /* SDWebImagePrefetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImagePrefetcher.h; path = SDWebImage/SDWebImagePrefetcher.h; sourceTree = ""; }; - E938F89A50F325793B07F82A547A9619 /* TZImageCropManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TZImageCropManager.h; path = TZImagePickerController/TZImagePickerController/TZImageCropManager.h; sourceTree = ""; }; - F10FD17C7C44F20FF51EBBBBB74FADD7 /* UIImage+GIF.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+GIF.h"; path = "SDWebImage/UIImage+GIF.h"; sourceTree = ""; }; - F189D115DF23492C8DB154B85E25ECED /* SDWebImageCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCoder.m; path = SDWebImage/SDWebImageCoder.m; sourceTree = ""; }; - F1DB48D028641338829E0AA3E865B30B /* UIImageView+HighlightedWebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+HighlightedWebCache.m"; path = "SDWebImage/UIImageView+HighlightedWebCache.m"; sourceTree = ""; }; - F5700A955E10B76FA9816AF3FAECB5D9 /* SDWebImageTransition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageTransition.m; path = SDWebImage/SDWebImageTransition.m; sourceTree = ""; }; - F9963D50259E53B407C2420E532AC7A3 /* TZImagePickerController.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = TZImagePickerController.bundle; path = TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle; sourceTree = ""; }; - F9BF96D91E27C60955598317311163AC /* SDImageCacheConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCacheConfig.h; path = SDWebImage/SDImageCacheConfig.h; sourceTree = ""; }; - FCE4313F84322935009FEA0B6BD1B1EB /* UIView+WebCacheOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCacheOperation.h"; path = "SDWebImage/UIView+WebCacheOperation.h"; sourceTree = ""; }; - FE9D5C4C0638F06BB9BFBF5B8112BE59 /* TZProgressView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TZProgressView.h; path = TZImagePickerController/TZImagePickerController/TZProgressView.h; sourceTree = ""; }; + D13B435B3E0D1D5141798815F2A03FE4 /* TZAssetModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TZAssetModel.h; path = TZImagePickerController/TZImagePickerController/TZAssetModel.h; sourceTree = ""; }; + D4EB6A6271984DB11AEF7314FA60B0DB /* SDWebImageManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageManager.m; path = SDWebImage/SDWebImageManager.m; sourceTree = ""; }; + D9C1ED29869406A5BFD8AE07B34ABAC1 /* SDImageCacheConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheConfig.m; path = SDWebImage/SDImageCacheConfig.m; sourceTree = ""; }; + DCEDBF0B0699A9A38625E6932023A156 /* TZPhotoPreviewCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TZPhotoPreviewCell.h; path = TZImagePickerController/TZImagePickerController/TZPhotoPreviewCell.h; sourceTree = ""; }; + E2159423A4FAE370CDCA42643D3571E2 /* UIImage+MultiFormat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MultiFormat.h"; path = "SDWebImage/UIImage+MultiFormat.h"; sourceTree = ""; }; + E32D52C665972C86E1064A1FB9CCBC3F /* SDWebImageFrame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageFrame.m; path = SDWebImage/SDWebImageFrame.m; sourceTree = ""; }; + E5DDC27E3E01E01C499CE3DFDBB5A94F /* TZLocationManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TZLocationManager.h; path = TZImagePickerController/TZImagePickerController/TZLocationManager.h; sourceTree = ""; }; + E6F8F42833DC935B4862A9764E86C0D1 /* TZGifPhotoPreviewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TZGifPhotoPreviewController.m; path = TZImagePickerController/TZImagePickerController/TZGifPhotoPreviewController.m; sourceTree = ""; }; + E760469BB1144445D5132F93ED8387D8 /* TZImageRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TZImageRequestOperation.h; path = TZImagePickerController/TZImagePickerController/TZImageRequestOperation.h; sourceTree = ""; }; + E8270D264F169F0AF1D5D3C71F4936DB /* SDWebImageGIFCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageGIFCoder.m; path = SDWebImage/SDWebImageGIFCoder.m; sourceTree = ""; }; + EA2D0154103FF7253752DD2EDC89B13F /* SDWebImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloader.m; path = SDWebImage/SDWebImageDownloader.m; sourceTree = ""; }; + EAA7BF84CBAEA41D0A400ECDE050D673 /* SDWebImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SDWebImage-dummy.m"; sourceTree = ""; }; + EFD78B7F8FC162383A97499FD37803F8 /* UIButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+WebCache.h"; path = "SDWebImage/UIButton+WebCache.h"; sourceTree = ""; }; + F4B9206546A447004E4BC249E44397F2 /* SDWebImageCompat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCompat.m; path = SDWebImage/SDWebImageCompat.m; sourceTree = ""; }; + F54A0C8632F48586307C6CCAD95FEFB9 /* NSButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSButton+WebCache.h"; path = "SDWebImage/NSButton+WebCache.h"; sourceTree = ""; }; + F6F594AB4A7D306EAD9AC2A3AB542C56 /* TZImageCropManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TZImageCropManager.m; path = TZImagePickerController/TZImagePickerController/TZImageCropManager.m; sourceTree = ""; }; + FDAD0C512A99900A35D6191DE570EF6E /* SDWebImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloader.h; path = SDWebImage/SDWebImageDownloader.h; sourceTree = ""; }; + FEAFF3C64570D3AB241E1465831A4C32 /* UIView+Layout.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+Layout.m"; path = "TZImagePickerController/TZImagePickerController/UIView+Layout.m"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -243,73 +247,15 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 299AF1050790339067998F0E1EA921AD /* Core */ = { + 232C475D0817720E50B267B0429944D6 /* Support Files */ = { isa = PBXGroup; children = ( - AB4F680DC34A7276993408CF1410D96D /* NSButton+WebCache.h */, - B327BFCA5CEE67EF5F26191EE6E2456B /* NSButton+WebCache.m */, - 0618DABE2232A13A1BBEC7725172779E /* NSData+ImageContentType.h */, - B2B51AB71875E71132EF0C3B05E7D71A /* NSData+ImageContentType.m */, - C61A91EC01BEC81255A080F2B57160EB /* NSImage+WebCache.h */, - A49DC4B4A77B3F3A156D4EE1A003DF53 /* NSImage+WebCache.m */, - 4D8D8A67C179AE5026A3AE64F9FEA911 /* SDAnimatedImageRep.h */, - DD456D3F85789EFFF603B55096BC6016 /* SDAnimatedImageRep.m */, - 4C19E5C52550EE1DFCF8D34A407617DB /* SDImageCache.h */, - 377B2370DA9C303F74BDCC9421EF623E /* SDImageCache.m */, - F9BF96D91E27C60955598317311163AC /* SDImageCacheConfig.h */, - 65C48C85C82DF855C11C2B26C2AB139E /* SDImageCacheConfig.m */, - 42C1B37098E125468364E64AD82291BF /* SDWebImageCoder.h */, - F189D115DF23492C8DB154B85E25ECED /* SDWebImageCoder.m */, - C1850722E11A3FC5F23BC982EBCE2E19 /* SDWebImageCoderHelper.h */, - CB5F2449DC558DD5A42518E3082FB7CA /* SDWebImageCoderHelper.m */, - 36616F0456AD85E4BA3967B4E6AFE1DF /* SDWebImageCodersManager.h */, - 3B5AED5ACE7A14FAA1DE17082A17AE4F /* SDWebImageCodersManager.m */, - 224839211FFC32DA5CBF7502128705A2 /* SDWebImageCompat.h */, - 7892A940B167A3B337F61FEC48CAA293 /* SDWebImageCompat.m */, - C597A59DF3BC9A2B8DDB650FA24C0B5D /* SDWebImageDownloader.h */, - D6245D678C4FF1B9D1B1B42D70676F91 /* SDWebImageDownloader.m */, - 87AED9C0AF04FB8A40FAA12EC5E016F8 /* SDWebImageDownloaderOperation.h */, - 1248C001673FA1FCD4DB071754101528 /* SDWebImageDownloaderOperation.m */, - 3760CBAA59EAFFBBD8C2CDE1567B0926 /* SDWebImageFrame.h */, - 0894953D9D0DC18617E37140A1AABD5D /* SDWebImageFrame.m */, - 53AB0D47BC1A6EAA3470269669FE0227 /* SDWebImageGIFCoder.h */, - 551ED56FC457AB592A3AFB148E6A4AD4 /* SDWebImageGIFCoder.m */, - 38260C3CDBDE725FA614B7A08B74921F /* SDWebImageImageIOCoder.h */, - 2C81E926A8032654175503FCE7AA4E3F /* SDWebImageImageIOCoder.m */, - DB25F3D5FD136EF4A76BCD61D3BAB799 /* SDWebImageManager.h */, - 69EC87B90D6DC45C13A9C7F2119ED383 /* SDWebImageManager.m */, - 247704218727198352889F939834A281 /* SDWebImageOperation.h */, - E0935A0BB15CB3A14CE6F4FEEAEAEB9D /* SDWebImagePrefetcher.h */, - A3BBDD6935F59684EA447DF5E7237D90 /* SDWebImagePrefetcher.m */, - DFC80AD4AAE334B0896DA7A480EB0793 /* SDWebImageTransition.h */, - F5700A955E10B76FA9816AF3FAECB5D9 /* SDWebImageTransition.m */, - 7EFB67AEAD28CBD5B89761349DE46A47 /* UIButton+WebCache.h */, - 78FEEC4279D1D28D320940AE29A52109 /* UIButton+WebCache.m */, - 403D53B1ECDC388DB7C9B4032F9A2E40 /* UIImage+ForceDecode.h */, - 3E0C55BCE6562FEE8928411BB05A00C6 /* UIImage+ForceDecode.m */, - F10FD17C7C44F20FF51EBBBBB74FADD7 /* UIImage+GIF.h */, - 5301D03826CB71B7F0E94E7781773CA1 /* UIImage+GIF.m */, - 7CBBF6FD0367B03CE07379790F0669A5 /* UIImage+MultiFormat.h */, - CF14DFA2196916963099905EEBE49A10 /* UIImage+MultiFormat.m */, - CADDC636088FA157E29C8D1D0B4ED280 /* UIImageView+HighlightedWebCache.h */, - F1DB48D028641338829E0AA3E865B30B /* UIImageView+HighlightedWebCache.m */, - 7844E9F43647E5FF8BBBB96E4EC73F73 /* UIImageView+WebCache.h */, - 44AAECAE4B08CD5C5CD246908A40E650 /* UIImageView+WebCache.m */, - 138F27FE7AE86815007C42DEAB13E6D6 /* UIView+WebCache.h */, - CE23C9A01F73C11B4F15EADC23954909 /* UIView+WebCache.m */, - FCE4313F84322935009FEA0B6BD1B1EB /* UIView+WebCacheOperation.h */, - DB1386B144AF08F4C05F84EE16E82446 /* UIView+WebCacheOperation.m */, + 09DCE739B5AFF3035CF9FCC542CD8598 /* SDWebImage.xcconfig */, + EAA7BF84CBAEA41D0A400ECDE050D673 /* SDWebImage-dummy.m */, + 55539ED35FCE6A8F9077CF1D5FC1B8BB /* SDWebImage-prefix.pch */, ); - name = Core; - sourceTree = ""; - }; - 395D8E873D00985457CF61B04EF5BE2D /* Pods */ = { - isa = PBXGroup; - children = ( - B229BCCF3178CE4F6637A0B1D85552E8 /* SDWebImage */, - 5F8EC1EFF884C1C5007E83B1A2DD200C /* TZImagePickerController */, - ); - name = Pods; + name = "Support Files"; + path = "../Target Support Files/SDWebImage"; sourceTree = ""; }; 433CD3331B6C3787F473C941B61FC68F /* Frameworks */ = { @@ -320,55 +266,6 @@ name = Frameworks; sourceTree = ""; }; - 505E5C6AAB907CB64CE43618F1467BAF /* Support Files */ = { - isa = PBXGroup; - children = ( - 062099BE56A5BD26607B3EB8BA45509B /* TZImagePickerController.xcconfig */, - CC6AB618D1CC2E0107702C5D03F5849E /* TZImagePickerController-dummy.m */, - A62852DC84F0AE576AF152829BEDEE4B /* TZImagePickerController-prefix.pch */, - ); - name = "Support Files"; - path = "../Target Support Files/TZImagePickerController"; - sourceTree = ""; - }; - 5F8EC1EFF884C1C5007E83B1A2DD200C /* TZImagePickerController */ = { - isa = PBXGroup; - children = ( - A5DC12D18E05E2747ECDA65325A49D5A /* NSBundle+TZImagePicker.h */, - 05C42EE27FA37D411F8AA3E84C97D724 /* NSBundle+TZImagePicker.m */, - ABF4D3E9E4CFAD018EE7C284934E4FB6 /* TZAssetCell.h */, - 2B6E7BFFF0258A0104C86F8EAED9C590 /* TZAssetCell.m */, - 18A1C7DE167C08B17A517856B8862DF9 /* TZAssetModel.h */, - 5E760A1FDF263BF7E6056E171F26291C /* TZAssetModel.m */, - 1EA5ABF99D5786000AE3EB92381017F5 /* TZGifPhotoPreviewController.h */, - DFBF62D89FE92DD5630D68B73552FF76 /* TZGifPhotoPreviewController.m */, - E938F89A50F325793B07F82A547A9619 /* TZImageCropManager.h */, - 8F8048FD2A468115C0325B03A9ABE170 /* TZImageCropManager.m */, - 05A5A8E3267609D207C906EB61A6E865 /* TZImageManager.h */, - 1CC7D6746DEE0BDB09E983CE6B10EAFC /* TZImageManager.m */, - 833D5D456949D7DDAA3A4E71D439C7BF /* TZImagePickerController.h */, - 32A0166860629B4CEDB32A0AFB04003B /* TZImagePickerController.m */, - 05C677E160F303E3DC37A4FE65105452 /* TZLocationManager.h */, - 4E6F26A33139B0C19A6F3B9086C6364C /* TZLocationManager.m */, - 6624DB57BB30F2D1D3E3AC55ECD43310 /* TZPhotoPickerController.h */, - 0170AE165A25AAB746D1CDD1C4965B73 /* TZPhotoPickerController.m */, - B9A63161A7A76D22F601ACCB7C38FD16 /* TZPhotoPreviewCell.h */, - 80957151A0BFEBA62884F7C4B64A791C /* TZPhotoPreviewCell.m */, - CAC9896D9D108A5F07B9CD6046726056 /* TZPhotoPreviewController.h */, - 0610DF95342E3ECEEAA5CFF5F8F13C50 /* TZPhotoPreviewController.m */, - FE9D5C4C0638F06BB9BFBF5B8112BE59 /* TZProgressView.h */, - 2348411A7A72F904064B8A67C79C33CC /* TZProgressView.m */, - 22008102178B7ED73B538EBE62F67AC5 /* TZVideoPlayerController.h */, - 35938F4076FA5F6A4A0531ED172F9E40 /* TZVideoPlayerController.m */, - C57CCE1202F90578997BC1EDC8AC97CC /* UIView+Layout.h */, - 287E0F40ED265FFC12E3491F0F16C9DD /* UIView+Layout.m */, - 8994AE8E6F937196C1244A7891B935E9 /* Resources */, - 505E5C6AAB907CB64CE43618F1467BAF /* Support Files */, - ); - name = TZImagePickerController; - path = TZImagePickerController; - sourceTree = ""; - }; 6413033A96C506C8BB582922CE430CB9 /* iOS */ = { isa = PBXGroup; children = ( @@ -406,16 +303,16 @@ children = ( 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, 433CD3331B6C3787F473C941B61FC68F /* Frameworks */, - 395D8E873D00985457CF61B04EF5BE2D /* Pods */, + DE6914FA234E2EACA69F3F0C36BE6F29 /* Pods */, AAF41CACAE07E520E04B2E174230868D /* Products */, 6E9036273B0AEAFD1FA1C23EE15410D4 /* Targets Support Files */, ); sourceTree = ""; }; - 8994AE8E6F937196C1244A7891B935E9 /* Resources */ = { + 94F3F91BFD34F0B2F467D8948319D986 /* Resources */ = { isa = PBXGroup; children = ( - F9963D50259E53B407C2420E532AC7A3 /* TZImagePickerController.bundle */, + 2498510226EA45446DFBF664F8E7DB51 /* TZImagePickerController.bundle */, ); name = Resources; sourceTree = ""; @@ -430,25 +327,134 @@ name = Products; sourceTree = ""; }; - B229BCCF3178CE4F6637A0B1D85552E8 /* SDWebImage */ = { + B578CAE3431FEF682DDE4F4F44E38F8A /* TZImagePickerController */ = { + isa = PBXGroup; + children = ( + 62F5F81CF79FE5A8DF8F0D80B13A5F27 /* NSBundle+TZImagePicker.h */, + 31EC72731A1E661E99D1BA87C842B8BB /* NSBundle+TZImagePicker.m */, + 372BCB10CDE4D0EC42B64C480108CD5C /* TZAssetCell.h */, + 965D6CEE97D453F14ECD78548AF3A1A6 /* TZAssetCell.m */, + D13B435B3E0D1D5141798815F2A03FE4 /* TZAssetModel.h */, + 368D735EE68556285C7056E0CDB8549B /* TZAssetModel.m */, + 08A9D0D8D11DDCADF02CFC1E9FD5C1EE /* TZGifPhotoPreviewController.h */, + E6F8F42833DC935B4862A9764E86C0D1 /* TZGifPhotoPreviewController.m */, + A5D1F035C1867F40E5C994AEC8DD0A85 /* TZImageCropManager.h */, + F6F594AB4A7D306EAD9AC2A3AB542C56 /* TZImageCropManager.m */, + 4DA5761FC6E513864674CB119D598A0D /* TZImageManager.h */, + 53AE53DCF59053519BE0257045B96569 /* TZImageManager.m */, + B39322E50BC1BCF6EFD68F9367C95C05 /* TZImagePickerController.h */, + 87BE065B159A830D6BE5E21BA72F8D60 /* TZImagePickerController.m */, + E760469BB1144445D5132F93ED8387D8 /* TZImageRequestOperation.h */, + A9606523F2EC2E4CFD80BEB3838317F5 /* TZImageRequestOperation.m */, + E5DDC27E3E01E01C499CE3DFDBB5A94F /* TZLocationManager.h */, + 44DF73C24E6E9E0FB113446935C80EC9 /* TZLocationManager.m */, + BEB53E43D223608B93568A1C4D7A66BF /* TZPhotoPickerController.h */, + 984396F8F484F0CCA681545B86CB3227 /* TZPhotoPickerController.m */, + DCEDBF0B0699A9A38625E6932023A156 /* TZPhotoPreviewCell.h */, + 393FDD5D9311C6F722EA84048F417624 /* TZPhotoPreviewCell.m */, + 5A1331F0D91E6529412F474574E35495 /* TZPhotoPreviewController.h */, + AF814533C8A8288CEEB161B7BF13779D /* TZPhotoPreviewController.m */, + BA86188322E738698CD288FEC93A0978 /* TZProgressView.h */, + 1DF46FA54B87ED354EFEC7C42CEA2D69 /* TZProgressView.m */, + 6844F6847F587F0E5457030054DC32D5 /* TZVideoPlayerController.h */, + 8DC82B4F0FF70ED4EA07778AD4719590 /* TZVideoPlayerController.m */, + 6AE40B9292D77398F573BCDF2C59A8F6 /* UIView+Layout.h */, + FEAFF3C64570D3AB241E1465831A4C32 /* UIView+Layout.m */, + 94F3F91BFD34F0B2F467D8948319D986 /* Resources */, + DF25164274C21DC0719B4E014B66BB2C /* Support Files */, + ); + name = TZImagePickerController; + path = TZImagePickerController; + sourceTree = ""; + }; + B9E668D73C1B0754A4E4AB5F013664CF /* SDWebImage */ = { isa = PBXGroup; children = ( - 299AF1050790339067998F0E1EA921AD /* Core */, - E47007D0C281637074B6A19D2794B2DA /* Support Files */, + DA833218B6D73670B66D925467EFD687 /* Core */, + 232C475D0817720E50B267B0429944D6 /* Support Files */, ); name = SDWebImage; path = SDWebImage; sourceTree = ""; }; - E47007D0C281637074B6A19D2794B2DA /* Support Files */ = { + DA833218B6D73670B66D925467EFD687 /* Core */ = { + isa = PBXGroup; + children = ( + F54A0C8632F48586307C6CCAD95FEFB9 /* NSButton+WebCache.h */, + 94CB6B606B11C26170394BA2F93BC65F /* NSButton+WebCache.m */, + 38BA8A0DAC27BF18A443E8E5FB7FE333 /* NSData+ImageContentType.h */, + 992123E30BB704A170E5BE577E85AF6C /* NSData+ImageContentType.m */, + 112BDC7A3BCD23C6FCA8B96CBDEBA53C /* NSImage+WebCache.h */, + 54FAF994C5EE3F2CDE00EB284C57E404 /* NSImage+WebCache.m */, + 1BCEDBF47FC3D1A35F33E3F4EA2FA73C /* SDAnimatedImageRep.h */, + B029D783DDE6E210F74823CAE393650F /* SDAnimatedImageRep.m */, + AB28E27EA193A6405917DC9D2321EF04 /* SDImageCache.h */, + 4F365504BCE5400A1FCDD93EF225951C /* SDImageCache.m */, + 82EEC6ACEFFE7D67314D76CBA2902DFC /* SDImageCacheConfig.h */, + D9C1ED29869406A5BFD8AE07B34ABAC1 /* SDImageCacheConfig.m */, + 7B09F5DE6675BC893BCDA111982F4C3A /* SDWebImageCoder.h */, + AE114C67E2A94F3528D7E0CE817F98A4 /* SDWebImageCoder.m */, + 040818BECDE3C541A971973240117420 /* SDWebImageCoderHelper.h */, + 0C95D26B576AC15CCD8A6C129A257FBD /* SDWebImageCoderHelper.m */, + 943936650547551F18340AE0975EC649 /* SDWebImageCodersManager.h */, + 2CF0AAAFED95796ABD42EF4486A0DC7D /* SDWebImageCodersManager.m */, + 0D3FDB660288C5BBA59F28AB8B9E0492 /* SDWebImageCompat.h */, + F4B9206546A447004E4BC249E44397F2 /* SDWebImageCompat.m */, + FDAD0C512A99900A35D6191DE570EF6E /* SDWebImageDownloader.h */, + EA2D0154103FF7253752DD2EDC89B13F /* SDWebImageDownloader.m */, + 727D8027DA46F56E257C3BA3ED73A32E /* SDWebImageDownloaderOperation.h */, + B43EB0DA094B2FC1DE524B19F4061699 /* SDWebImageDownloaderOperation.m */, + 8DFAB6138DCF28D5517E09D7DE1713C0 /* SDWebImageFrame.h */, + E32D52C665972C86E1064A1FB9CCBC3F /* SDWebImageFrame.m */, + 8CC020C9A7EC2279ED2264CEEDF744B6 /* SDWebImageGIFCoder.h */, + E8270D264F169F0AF1D5D3C71F4936DB /* SDWebImageGIFCoder.m */, + 94A2800829FBEA796B544EEE1D4B97DB /* SDWebImageImageIOCoder.h */, + 4E3542F41A2EBB3097B2F0ACDC9BFB48 /* SDWebImageImageIOCoder.m */, + C546AA8651B8E19DFD8E74627768D12A /* SDWebImageManager.h */, + D4EB6A6271984DB11AEF7314FA60B0DB /* SDWebImageManager.m */, + 254EC04FF044B5FCE43DF3027CAFF9F8 /* SDWebImageOperation.h */, + 9CC9BC30A95BE151585C937C652FF05F /* SDWebImagePrefetcher.h */, + 47A80DC97FD6975A3D9254F3324CB22F /* SDWebImagePrefetcher.m */, + 6CA38190FED090A2B2F31352DF4E83AF /* SDWebImageTransition.h */, + 9A5C118A86B132DB6D5BF61AE8FAD5B5 /* SDWebImageTransition.m */, + EFD78B7F8FC162383A97499FD37803F8 /* UIButton+WebCache.h */, + AF17AA89B44339C8AF161D3E02F62B11 /* UIButton+WebCache.m */, + 9158766318503F06F6406C6645DC4FEC /* UIImage+ForceDecode.h */, + 7D0FBBDA0E353D2D04FB7C15AE33C606 /* UIImage+ForceDecode.m */, + 95A104C79CB011DC5DB7B7A892EF234D /* UIImage+GIF.h */, + 6295C6869424DB7BFA9D98B17F97FBF1 /* UIImage+GIF.m */, + E2159423A4FAE370CDCA42643D3571E2 /* UIImage+MultiFormat.h */, + 0CF2DDE907F831E9531A8D3538485DDF /* UIImage+MultiFormat.m */, + 05B064869FB41A77452312EA687EBDA2 /* UIImageView+HighlightedWebCache.h */, + 14D66FBF457C20D4AC04D22C0B0B4EC7 /* UIImageView+HighlightedWebCache.m */, + 144B28E02D1C4AB5F085C6480ECE688F /* UIImageView+WebCache.h */, + BEF06649CE8611C6F244B72E9E2F79A4 /* UIImageView+WebCache.m */, + 73147BF3C1F9B8B5121B114E5733C190 /* UIView+WebCache.h */, + C21B63AAAA4583C8B8D45AC1A7DECAD7 /* UIView+WebCache.m */, + 0A30624C13F23AFD1C1446310F4A7768 /* UIView+WebCacheOperation.h */, + 21B44848D8FCCD0A68BC90F02BE51418 /* UIView+WebCacheOperation.m */, + ); + name = Core; + sourceTree = ""; + }; + DE6914FA234E2EACA69F3F0C36BE6F29 /* Pods */ = { + isa = PBXGroup; + children = ( + B9E668D73C1B0754A4E4AB5F013664CF /* SDWebImage */, + B578CAE3431FEF682DDE4F4F44E38F8A /* TZImagePickerController */, + ); + name = Pods; + sourceTree = ""; + }; + DF25164274C21DC0719B4E014B66BB2C /* Support Files */ = { isa = PBXGroup; children = ( - 3827BD46EEC25AF62EDACD41951AA481 /* SDWebImage.xcconfig */, - BCD8FAE1D53F67FBCF52F485F19AE2EC /* SDWebImage-dummy.m */, - C3BCA0CF04F6BC655D26C347876C2E54 /* SDWebImage-prefix.pch */, + ACDE1143C377F89FEFA7009B9866A9A5 /* TZImagePickerController.xcconfig */, + 8E81298D856A892080C44D86B1CEF0C4 /* TZImagePickerController-dummy.m */, + A1947EBBD68779CCF7DDFE9B4263EEA1 /* TZImagePickerController-prefix.pch */, ); name = "Support Files"; - path = "../Target Support Files/SDWebImage"; + path = "../Target Support Files/TZImagePickerController"; sourceTree = ""; }; /* End PBXGroup section */ @@ -461,27 +467,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 3EF3CFB9FD508D3AE91255766FB3F9F4 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 9900EDADEEEE30EBF3100CBE7B85FCB6 /* NSBundle+TZImagePicker.h in Headers */, - 1636D5993D7C83286D7E26C30DD869D3 /* TZAssetCell.h in Headers */, - 8CC9CB8E032E58A04B08FD58BF0AEA6B /* TZAssetModel.h in Headers */, - 3FC149DCDC441B67165EFD95556A8775 /* TZGifPhotoPreviewController.h in Headers */, - 630DD2E4B7F8CA048C8AC0FF14D2E59F /* TZImageCropManager.h in Headers */, - 6DFBFD42C7ED1F76A1A9CD02D61040B7 /* TZImageManager.h in Headers */, - 2C44FD524ABE03FDBB4E1553699C71FE /* TZImagePickerController.h in Headers */, - 6807C43971CD8027D4EAB5491EE93FA1 /* TZLocationManager.h in Headers */, - 8D7DF88D363D8FA2A54D838CBD5F6E08 /* TZPhotoPickerController.h in Headers */, - 3989E5D7648AA1ACAEFE7A159EF77982 /* TZPhotoPreviewCell.h in Headers */, - 41684D7F2D21ADF16A6F08151A2F0CE8 /* TZPhotoPreviewController.h in Headers */, - D0DE565CCA7A0C1693A6714BAC9A2C07 /* TZProgressView.h in Headers */, - 71FDD8040BC5848A6B66585E97ED79F8 /* TZVideoPlayerController.h in Headers */, - 7B2797FE15FC290252DAE446E1F99CD2 /* UIView+Layout.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 47699818D2A5A5C70C15A9E1F77990EA /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -516,6 +501,28 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 7AACBD2B9B16858F662ABB0E18105901 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 4A4B74B3FD2D173A0436495D2CF886DA /* NSBundle+TZImagePicker.h in Headers */, + C50EEC0A1777C68864C960F12E415725 /* TZAssetCell.h in Headers */, + 79F546FF26467B2AEE730468C08EAF25 /* TZAssetModel.h in Headers */, + 1AE234092D4DFE812841817FCC9E59F1 /* TZGifPhotoPreviewController.h in Headers */, + 2978111CE8D3BAA61227EA8EE28BF0A5 /* TZImageCropManager.h in Headers */, + 2303DF9BE04E42D49847B83C94A9BF28 /* TZImageManager.h in Headers */, + AFE4BB49B08319CB2F78F628A8DC89E3 /* TZImagePickerController.h in Headers */, + C8D95BB71AB4B04E1B6A295DD247B73A /* TZImageRequestOperation.h in Headers */, + 8794650D48A43EF71628264B1E9A8EE3 /* TZLocationManager.h in Headers */, + 38CEC25C20AF48691BA2870AB1F8A7C7 /* TZPhotoPickerController.h in Headers */, + 3E94119E1109DFD3DB100709BDCB242E /* TZPhotoPreviewCell.h in Headers */, + 902DB0745EA76085A00907A1E4B9B2B9 /* TZPhotoPreviewController.h in Headers */, + 1C821AA84E5296166FDA32D6F164ACC6 /* TZProgressView.h in Headers */, + C1BDFEE9791BD1BC67D3C38A9FFE9193 /* TZVideoPlayerController.h in Headers */, + BC89D5902E7406950BE2A08F761986FC /* UIView+Layout.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ @@ -523,8 +530,8 @@ isa = PBXNativeTarget; buildConfigurationList = 77669F8B13AD6C8BA3EE76C56A62DA86 /* Build configuration list for PBXNativeTarget "TZImagePickerController" */; buildPhases = ( - 3EF3CFB9FD508D3AE91255766FB3F9F4 /* Headers */, - A59607E446BA38DB8B426180E7E18BAA /* Sources */, + 7AACBD2B9B16858F662ABB0E18105901 /* Headers */, + A89AC991365E4DB659F1D805EB906118 /* Sources */, D39484A42A70180E6B5332C3EC83134C /* Frameworks */, ); buildRules = ( @@ -643,25 +650,26 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - A59607E446BA38DB8B426180E7E18BAA /* Sources */ = { + A89AC991365E4DB659F1D805EB906118 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - ACEDC278DA91FF11436639C4783E4FA5 /* NSBundle+TZImagePicker.m in Sources */, - F27AEACD84435C8C67E720C3B6D6B59E /* TZAssetCell.m in Sources */, - C6382488820A6B2974B40FA26E561006 /* TZAssetModel.m in Sources */, - CA17FEAADC8AD2C553134A27C4416C68 /* TZGifPhotoPreviewController.m in Sources */, - 0FCC57550B06F0310A6C295A7BE5B0DD /* TZImageCropManager.m in Sources */, - 0782D2EF2C8ED9E12E51AF3BCCD9DC07 /* TZImageManager.m in Sources */, - 8682FD31C49631AA3E6B6F62DEF5FE2D /* TZImagePickerController-dummy.m in Sources */, - F2F40787799C63D4BBD6B1AA3FB0FF04 /* TZImagePickerController.m in Sources */, - 4746D0500975EC199817F42E779EABD6 /* TZLocationManager.m in Sources */, - DFDF49AA011679B95BEE793805B28065 /* TZPhotoPickerController.m in Sources */, - 514F107F160502616F4565FD30D38D08 /* TZPhotoPreviewCell.m in Sources */, - 8B9219F2807F97A8809486CFBE6E7E7F /* TZPhotoPreviewController.m in Sources */, - 76FE2BE5E2AD02536218C840559A780F /* TZProgressView.m in Sources */, - FD2678433C3518E9E5179959D40ACDF0 /* TZVideoPlayerController.m in Sources */, - 86C0B7F32AEE98F9017EC50C24E19470 /* UIView+Layout.m in Sources */, + E87B7B736590F8551B858ECC1E5F6D02 /* NSBundle+TZImagePicker.m in Sources */, + BC65584E648E509FB730A7F93A3CF518 /* TZAssetCell.m in Sources */, + C1F4E3EC9190E52EFB717340A3020570 /* TZAssetModel.m in Sources */, + 3E070D010BA8E6074CCF3ACB943384D5 /* TZGifPhotoPreviewController.m in Sources */, + 9D52CDA038C47D8007FE95E677201D57 /* TZImageCropManager.m in Sources */, + 225C63AAC49A53A7E4A60F37DF68B5D1 /* TZImageManager.m in Sources */, + 2CFA952FEEFCCED87007B075D154FE99 /* TZImagePickerController-dummy.m in Sources */, + A010F7BEAA4AF9DDFECD19A04AE10F57 /* TZImagePickerController.m in Sources */, + D0236D04B4D8F4FBD7AC253251A9CA44 /* TZImageRequestOperation.m in Sources */, + E20DA6FB376ECDB8F073BA7A8CC56E19 /* TZLocationManager.m in Sources */, + 6A7CCCA40D90BA71C64582EEB9D45D06 /* TZPhotoPickerController.m in Sources */, + 046175DE25A6F6F3E6D80081619E4D26 /* TZPhotoPreviewCell.m in Sources */, + 7E15173A9AB8D3D4E2ABCEBC71D6DD3A /* TZPhotoPreviewController.m in Sources */, + F857F7DC0CAAE4B9E3BACD41DFDB3B58 /* TZProgressView.m in Sources */, + CE1D833164A9D644E23425425D7A64E3 /* TZVideoPlayerController.m in Sources */, + F7F5AAB4BCBDE13526A733BC6CD17530 /* UIView+Layout.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -785,7 +793,7 @@ }; 87D95D403D25C794A66BE1E2FA4CCBB1 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 062099BE56A5BD26607B3EB8BA45509B /* TZImagePickerController.xcconfig */; + baseConfigurationReference = ACDE1143C377F89FEFA7009B9866A9A5 /* TZImagePickerController.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -870,7 +878,7 @@ }; CCEA6B012D5027A5A3A37F760BF73BB8 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3827BD46EEC25AF62EDACD41951AA481 /* SDWebImage.xcconfig */; + baseConfigurationReference = 09DCE739B5AFF3035CF9FCC542CD8598 /* SDWebImage.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -892,7 +900,7 @@ }; CD9B27D78F290823F758D827515178FF /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 062099BE56A5BD26607B3EB8BA45509B /* TZImagePickerController.xcconfig */; + baseConfigurationReference = ACDE1143C377F89FEFA7009B9866A9A5 /* TZImagePickerController.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -914,7 +922,7 @@ }; D51A1BA8273936D29A8AED9D09BB4062 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3827BD46EEC25AF62EDACD41951AA481 /* SDWebImage.xcconfig */; + baseConfigurationReference = 09DCE739B5AFF3035CF9FCC542CD8598 /* SDWebImage.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; diff --git a/Pods/SDWebImage/README.md b/Pods/SDWebImage/README.md index c8bd848..6e32aa3 100644 --- a/Pods/SDWebImage/README.md +++ b/Pods/SDWebImage/README.md @@ -1,16 +1,14 @@ -

+

-[![Build Status](http://img.shields.io/travis/rs/SDWebImage/master.svg?style=flat)](https://travis-ci.org/rs/SDWebImage) +[![Build Status](http://img.shields.io/travis/SDWebImage/SDWebImage/master.svg?style=flat)](https://travis-ci.org/SDWebImage/SDWebImage) [![Pod Version](http://img.shields.io/cocoapods/v/SDWebImage.svg?style=flat)](http://cocoadocs.org/docsets/SDWebImage/) [![Pod Platform](http://img.shields.io/cocoapods/p/SDWebImage.svg?style=flat)](http://cocoadocs.org/docsets/SDWebImage/) [![Pod License](http://img.shields.io/cocoapods/l/SDWebImage.svg?style=flat)](https://www.apache.org/licenses/LICENSE-2.0.html) -[![Dependency Status](https://www.versioneye.com/objective-c/sdwebimage/badge.svg?style=flat)](https://www.versioneye.com/objective-c/sdwebimage) -[![Reference Status](https://www.versioneye.com/objective-c/sdwebimage/reference_badge.svg?style=flat)](https://www.versioneye.com/objective-c/sdwebimage/references) -[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/rs/SDWebImage) -[![codecov](https://codecov.io/gh/rs/SDWebImage/branch/master/graph/badge.svg)](https://codecov.io/gh/rs/SDWebImage) +[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/SDWebImage/SDWebImage) +[![codecov](https://codecov.io/gh/SDWebImage/SDWebImage/branch/master/graph/badge.svg)](https://codecov.io/gh/SDWebImage/SDWebImage) This library provides an async image downloader with cache support. For convenience, we added categories for UI elements like `UIImageView`, `UIButton`, `MKAnnotationView`. @@ -41,22 +39,22 @@ This library provides an async image downloader with cache support. For convenie #### Backwards compatibility -- For iOS 5 and 6, use [any 3.x version up to 3.7.6](https://github.com/rs/SDWebImage/tree/3.7.6) -- For iOS < 5.0, please use the last [2.0 version](https://github.com/rs/SDWebImage/tree/2.0-compat). +- For iOS 5 and 6, use [any 3.x version up to 3.7.6](https://github.com/SDWebImage/SDWebImage/tree/3.7.6) +- For iOS < 5.0, please use the last [2.0 version](https://github.com/SDWebImage/SDWebImage/tree/2.0-compat). ## Getting Started - Read this Readme doc -- Read the [How to use section](https://github.com/rs/SDWebImage#how-to-use) +- Read the [How to use section](https://github.com/SDWebImage/SDWebImage#how-to-use) - Read the [Documentation @ CocoaDocs](http://cocoadocs.org/docsets/SDWebImage/) - Try the example by downloading the project from Github or even easier using CocoaPods try `pod try SDWebImage` -- Read the [Installation Guide](https://github.com/rs/SDWebImage/wiki/Installation-Guide) +- Read the [Installation Guide](https://github.com/SDWebImage/SDWebImage/wiki/Installation-Guide) - Read the [SDWebImage 4.0 Migration Guide](Docs/SDWebImage-4.0-Migration-guide.md) to get an idea of the changes from 3.x to 4.x -- Read the [Common Problems](https://github.com/rs/SDWebImage/wiki/Common-Problems) to find the solution for common problems -- Go to the [Wiki Page](https://github.com/rs/SDWebImage/wiki) for more information such as [Advanced Usage](https://github.com/rs/SDWebImage/wiki/Advanced-Usage) +- Read the [Common Problems](https://github.com/SDWebImage/SDWebImage/wiki/Common-Problems) to find the solution for common problems +- Go to the [Wiki Page](https://github.com/SDWebImage/SDWebImage/wiki) for more information such as [Advanced Usage](https://github.com/SDWebImage/SDWebImage/wiki/Advanced-Usage) ## Who Uses It -- Find out [who uses SDWebImage](https://github.com/rs/SDWebImage/wiki/Who-Uses-SDWebImage) and add your app to the list. +- Find out [who uses SDWebImage](https://github.com/SDWebImage/SDWebImage/wiki/Who-Uses-SDWebImage) and add your app to the list. ## Communication @@ -92,7 +90,7 @@ imageView.sd_setImage(with: URL(string: "http://www.domain.com/path/to/image.jpg - Starting with the 4.0 version, we rely on [FLAnimatedImage](https://github.com/Flipboard/FLAnimatedImage) to take care of our animated images. - If you use cocoapods, add `pod 'SDWebImage/GIF'` to your podfile. - To use it, simply make sure you use `FLAnimatedImageView` instead of `UIImageView`. -- **Note**: there is a backwards compatible feature, so if you are still trying to load a GIF into a `UIImageView`, it will only show the 1st frame as a static image by default. However, you can enable the full GIF support by using the built-in GIF coder. See [GIF coder](https://github.com/rs/SDWebImage/wiki/Advanced-Usage#gif-coder) +- **Note**: there is a backwards compatible feature, so if you are still trying to load a GIF into a `UIImageView`, it will only show the 1st frame as a static image by default. However, you can enable the full GIF support by using the built-in GIF coder. See [GIF coder](https://github.com/SDWebImage/SDWebImage/wiki/Advanced-Usage#gif-coder) - **Important**: FLAnimatedImage only works on the iOS platform. For macOS, use `NSImageView` with `animates` set to `YES` to show the entire animated images and `NO` to only show the 1st frame. For all the other platforms (tvOS, watchOS) we will fallback to the backwards compatibility feature described above ## Installation @@ -135,7 +133,7 @@ To install with carthage, follow the instruction on [Carthage](https://github.co #### Cartfile ``` -github "rs/SDWebImage" +github "SDWebImage/SDWebImage" ``` ### Installation by cloning the repository @@ -166,14 +164,14 @@ community can help you solve it. ## Licenses -All source code is licensed under the [MIT License](https://raw.github.com/rs/SDWebImage/master/LICENSE). +All source code is licensed under the [MIT License](https://raw.github.com/SDWebImage/SDWebImage/master/LICENSE). ## Architecture -

+

-

+

diff --git a/Pods/SDWebImage/SDWebImage/NSData+ImageContentType.h b/Pods/SDWebImage/SDWebImage/NSData+ImageContentType.h index d7e2142..d29bbad 100644 --- a/Pods/SDWebImage/SDWebImage/NSData+ImageContentType.h +++ b/Pods/SDWebImage/SDWebImage/NSData+ImageContentType.h @@ -17,7 +17,8 @@ typedef NS_ENUM(NSInteger, SDImageFormat) { SDImageFormatGIF, SDImageFormatTIFF, SDImageFormatWebP, - SDImageFormatHEIC + SDImageFormatHEIC, + SDImageFormatHEIF }; @interface NSData (ImageContentType) diff --git a/Pods/SDWebImage/SDWebImage/NSData+ImageContentType.m b/Pods/SDWebImage/SDWebImage/NSData+ImageContentType.m index 64ea0a3..927330c 100644 --- a/Pods/SDWebImage/SDWebImage/NSData+ImageContentType.m +++ b/Pods/SDWebImage/SDWebImage/NSData+ImageContentType.m @@ -16,8 +16,9 @@ // Currently Image/IO does not support WebP #define kSDUTTypeWebP ((__bridge CFStringRef)@"public.webp") -// AVFileTypeHEIC is defined in AVFoundation via iOS 11, we use this without import AVFoundation +// AVFileTypeHEIC/AVFileTypeHEIF is defined in AVFoundation via iOS 11, we use this without import AVFoundation #define kSDUTTypeHEIC ((__bridge CFStringRef)@"public.heic") +#define kSDUTTypeHEIF ((__bridge CFStringRef)@"public.heif") @implementation NSData (ImageContentType) @@ -59,6 +60,9 @@ + (SDImageFormat)sd_imageFormatForImageData:(nullable NSData *)data { || [testString isEqualToString:@"ftyphevx"]) { return SDImageFormatHEIC; } + if ([testString isEqualToString:@"ftypmif1"] || [testString isEqualToString:@"ftypmsf1"]) { + return SDImageFormatHEIF; + } } break; } @@ -87,6 +91,9 @@ + (nonnull CFStringRef)sd_UTTypeFromSDImageFormat:(SDImageFormat)format { case SDImageFormatHEIC: UTType = kSDUTTypeHEIC; break; + case SDImageFormatHEIF: + UTType = kSDUTTypeHEIF; + break; default: // default is kUTTypePNG UTType = kUTTypePNG; @@ -112,6 +119,8 @@ + (SDImageFormat)sd_imageFormatFromUTType:(CFStringRef)uttype { imageFormat = SDImageFormatWebP; } else if (CFStringCompare(uttype, kSDUTTypeHEIC, 0) == kCFCompareEqualTo) { imageFormat = SDImageFormatHEIC; + } else if (CFStringCompare(uttype, kSDUTTypeHEIF, 0) == kCFCompareEqualTo) { + imageFormat = SDImageFormatHEIF; } else { imageFormat = SDImageFormatUndefined; } diff --git a/Pods/SDWebImage/SDWebImage/SDImageCache.m b/Pods/SDWebImage/SDWebImage/SDImageCache.m index 8e116d1..412be4d 100644 --- a/Pods/SDWebImage/SDWebImage/SDImageCache.m +++ b/Pods/SDWebImage/SDWebImage/SDImageCache.m @@ -11,6 +11,8 @@ #import "NSImage+WebCache.h" #import "SDWebImageCodersManager.h" +#define SD_MAX_FILE_EXTENSION_LENGTH (NAME_MAX - CC_MD5_DIGEST_LENGTH * 2 - 1) + #define LOCK(lock) dispatch_semaphore_wait(lock, DISPATCH_TIME_FOREVER); #define UNLOCK(lock) dispatch_semaphore_signal(lock); @@ -253,6 +255,10 @@ - (nullable NSString *)cachedFileNameForKey:(nullable NSString *)key { CC_MD5(str, (CC_LONG)strlen(str), r); NSURL *keyURL = [NSURL URLWithString:key]; NSString *ext = keyURL ? keyURL.pathExtension : key.pathExtension; + // File system has file name length limit, we need to check if ext is too long, we don't add it to the filename + if (ext.length > SD_MAX_FILE_EXTENSION_LENGTH) { + ext = nil; + } NSString *filename = [NSString stringWithFormat:@"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%@", r[0], r[1], r[2], r[3], r[4], r[5], r[6], r[7], r[8], r[9], r[10], r[11], r[12], r[13], r[14], r[15], ext.length == 0 ? @"" : [NSString stringWithFormat:@".%@", ext]]; @@ -390,7 +396,7 @@ - (BOOL)_diskImageDataExistsWithKey:(nullable NSString *)key { } BOOL exists = [self.fileManager fileExistsAtPath:[self defaultCachePathForKey:key]]; - // fallback because of https://github.com/rs/SDWebImage/pull/976 that added the extension to the disk file name + // fallback because of https://github.com/SDWebImage/SDWebImage/pull/976 that added the extension to the disk file name // checking the key with and without the extension if (!exists) { exists = [self.fileManager fileExistsAtPath:[self defaultCachePathForKey:key].stringByDeletingPathExtension]; @@ -444,7 +450,7 @@ - (nullable NSData *)diskImageDataBySearchingAllPathsForKey:(nullable NSString * return data; } - // fallback because of https://github.com/rs/SDWebImage/pull/976 that added the extension to the disk file name + // fallback because of https://github.com/SDWebImage/SDWebImage/pull/976 that added the extension to the disk file name // checking the key with and without the extension data = [NSData dataWithContentsOfFile:defaultPath.stringByDeletingPathExtension options:self.config.diskCacheReadingOptions error:nil]; if (data) { @@ -459,7 +465,7 @@ - (nullable NSData *)diskImageDataBySearchingAllPathsForKey:(nullable NSString * return imageData; } - // fallback because of https://github.com/rs/SDWebImage/pull/976 that added the extension to the disk file name + // fallback because of https://github.com/SDWebImage/SDWebImage/pull/976 that added the extension to the disk file name // checking the key with and without the extension imageData = [NSData dataWithContentsOfFile:filePath.stringByDeletingPathExtension options:self.config.diskCacheReadingOptions error:nil]; if (imageData) { @@ -529,12 +535,13 @@ - (nullable NSOperation *)queryCacheOperationForKey:(nullable NSString *)key opt @autoreleasepool { NSData *diskData = [self diskImageDataBySearchingAllPathsForKey:key]; UIImage *diskImage; - SDImageCacheType cacheType = SDImageCacheTypeDisk; + SDImageCacheType cacheType = SDImageCacheTypeNone; if (image) { // the image is from in-memory cache diskImage = image; cacheType = SDImageCacheTypeMemory; } else if (diskData) { + cacheType = SDImageCacheTypeDisk; // decode image data only if in-memory cache missed diskImage = [self diskImageForKey:key data:diskData options:options]; if (diskImage && self.config.shouldCacheImagesInMemory) { @@ -707,10 +714,10 @@ - (void)deleteOldFilesWithCompletionBlock:(nullable SDWebImageNoParamsBlock)comp // Target half of our maximum cache size for this cleanup pass. const NSUInteger desiredCacheSize = self.config.maxCacheSize / 2; - // Sort the remaining cache files by their last modification time (oldest first). + // Sort the remaining cache files by their last modification time or last access time (oldest first). NSArray *sortedFiles = [cacheFiles keysSortedByValueWithOptions:NSSortConcurrent usingComparator:^NSComparisonResult(id obj1, id obj2) { - return [obj1[NSURLContentModificationDateKey] compare:obj2[NSURLContentModificationDateKey]]; + return [obj1[cacheContentDateKey] compare:obj2[cacheContentDateKey]]; }]; // Delete files until we fall below our desired cache size. diff --git a/Pods/SDWebImage/SDWebImage/SDWebImageCompat.m b/Pods/SDWebImage/SDWebImage/SDWebImageCompat.m index daee7fc..ffde1d2 100644 --- a/Pods/SDWebImage/SDWebImage/SDWebImageCompat.m +++ b/Pods/SDWebImage/SDWebImage/SDWebImageCompat.m @@ -56,10 +56,12 @@ scale = 3.0; } } - - UIImage *scaledImage = [[UIImage alloc] initWithCGImage:image.CGImage scale:scale orientation:image.imageOrientation]; - scaledImage.sd_imageFormat = image.sd_imageFormat; - image = scaledImage; + + if (scale != image.scale) { + UIImage *scaledImage = [[UIImage alloc] initWithCGImage:image.CGImage scale:scale orientation:image.imageOrientation]; + scaledImage.sd_imageFormat = image.sd_imageFormat; + image = scaledImage; + } } return image; } diff --git a/Pods/SDWebImage/SDWebImage/SDWebImageDownloader.h b/Pods/SDWebImage/SDWebImage/SDWebImageDownloader.h index b5911af..906eaa7 100644 --- a/Pods/SDWebImage/SDWebImage/SDWebImageDownloader.h +++ b/Pods/SDWebImage/SDWebImage/SDWebImageDownloader.h @@ -197,12 +197,13 @@ typedef SDHTTPHeadersDictionary * _Nullable (^SDWebImageDownloaderHeadersFilterB - (nullable NSString *)valueForHTTPHeaderField:(nullable NSString *)field; /** - * Sets a subclass of `SDWebImageDownloaderOperation` as the default - * `NSOperation` to be used each time SDWebImage constructs a request + * Sets a subclass of `NSOperation` and conforms to `SDWebImageDownloaderOperationInterface`. + * Default is `SDWebImageDownloaderOperation`. + * Can be used each time SDWebImage constructs a request * operation to download an image. * - * @param operationClass The subclass of `SDWebImageDownloaderOperation` to set - * as default. Passing `nil` will revert to `SDWebImageDownloaderOperation`. + * @param operationClass The subclass of `NSOperation` and conforms to `SDWebImageDownloaderOperationInterface`. + * Default is `SDWebImageDownloaderOperation`, Passing `nil` will revert to `SDWebImageDownloaderOperation`. */ - (void)setOperationClass:(nullable Class)operationClass; diff --git a/Pods/SDWebImage/SDWebImage/SDWebImageDownloader.m b/Pods/SDWebImage/SDWebImage/SDWebImageDownloader.m index 76291a1..c0a4b33 100644 --- a/Pods/SDWebImage/SDWebImage/SDWebImageDownloader.m +++ b/Pods/SDWebImage/SDWebImage/SDWebImageDownloader.m @@ -37,7 +37,7 @@ @interface SDWebImageDownloader () *URLOperations; +@property (strong, nonatomic, nonnull) NSMutableDictionary *> *URLOperations; @property (strong, nonatomic, nullable) SDHTTPHeadersMutableDictionary *HTTPHeaders; @property (strong, nonatomic, nonnull) dispatch_semaphore_t operationsLock; // a lock to keep the access to `URLOperations` thread-safe @property (strong, nonatomic, nonnull) dispatch_semaphore_t headersLock; // a lock to keep the access to `HTTPHeaders` thread-safe @@ -94,11 +94,32 @@ - (nonnull instancetype)initWithSessionConfiguration:(nullable NSURLSessionConfi _downloadQueue.maxConcurrentOperationCount = 6; _downloadQueue.name = @"com.hackemist.SDWebImageDownloader"; _URLOperations = [NSMutableDictionary new]; + SDHTTPHeadersMutableDictionary *headerDictionary = [SDHTTPHeadersMutableDictionary dictionary]; + NSString *userAgent = nil; +#if SD_UIKIT + // User-Agent Header; see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.43 + userAgent = [NSString stringWithFormat:@"%@/%@ (%@; iOS %@; Scale/%0.2f)", [[NSBundle mainBundle] infoDictionary][(__bridge NSString *)kCFBundleExecutableKey] ?: [[NSBundle mainBundle] infoDictionary][(__bridge NSString *)kCFBundleIdentifierKey], [[NSBundle mainBundle] infoDictionary][@"CFBundleShortVersionString"] ?: [[NSBundle mainBundle] infoDictionary][(__bridge NSString *)kCFBundleVersionKey], [[UIDevice currentDevice] model], [[UIDevice currentDevice] systemVersion], [[UIScreen mainScreen] scale]]; +#elif SD_WATCH + // User-Agent Header; see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.43 + userAgent = [NSString stringWithFormat:@"%@/%@ (%@; watchOS %@; Scale/%0.2f)", [[NSBundle mainBundle] infoDictionary][(__bridge NSString *)kCFBundleExecutableKey] ?: [[NSBundle mainBundle] infoDictionary][(__bridge NSString *)kCFBundleIdentifierKey], [[NSBundle mainBundle] infoDictionary][@"CFBundleShortVersionString"] ?: [[NSBundle mainBundle] infoDictionary][(__bridge NSString *)kCFBundleVersionKey], [[WKInterfaceDevice currentDevice] model], [[WKInterfaceDevice currentDevice] systemVersion], [[WKInterfaceDevice currentDevice] screenScale]]; +#elif SD_MAC + userAgent = [NSString stringWithFormat:@"%@/%@ (Mac OS X %@)", [[NSBundle mainBundle] infoDictionary][(__bridge NSString *)kCFBundleExecutableKey] ?: [[NSBundle mainBundle] infoDictionary][(__bridge NSString *)kCFBundleIdentifierKey], [[NSBundle mainBundle] infoDictionary][@"CFBundleShortVersionString"] ?: [[NSBundle mainBundle] infoDictionary][(__bridge NSString *)kCFBundleVersionKey], [[NSProcessInfo processInfo] operatingSystemVersionString]]; +#endif + if (userAgent) { + if (![userAgent canBeConvertedToEncoding:NSASCIIStringEncoding]) { + NSMutableString *mutableUserAgent = [userAgent mutableCopy]; + if (CFStringTransform((__bridge CFMutableStringRef)(mutableUserAgent), NULL, (__bridge CFStringRef)@"Any-Latin; Latin-ASCII; [:^ASCII:] Remove", false)) { + userAgent = mutableUserAgent; + } + } + headerDictionary[@"User-Agent"] = userAgent; + } #ifdef SD_WEBP - _HTTPHeaders = [@{@"Accept": @"image/webp,image/*;q=0.8"} mutableCopy]; + headerDictionary[@"Accept"] = @"image/webp,image/*;q=0.8"; #else - _HTTPHeaders = [@{@"Accept": @"image/*;q=0.8"} mutableCopy]; + headerDictionary[@"Accept"] = @"image/*;q=0.8"; #endif + _HTTPHeaders = headerDictionary; _operationsLock = dispatch_semaphore_create(1); _headersLock = dispatch_semaphore_create(1); _downloadTimeout = 15.0; @@ -193,56 +214,49 @@ - (void)setOperationClass:(nullable Class)operationClass { } } -- (nullable SDWebImageDownloadToken *)downloadImageWithURL:(nullable NSURL *)url - options:(SDWebImageDownloaderOptions)options - progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock - completed:(nullable SDWebImageDownloaderCompletedBlock)completedBlock { - __weak SDWebImageDownloader *wself = self; - - return [self addProgressCallback:progressBlock completedBlock:completedBlock forURL:url createCallback:^SDWebImageDownloaderOperation *{ - __strong __typeof (wself) sself = wself; - NSTimeInterval timeoutInterval = sself.downloadTimeout; - if (timeoutInterval == 0.0) { - timeoutInterval = 15.0; - } +- (NSOperation *)createDownloaderOperationWithUrl:(nullable NSURL *)url + options:(SDWebImageDownloaderOptions)options { + NSTimeInterval timeoutInterval = self.downloadTimeout; + if (timeoutInterval == 0.0) { + timeoutInterval = 15.0; + } - // In order to prevent from potential duplicate caching (NSURLCache + SDImageCache) we disable the cache for image requests if told otherwise - NSURLRequestCachePolicy cachePolicy = options & SDWebImageDownloaderUseNSURLCache ? NSURLRequestUseProtocolCachePolicy : NSURLRequestReloadIgnoringLocalCacheData; - NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url - cachePolicy:cachePolicy - timeoutInterval:timeoutInterval]; - - request.HTTPShouldHandleCookies = (options & SDWebImageDownloaderHandleCookies); - request.HTTPShouldUsePipelining = YES; - if (sself.headersFilter) { - request.allHTTPHeaderFields = sself.headersFilter(url, [sself allHTTPHeaderFields]); - } - else { - request.allHTTPHeaderFields = [sself allHTTPHeaderFields]; - } - SDWebImageDownloaderOperation *operation = [[sself.operationClass alloc] initWithRequest:request inSession:sself.session options:options]; - operation.shouldDecompressImages = sself.shouldDecompressImages; - - if (sself.urlCredential) { - operation.credential = sself.urlCredential; - } else if (sself.username && sself.password) { - operation.credential = [NSURLCredential credentialWithUser:sself.username password:sself.password persistence:NSURLCredentialPersistenceForSession]; - } - - if (options & SDWebImageDownloaderHighPriority) { - operation.queuePriority = NSOperationQueuePriorityHigh; - } else if (options & SDWebImageDownloaderLowPriority) { - operation.queuePriority = NSOperationQueuePriorityLow; - } - - if (sself.executionOrder == SDWebImageDownloaderLIFOExecutionOrder) { - // Emulate LIFO execution order by systematically adding new operations as last operation's dependency - [sself.lastAddedOperation addDependency:operation]; - sself.lastAddedOperation = operation; - } + // In order to prevent from potential duplicate caching (NSURLCache + SDImageCache) we disable the cache for image requests if told otherwise + NSURLRequestCachePolicy cachePolicy = options & SDWebImageDownloaderUseNSURLCache ? NSURLRequestUseProtocolCachePolicy : NSURLRequestReloadIgnoringLocalCacheData; + NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url + cachePolicy:cachePolicy + timeoutInterval:timeoutInterval]; + + request.HTTPShouldHandleCookies = (options & SDWebImageDownloaderHandleCookies); + request.HTTPShouldUsePipelining = YES; + if (self.headersFilter) { + request.allHTTPHeaderFields = self.headersFilter(url, [self allHTTPHeaderFields]); + } + else { + request.allHTTPHeaderFields = [self allHTTPHeaderFields]; + } + NSOperation *operation = [[self.operationClass alloc] initWithRequest:request inSession:self.session options:options]; + operation.shouldDecompressImages = self.shouldDecompressImages; + + if (self.urlCredential) { + operation.credential = self.urlCredential; + } else if (self.username && self.password) { + operation.credential = [NSURLCredential credentialWithUser:self.username password:self.password persistence:NSURLCredentialPersistenceForSession]; + } + + if (options & SDWebImageDownloaderHighPriority) { + operation.queuePriority = NSOperationQueuePriorityHigh; + } else if (options & SDWebImageDownloaderLowPriority) { + operation.queuePriority = NSOperationQueuePriorityLow; + } + + if (self.executionOrder == SDWebImageDownloaderLIFOExecutionOrder) { + // Emulate LIFO execution order by systematically adding new operations as last operation's dependency + [self.lastAddedOperation addDependency:operation]; + self.lastAddedOperation = operation; + } - return operation; - }]; + return operation; } - (void)cancel:(nullable SDWebImageDownloadToken *)token { @@ -251,7 +265,7 @@ - (void)cancel:(nullable SDWebImageDownloadToken *)token { return; } LOCK(self.operationsLock); - SDWebImageDownloaderOperation *operation = [self.URLOperations objectForKey:url]; + NSOperation *operation = [self.URLOperations objectForKey:url]; if (operation) { BOOL canceled = [operation cancel:token.downloadOperationCancelToken]; if (canceled) { @@ -261,10 +275,10 @@ - (void)cancel:(nullable SDWebImageDownloadToken *)token { UNLOCK(self.operationsLock); } -- (nullable SDWebImageDownloadToken *)addProgressCallback:(SDWebImageDownloaderProgressBlock)progressBlock - completedBlock:(SDWebImageDownloaderCompletedBlock)completedBlock - forURL:(nullable NSURL *)url - createCallback:(SDWebImageDownloaderOperation *(^)(void))createCallback { +- (nullable SDWebImageDownloadToken *)downloadImageWithURL:(nullable NSURL *)url + options:(SDWebImageDownloaderOptions)options + progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock + completed:(nullable SDWebImageDownloaderCompletedBlock)completedBlock { // The URL will be used as the key to the callbacks dictionary so it cannot be nil. If it is nil immediately call the completed block with no image or data. if (url == nil) { if (completedBlock != nil) { @@ -274,10 +288,10 @@ - (nullable SDWebImageDownloadToken *)addProgressCallback:(SDWebImageDownloaderP } LOCK(self.operationsLock); - SDWebImageDownloaderOperation *operation = [self.URLOperations objectForKey:url]; + NSOperation *operation = [self.URLOperations objectForKey:url]; // There is a case that the operation may be marked as finished, but not been removed from `self.URLOperations`. if (!operation || operation.isFinished) { - operation = createCallback(); + operation = [self createDownloaderOperationWithUrl:url options:options]; __weak typeof(self) wself = self; operation.completionBlock = ^{ __strong typeof(wself) sself = wself; @@ -315,12 +329,14 @@ - (void)cancelAllDownloads { #pragma mark Helper methods -- (SDWebImageDownloaderOperation *)operationWithTask:(NSURLSessionTask *)task { - SDWebImageDownloaderOperation *returnOperation = nil; - for (SDWebImageDownloaderOperation *operation in self.downloadQueue.operations) { - if (operation.dataTask.taskIdentifier == task.taskIdentifier) { - returnOperation = operation; - break; +- (NSOperation *)operationWithTask:(NSURLSessionTask *)task { + NSOperation *returnOperation = nil; + for (NSOperation *operation in self.downloadQueue.operations) { + if ([operation respondsToSelector:@selector(dataTask)]) { + if (operation.dataTask.taskIdentifier == task.taskIdentifier) { + returnOperation = operation; + break; + } } } return returnOperation; @@ -334,7 +350,7 @@ - (void)URLSession:(NSURLSession *)session completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler { // Identify the operation that runs this task and pass it the delegate method - SDWebImageDownloaderOperation *dataOperation = [self operationWithTask:dataTask]; + NSOperation *dataOperation = [self operationWithTask:dataTask]; if ([dataOperation respondsToSelector:@selector(URLSession:dataTask:didReceiveResponse:completionHandler:)]) { [dataOperation URLSession:session dataTask:dataTask didReceiveResponse:response completionHandler:completionHandler]; } else { @@ -347,7 +363,7 @@ - (void)URLSession:(NSURLSession *)session - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data { // Identify the operation that runs this task and pass it the delegate method - SDWebImageDownloaderOperation *dataOperation = [self operationWithTask:dataTask]; + NSOperation *dataOperation = [self operationWithTask:dataTask]; if ([dataOperation respondsToSelector:@selector(URLSession:dataTask:didReceiveData:)]) { [dataOperation URLSession:session dataTask:dataTask didReceiveData:data]; } @@ -359,7 +375,7 @@ - (void)URLSession:(NSURLSession *)session completionHandler:(void (^)(NSCachedURLResponse *cachedResponse))completionHandler { // Identify the operation that runs this task and pass it the delegate method - SDWebImageDownloaderOperation *dataOperation = [self operationWithTask:dataTask]; + NSOperation *dataOperation = [self operationWithTask:dataTask]; if ([dataOperation respondsToSelector:@selector(URLSession:dataTask:willCacheResponse:completionHandler:)]) { [dataOperation URLSession:session dataTask:dataTask willCacheResponse:proposedResponse completionHandler:completionHandler]; } else { @@ -374,7 +390,7 @@ - (void)URLSession:(NSURLSession *)session - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error { // Identify the operation that runs this task and pass it the delegate method - SDWebImageDownloaderOperation *dataOperation = [self operationWithTask:task]; + NSOperation *dataOperation = [self operationWithTask:task]; if ([dataOperation respondsToSelector:@selector(URLSession:task:didCompleteWithError:)]) { [dataOperation URLSession:session task:task didCompleteWithError:error]; } @@ -383,7 +399,7 @@ - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didComp - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task willPerformHTTPRedirection:(NSHTTPURLResponse *)response newRequest:(NSURLRequest *)request completionHandler:(void (^)(NSURLRequest * _Nullable))completionHandler { // Identify the operation that runs this task and pass it the delegate method - SDWebImageDownloaderOperation *dataOperation = [self operationWithTask:task]; + NSOperation *dataOperation = [self operationWithTask:task]; if ([dataOperation respondsToSelector:@selector(URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:)]) { [dataOperation URLSession:session task:task willPerformHTTPRedirection:response newRequest:request completionHandler:completionHandler]; } else { @@ -396,7 +412,7 @@ - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task willPer - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler { // Identify the operation that runs this task and pass it the delegate method - SDWebImageDownloaderOperation *dataOperation = [self operationWithTask:task]; + NSOperation *dataOperation = [self operationWithTask:task]; if ([dataOperation respondsToSelector:@selector(URLSession:task:didReceiveChallenge:completionHandler:)]) { [dataOperation URLSession:session task:task didReceiveChallenge:challenge completionHandler:completionHandler]; } else { diff --git a/Pods/SDWebImage/SDWebImage/SDWebImageDownloaderOperation.h b/Pods/SDWebImage/SDWebImage/SDWebImageDownloaderOperation.h index d0c5815..6d9d95c 100644 --- a/Pods/SDWebImage/SDWebImage/SDWebImageDownloaderOperation.h +++ b/Pods/SDWebImage/SDWebImage/SDWebImageDownloaderOperation.h @@ -21,8 +21,8 @@ FOUNDATION_EXPORT NSString * _Nonnull const SDWebImageDownloadFinishNotification Describes a downloader operation. If one wants to use a custom downloader op, it needs to inherit from `NSOperation` and conform to this protocol For the description about these methods, see `SDWebImageDownloaderOperation` */ -@protocol SDWebImageDownloaderOperationInterface - +@protocol SDWebImageDownloaderOperationInterface +@required - (nonnull instancetype)initWithRequest:(nullable NSURLRequest *)request inSession:(nullable NSURLSession *)session options:(SDWebImageDownloaderOptions)options; @@ -38,10 +38,13 @@ FOUNDATION_EXPORT NSString * _Nonnull const SDWebImageDownloadFinishNotification - (BOOL)cancel:(nullable id)token; +@optional +- (nullable NSURLSessionTask *)dataTask; + @end -@interface SDWebImageDownloaderOperation : NSOperation +@interface SDWebImageDownloaderOperation : NSOperation /** * The request used by the operation's task. diff --git a/Pods/SDWebImage/SDWebImage/SDWebImageDownloaderOperation.m b/Pods/SDWebImage/SDWebImage/SDWebImageDownloaderOperation.m index 722645f..e0a6897 100644 --- a/Pods/SDWebImage/SDWebImage/SDWebImageDownloaderOperation.m +++ b/Pods/SDWebImage/SDWebImage/SDWebImageDownloaderOperation.m @@ -345,17 +345,19 @@ - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)data // progressive decode the image in coder queue dispatch_async(self.coderQueue, ^{ - UIImage *image = [self.progressiveCoder incrementallyDecodedImageWithData:imageData finished:finished]; - if (image) { - NSString *key = [[SDWebImageManager sharedManager] cacheKeyForURL:self.request.URL]; - image = [self scaledImageForKey:key image:image]; - if (self.shouldDecompressImages) { - image = [[SDWebImageCodersManager sharedInstance] decompressedImageWithImage:image data:&imageData options:@{SDWebImageCoderScaleDownLargeImagesKey: @(NO)}]; + @autoreleasepool { + UIImage *image = [self.progressiveCoder incrementallyDecodedImageWithData:imageData finished:finished]; + if (image) { + NSString *key = [[SDWebImageManager sharedManager] cacheKeyForURL:self.request.URL]; + image = [self scaledImageForKey:key image:image]; + if (self.shouldDecompressImages) { + image = [[SDWebImageCodersManager sharedInstance] decompressedImageWithImage:image data:&imageData options:@{SDWebImageCoderScaleDownLargeImagesKey: @(NO)}]; + } + + // We do not keep the progressive decoding image even when `finished`=YES. Because they are for view rendering but not take full function from downloader options. And some coders implementation may not keep consistent between progressive decoding and normal decoding. + + [self callCompletionBlocksWithImage:image imageData:nil error:nil finished:NO]; } - - // We do not keep the progressive decoding image even when `finished`=YES. Because they are for view rendering but not take full function from downloader options. And some coders implementation may not keep consistent between progressive decoding and normal decoding. - - [self callCompletionBlocksWithImage:image imageData:nil error:nil finished:NO]; } }); } @@ -416,36 +418,38 @@ - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didComp } else { // decode the image in coder queue dispatch_async(self.coderQueue, ^{ - UIImage *image = [[SDWebImageCodersManager sharedInstance] decodedImageWithData:imageData]; - NSString *key = [[SDWebImageManager sharedManager] cacheKeyForURL:self.request.URL]; - image = [self scaledImageForKey:key image:image]; - - BOOL shouldDecode = YES; - // Do not force decoding animated GIFs and WebPs - if (image.images) { - shouldDecode = NO; - } else { -#ifdef SD_WEBP - SDImageFormat imageFormat = [NSData sd_imageFormatForImageData:imageData]; - if (imageFormat == SDImageFormatWebP) { + @autoreleasepool { + UIImage *image = [[SDWebImageCodersManager sharedInstance] decodedImageWithData:imageData]; + NSString *key = [[SDWebImageManager sharedManager] cacheKeyForURL:self.request.URL]; + image = [self scaledImageForKey:key image:image]; + + BOOL shouldDecode = YES; + // Do not force decoding animated GIFs and WebPs + if (image.images) { shouldDecode = NO; - } + } else { +#ifdef SD_WEBP + SDImageFormat imageFormat = [NSData sd_imageFormatForImageData:imageData]; + if (imageFormat == SDImageFormatWebP) { + shouldDecode = NO; + } #endif - } - - if (shouldDecode) { - if (self.shouldDecompressImages) { - BOOL shouldScaleDown = self.options & SDWebImageDownloaderScaleDownLargeImages; - image = [[SDWebImageCodersManager sharedInstance] decompressedImageWithImage:image data:&imageData options:@{SDWebImageCoderScaleDownLargeImagesKey: @(shouldScaleDown)}]; } + + if (shouldDecode) { + if (self.shouldDecompressImages) { + BOOL shouldScaleDown = self.options & SDWebImageDownloaderScaleDownLargeImages; + image = [[SDWebImageCodersManager sharedInstance] decompressedImageWithImage:image data:&imageData options:@{SDWebImageCoderScaleDownLargeImagesKey: @(shouldScaleDown)}]; + } + } + CGSize imageSize = image.size; + if (imageSize.width == 0 || imageSize.height == 0) { + [self callCompletionBlocksWithError:[NSError errorWithDomain:SDWebImageErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey : @"Downloaded image has 0 pixels"}]]; + } else { + [self callCompletionBlocksWithImage:image imageData:imageData error:nil finished:YES]; + } + [self done]; } - CGSize imageSize = image.size; - if (imageSize.width == 0 || imageSize.height == 0) { - [self callCompletionBlocksWithError:[NSError errorWithDomain:SDWebImageErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey : @"Downloaded image has 0 pixels"}]]; - } else { - [self callCompletionBlocksWithImage:image imageData:imageData error:nil finished:YES]; - } - [self done]; }); } } else { diff --git a/Pods/SDWebImage/SDWebImage/SDWebImageImageIOCoder.m b/Pods/SDWebImage/SDWebImage/SDWebImageImageIOCoder.m index 1d0238e..95b25b0 100644 --- a/Pods/SDWebImage/SDWebImage/SDWebImageImageIOCoder.m +++ b/Pods/SDWebImage/SDWebImage/SDWebImageImageIOCoder.m @@ -74,6 +74,9 @@ - (BOOL)canDecodeFromData:(nullable NSData *)data { case SDImageFormatHEIC: // Check HEIC decoding compatibility return [[self class] canDecodeFromHEICFormat]; + case SDImageFormatHEIF: + // Check HEIF decoding compatibility + return [[self class] canDecodeFromHEIFFormat]; default: return YES; } @@ -87,6 +90,9 @@ - (BOOL)canIncrementallyDecodeFromData:(NSData *)data { case SDImageFormatHEIC: // Check HEIC decoding compatibility return [[self class] canDecodeFromHEICFormat]; + case SDImageFormatHEIF: + // Check HEIF decoding compatibility + return [[self class] canDecodeFromHEIFFormat]; default: return YES; } @@ -372,6 +378,9 @@ - (BOOL)canEncodeToFormat:(SDImageFormat)format { case SDImageFormatHEIC: // Check HEIC encoding compatibility return [[self class] canEncodeToHEICFormat]; + case SDImageFormatHEIF: + // Check HEIF encoding compatibility + return [[self class] canEncodeToHEIFFormat]; default: return YES; } @@ -440,28 +449,24 @@ + (BOOL)canDecodeFromHEICFormat { static BOOL canDecode = NO; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wunguarded-availability" -#if TARGET_OS_SIMULATOR || SD_WATCH - canDecode = NO; -#elif SD_MAC - NSProcessInfo *processInfo = [NSProcessInfo processInfo]; - if ([processInfo respondsToSelector:@selector(operatingSystemVersion)]) { - // macOS 10.13+ - canDecode = processInfo.operatingSystemVersion.minorVersion >= 13; - } else { - canDecode = NO; + CFStringRef imageUTType = [NSData sd_UTTypeFromSDImageFormat:SDImageFormatHEIC]; + NSArray *imageUTTypes = (__bridge_transfer NSArray *)CGImageSourceCopyTypeIdentifiers(); + if ([imageUTTypes containsObject:(__bridge NSString *)(imageUTType)]) { + canDecode = YES; } -#elif SD_UIKIT - NSProcessInfo *processInfo = [NSProcessInfo processInfo]; - if ([processInfo respondsToSelector:@selector(operatingSystemVersion)]) { - // iOS 11+ && tvOS 11+ - canDecode = processInfo.operatingSystemVersion.majorVersion >= 11; - } else { - canDecode = NO; + }); + return canDecode; +} + ++ (BOOL)canDecodeFromHEIFFormat { + static BOOL canDecode = NO; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + CFStringRef imageUTType = [NSData sd_UTTypeFromSDImageFormat:SDImageFormatHEIF]; + NSArray *imageUTTypes = (__bridge_transfer NSArray *)CGImageSourceCopyTypeIdentifiers(); + if ([imageUTTypes containsObject:(__bridge NSString *)(imageUTType)]) { + canDecode = YES; } -#endif -#pragma clang diagnostic pop }); return canDecode; } @@ -487,6 +492,27 @@ + (BOOL)canEncodeToHEICFormat { return canEncode; } ++ (BOOL)canEncodeToHEIFFormat { + static BOOL canEncode = NO; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + NSMutableData *imageData = [NSMutableData data]; + CFStringRef imageUTType = [NSData sd_UTTypeFromSDImageFormat:SDImageFormatHEIF]; + + // Create an image destination. + CGImageDestinationRef imageDestination = CGImageDestinationCreateWithData((__bridge CFMutableDataRef)imageData, imageUTType, 1, NULL); + if (!imageDestination) { + // Can't encode to HEIF + canEncode = NO; + } else { + // Can encode to HEIF + CFRelease(imageDestination); + canEncode = YES; + } + }); + return canEncode; +} + #if SD_UIKIT || SD_WATCH + (BOOL)shouldScaleDownImage:(nonnull UIImage *)image { BOOL shouldScaleDown = YES; diff --git a/Pods/SDWebImage/SDWebImage/SDWebImageManager.m b/Pods/SDWebImage/SDWebImage/SDWebImageManager.m index 24da020..c912fb5 100644 --- a/Pods/SDWebImage/SDWebImage/SDWebImageManager.m +++ b/Pods/SDWebImage/SDWebImage/SDWebImageManager.m @@ -243,28 +243,32 @@ - (void)diskImageExistsForURL:(nullable NSURL *)url // Image refresh hit the NSURLCache cache, do not call the completion block } else if (downloadedImage && (!downloadedImage.images || (options & SDWebImageTransformAnimatedImage)) && [self.delegate respondsToSelector:@selector(imageManager:transformDownloadedImage:withURL:)]) { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ - UIImage *transformedImage = [self.delegate imageManager:self transformDownloadedImage:downloadedImage withURL:url]; - - if (transformedImage && finished) { - BOOL imageWasTransformed = ![transformedImage isEqual:downloadedImage]; - NSData *cacheData; - // pass nil if the image was transformed, so we can recalculate the data from the image - if (self.cacheSerializer) { - cacheData = self.cacheSerializer(transformedImage, (imageWasTransformed ? nil : downloadedData), url); - } else { - cacheData = (imageWasTransformed ? nil : downloadedData); + @autoreleasepool { + UIImage *transformedImage = [self.delegate imageManager:self transformDownloadedImage:downloadedImage withURL:url]; + + if (transformedImage && finished) { + BOOL imageWasTransformed = ![transformedImage isEqual:downloadedImage]; + NSData *cacheData; + // pass nil if the image was transformed, so we can recalculate the data from the image + if (self.cacheSerializer) { + cacheData = self.cacheSerializer(transformedImage, (imageWasTransformed ? nil : downloadedData), url); + } else { + cacheData = (imageWasTransformed ? nil : downloadedData); + } + [self.imageCache storeImage:transformedImage imageData:cacheData forKey:key toDisk:cacheOnDisk completion:nil]; } - [self.imageCache storeImage:transformedImage imageData:cacheData forKey:key toDisk:cacheOnDisk completion:nil]; + + [self callCompletionBlockForOperation:strongSubOperation completion:completedBlock image:transformedImage data:downloadedData error:nil cacheType:SDImageCacheTypeNone finished:finished url:url]; } - - [self callCompletionBlockForOperation:strongSubOperation completion:completedBlock image:transformedImage data:downloadedData error:nil cacheType:SDImageCacheTypeNone finished:finished url:url]; }); } else { if (downloadedImage && finished) { if (self.cacheSerializer) { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ - NSData *cacheData = self.cacheSerializer(downloadedImage, downloadedData, url); - [self.imageCache storeImage:downloadedImage imageData:cacheData forKey:key toDisk:cacheOnDisk completion:nil]; + @autoreleasepool { + NSData *cacheData = self.cacheSerializer(downloadedImage, downloadedData, url); + [self.imageCache storeImage:downloadedImage imageData:cacheData forKey:key toDisk:cacheOnDisk completion:nil]; + } }); } else { [self.imageCache storeImage:downloadedImage imageData:downloadedData forKey:key toDisk:cacheOnDisk completion:nil]; diff --git a/Pods/SDWebImage/SDWebImage/UIView+WebCache.h b/Pods/SDWebImage/SDWebImage/UIView+WebCache.h index 026f1b3..85cb2c6 100644 --- a/Pods/SDWebImage/SDWebImage/UIView+WebCache.h +++ b/Pods/SDWebImage/SDWebImage/UIView+WebCache.h @@ -13,7 +13,7 @@ /** A Dispatch group to maintain setImageBlock and completionBlock. This key should be used only internally and may be changed in the future. (dispatch_group_t) */ -FOUNDATION_EXPORT NSString * _Nonnull const SDWebImageInternalSetImageGroupKey __deprecated_msg("Key Deprecated. Does nothing. This key should be used only internally"); +FOUNDATION_EXPORT NSString * _Nonnull const SDWebImageInternalSetImageGroupKey; /** A SDWebImageManager instance to control the image download and cache process using in UIImageView+WebCache category and likes. If not provided, use the shared manager (SDWebImageManager) */ diff --git a/Pods/SDWebImage/SDWebImage/UIView+WebCache.m b/Pods/SDWebImage/SDWebImage/UIView+WebCache.m index 953415b..112a5e1 100644 --- a/Pods/SDWebImage/SDWebImage/UIView+WebCache.m +++ b/Pods/SDWebImage/SDWebImage/UIView+WebCache.m @@ -64,7 +64,11 @@ - (void)sd_internalSetImageWithURL:(nullable NSURL *)url [self sd_cancelImageLoadOperationWithKey:validOperationKey]; objc_setAssociatedObject(self, &imageURLKey, url, OBJC_ASSOCIATION_RETAIN_NONATOMIC); + dispatch_group_t group = context[SDWebImageInternalSetImageGroupKey]; if (!(options & SDWebImageDelayPlaceholder)) { + if (group) { + dispatch_group_enter(group); + } dispatch_main_async_safe(^{ [self sd_setImage:placeholder imageData:nil basedOnClassOrViaCustomSetImageBlock:setImageBlock]; }); @@ -82,10 +86,8 @@ - (void)sd_internalSetImageWithURL:(nullable NSURL *)url self.sd_imageProgress.totalUnitCount = 0; self.sd_imageProgress.completedUnitCount = 0; - SDWebImageManager *manager; - if ([context valueForKey:SDWebImageExternalCustomManagerKey]) { - manager = (SDWebImageManager *)[context valueForKey:SDWebImageExternalCustomManagerKey]; - } else { + SDWebImageManager *manager = [context objectForKey:SDWebImageExternalCustomManagerKey]; + if (!manager) { manager = [SDWebImageManager sharedManager]; } @@ -149,12 +151,25 @@ - (void)sd_internalSetImageWithURL:(nullable NSURL *)url } #endif dispatch_main_async_safe(^{ + if (group) { + dispatch_group_enter(group); + } #if SD_UIKIT || SD_MAC [sself sd_setImage:targetImage imageData:targetData basedOnClassOrViaCustomSetImageBlock:setImageBlock transition:transition cacheType:cacheType imageURL:imageURL]; #else [sself sd_setImage:targetImage imageData:targetData basedOnClassOrViaCustomSetImageBlock:setImageBlock]; #endif - callCompletedBlockClojure(); + if (group) { + // compatible code for FLAnimatedImage, because we assume completedBlock called after image was set. This will be removed in 5.x + BOOL shouldUseGroup = [objc_getAssociatedObject(group, &SDWebImageInternalSetImageGroupKey) boolValue]; + if (shouldUseGroup) { + dispatch_group_notify(group, dispatch_get_main_queue(), callCompletedBlockClojure); + } else { + callCompletedBlockClojure(); + } + } else { + callCompletedBlockClojure(); + } }); }]; [self sd_setImageLoadOperation:operation forKey:validOperationKey]; diff --git a/Pods/TZImagePickerController/README.md b/Pods/TZImagePickerController/README.md index 6c71d33..1d95a53 100644 --- a/Pods/TZImagePickerController/README.md +++ b/Pods/TZImagePickerController/README.md @@ -90,17 +90,8 @@ A:3.0.1版本已支持,需新接一个库:[TZImagePreviewController](https **Q:设置可选视频的最大/最小时长?照片的最小/最大尺寸?不符合要求的不显示** A:可以的,参照Demo的isAssetCanSelect方法实现。我会返回asset出来,显示与否你来决定,注意这个是一个同步方法,对于需要根据asset去异步获取的信息如视频的大小、视频是否存在iCloud里来过滤的,无法做到。如果真要这样做,相册打开速度会变慢,你需要改我源码。 -**Q:可否支持横屏?** -A:1.8.4版本已支持 - -**Q:可否加入视频拍摄功能?** -A:2.1.0.3版本已支持,设置allowTakeVideo为YES - -**Q:可否加入视频多选功能?** -A:1.8.4版本已支持,设置allowPickingMultipleVideo为YES - -**Q:可否让视频和图片允许一起选?** -A:1.8.4版本已支持,设置allowPickingMultipleVideo为YES +**Q:预览页面出现了导航栏?** +A:https://github.com/banchichen/TZImagePickerController/issues/652 **Q:可否增加微信编辑图片的功能?** A:考虑下,优先级低 @@ -133,7 +124,9 @@ A:不要去拿PHImageFileURLKey,没用的,只有通过Photos框架才能 ## 六. Release Notes 最近更新 -3.1.1 适配阿拉伯等语言下从右往左布局的特性 +3.1.7 批量获取图片时加入队列控制,尝试优化大批量选择图片时CPU和内存占用过高的问题(仍然危险,maxImagesCount谨慎设置过大...) +3.1.5 相册内无照片时给出提示,修复快速滑动时内存一直增加的问题 +3.1.3 适配阿拉伯等语言下从右往左布局的特性 3.0.8 新增gifImagePlayBlock允许使用FLAnimatedImage等替换内部的GIF播放方案 **3.0.7 适配iPhoneXR、XS、XS Max,建议大家尽快更新** 3.0.6 优化保存照片、视频的方法 diff --git a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZAssetCell.h b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZAssetCell.h index 65a2e83..c093f11 100644 --- a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZAssetCell.h +++ b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZAssetCell.h @@ -35,7 +35,6 @@ typedef enum : NSUInteger { @property (nonatomic, assign) BOOL showSelectBtn; @property (assign, nonatomic) BOOL allowPreview; -@property (assign, nonatomic) BOOL useCachedImage; @property (nonatomic, copy) void (^assetCellDidSetModelBlock)(TZAssetCell *cell, UIImageView *imageView, UIImageView *selectImageView, UILabel *indexLabel, UIView *bottomView, UILabel *timeLength, UIImageView *videoImgView); @property (nonatomic, copy) void (^assetCellDidLayoutSubviewsBlock)(TZAssetCell *cell, UIImageView *imageView, UIImageView *selectImageView, UILabel *indexLabel, UIView *bottomView, UILabel *timeLength, UIImageView *videoImgView); diff --git a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZAssetCell.m b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZAssetCell.m index cdf8696..cd4b662 100644 --- a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZAssetCell.m +++ b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZAssetCell.m @@ -28,33 +28,33 @@ @interface TZAssetCell () @implementation TZAssetCell +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reload:) name:@"TZ_PHOTO_PICKER_RELOAD_NOTIFICATION" object:nil]; + return self; +} + - (void)setModel:(TZAssetModel *)model { _model = model; self.representedAssetIdentifier = model.asset.localIdentifier; - if (self.useCachedImage && model.cachedImage) { - self.imageView.image = model.cachedImage; - } else { - self.model.cachedImage = nil; - int32_t imageRequestID = [[TZImageManager manager] getPhotoWithAsset:model.asset photoWidth:self.tz_width completion:^(UIImage *photo, NSDictionary *info, BOOL isDegraded) { - // Set the cell's thumbnail image if it's still showing the same asset. - if ([self.representedAssetIdentifier isEqualToString:model.asset.localIdentifier]) { - self.imageView.image = photo; - self.model.cachedImage = photo; - } else { - // NSLog(@"this cell is showing other asset"); - [[PHImageManager defaultManager] cancelImageRequest:self.imageRequestID]; - } - if (!isDegraded) { - [self hideProgressView]; - self.imageRequestID = 0; - } - } progressHandler:nil networkAccessAllowed:NO]; - if (imageRequestID && self.imageRequestID && imageRequestID != self.imageRequestID) { + int32_t imageRequestID = [[TZImageManager manager] getPhotoWithAsset:model.asset photoWidth:self.tz_width completion:^(UIImage *photo, NSDictionary *info, BOOL isDegraded) { + // Set the cell's thumbnail image if it's still showing the same asset. + if ([self.representedAssetIdentifier isEqualToString:model.asset.localIdentifier]) { + self.imageView.image = photo; + } else { + // NSLog(@"this cell is showing other asset"); [[PHImageManager defaultManager] cancelImageRequest:self.imageRequestID]; - // NSLog(@"cancelImageRequest %d",self.imageRequestID); } - self.imageRequestID = imageRequestID; + if (!isDegraded) { + [self hideProgressView]; + self.imageRequestID = 0; + } + } progressHandler:nil networkAccessAllowed:NO]; + if (imageRequestID && self.imageRequestID && imageRequestID != self.imageRequestID) { + [[PHImageManager defaultManager] cancelImageRequest:self.imageRequestID]; + // NSLog(@"cancelImageRequest %d",self.imageRequestID); } + self.imageRequestID = imageRequestID; self.selectPhotoButton.selected = model.isSelected; self.selectImageView.image = self.selectPhotoButton.isSelected ? self.photoSelImage : self.photoDefImage; self.indexLabel.hidden = !self.selectPhotoButton.isSelected; @@ -73,10 +73,6 @@ - (void)setModel:(TZAssetModel *)model { } else { [self cancelBigImageRequest]; } - if (model.needOscillatoryAnimation) { - [UIView showOscillatoryAnimationWithLayer:self.selectImageView.layer type:TZOscillatoryAnimationToBigger]; - } - model.needOscillatoryAnimation = NO; [self setNeedsLayout]; if (self.assetCellDidSetModelBlock) { @@ -144,9 +140,7 @@ - (void)selectPhotoButtonClick:(UIButton *)sender { } self.selectImageView.image = sender.isSelected ? self.photoSelImage : self.photoDefImage; if (sender.isSelected) { - if (![TZImagePickerConfig sharedInstance].showSelectedIndex && ![TZImagePickerConfig sharedInstance].showPhotoCannotSelectLayer) { - [UIView showOscillatoryAnimationWithLayer:_selectImageView.layer type:TZOscillatoryAnimationToBigger]; - } + [UIView showOscillatoryAnimationWithLayer:_selectImageView.layer type:TZOscillatoryAnimationToBigger]; // 用户选中了该图片,提前获取一下大图 [self requestBigImage]; } else { // 取消选中,取消大图的获取 @@ -185,7 +179,8 @@ - (void)requestBigImage { [self hideProgressView]; } } else { - *stop = YES; + // 快速连续点几次,会EXC_BAD_ACCESS... + // *stop = YES; [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; [self cancelBigImageRequest]; } @@ -199,6 +194,22 @@ - (void)cancelBigImageRequest { [self hideProgressView]; } +#pragma mark - Notification + +- (void)reload:(NSNotification *)noti { + TZImagePickerController *tzImagePickerVc = (TZImagePickerController *)noti.object; + if (self.model.isSelected && tzImagePickerVc.showSelectedIndex) { + self.index = [tzImagePickerVc.selectedAssetIds indexOfObject:self.model.asset.localIdentifier] + 1; + } + self.indexLabel.hidden = !self.selectPhotoButton.isSelected; + if (tzImagePickerVc.selectedModels.count >= tzImagePickerVc.maxImagesCount && tzImagePickerVc.showPhotoCannotSelectLayer && !self.model.isSelected) { + self.cannotSelectLayerButton.backgroundColor = tzImagePickerVc.cannotSelectLayerColor; + self.cannotSelectLayerButton.hidden = NO; + } else { + self.cannotSelectLayerButton.hidden = YES; + } +} + #pragma mark - Lazy load - (UIButton *)selectPhotoButton { @@ -338,6 +349,10 @@ - (void)layoutSubviews { } } +- (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + @end @interface TZAlbumCell () diff --git a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZAssetModel.h b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZAssetModel.h index 2f56312..b8e58dd 100755 --- a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZAssetModel.h +++ b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZAssetModel.h @@ -23,9 +23,7 @@ typedef enum : NSUInteger { @property (nonatomic, strong) PHAsset *asset; @property (nonatomic, assign) BOOL isSelected; ///< The select status of a photo, default is No @property (nonatomic, assign) TZAssetModelMediaType type; -@property (assign, nonatomic) BOOL needOscillatoryAnimation; @property (nonatomic, copy) NSString *timeLength; -@property (strong, nonatomic) UIImage *cachedImage; /// Init a photo dataModel With a PHAsset /// 用一个PHAsset实例,初始化一个照片模型 diff --git a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImageManager.h b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImageManager.h index 5858207..ca29578 100755 --- a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImageManager.h +++ b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImageManager.h @@ -58,21 +58,21 @@ - (void)getAssetFromFetchResult:(PHFetchResult *)result atIndex:(NSInteger)index allowPickingVideo:(BOOL)allowPickingVideo allowPickingImage:(BOOL)allowPickingImage completion:(void (^)(TZAssetModel *model))completion; /// Get photo 获得照片 -- (void)getPostImageWithAlbumModel:(TZAlbumModel *)model completion:(void (^)(UIImage *postImage))completion; +- (PHImageRequestID)getPostImageWithAlbumModel:(TZAlbumModel *)model completion:(void (^)(UIImage *postImage))completion; -- (int32_t)getPhotoWithAsset:(PHAsset *)asset completion:(void (^)(UIImage *photo,NSDictionary *info,BOOL isDegraded))completion; -- (int32_t)getPhotoWithAsset:(PHAsset *)asset photoWidth:(CGFloat)photoWidth completion:(void (^)(UIImage *photo,NSDictionary *info,BOOL isDegraded))completion; -- (int32_t)getPhotoWithAsset:(PHAsset *)asset completion:(void (^)(UIImage *photo,NSDictionary *info,BOOL isDegraded))completion progressHandler:(void (^)(double progress, NSError *error, BOOL *stop, NSDictionary *info))progressHandler networkAccessAllowed:(BOOL)networkAccessAllowed; -- (int32_t)getPhotoWithAsset:(PHAsset *)asset photoWidth:(CGFloat)photoWidth completion:(void (^)(UIImage *photo,NSDictionary *info,BOOL isDegraded))completion progressHandler:(void (^)(double progress, NSError *error, BOOL *stop, NSDictionary *info))progressHandler networkAccessAllowed:(BOOL)networkAccessAllowed; -- (int32_t)requestImageDataForAsset:(PHAsset *)asset completion:(void (^)(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info))completion progressHandler:(void (^)(double progress, NSError *error, BOOL *stop, NSDictionary *info))progressHandler; +- (PHImageRequestID)getPhotoWithAsset:(PHAsset *)asset completion:(void (^)(UIImage *photo,NSDictionary *info,BOOL isDegraded))completion; +- (PHImageRequestID)getPhotoWithAsset:(PHAsset *)asset photoWidth:(CGFloat)photoWidth completion:(void (^)(UIImage *photo,NSDictionary *info,BOOL isDegraded))completion; +- (PHImageRequestID)getPhotoWithAsset:(PHAsset *)asset completion:(void (^)(UIImage *photo,NSDictionary *info,BOOL isDegraded))completion progressHandler:(void (^)(double progress, NSError *error, BOOL *stop, NSDictionary *info))progressHandler networkAccessAllowed:(BOOL)networkAccessAllowed; +- (PHImageRequestID)getPhotoWithAsset:(PHAsset *)asset photoWidth:(CGFloat)photoWidth completion:(void (^)(UIImage *photo,NSDictionary *info,BOOL isDegraded))completion progressHandler:(void (^)(double progress, NSError *error, BOOL *stop, NSDictionary *info))progressHandler networkAccessAllowed:(BOOL)networkAccessAllowed; +- (PHImageRequestID)requestImageDataForAsset:(PHAsset *)asset completion:(void (^)(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info))completion progressHandler:(void (^)(double progress, NSError *error, BOOL *stop, NSDictionary *info))progressHandler; /// Get full Image 获取原图 /// 如下两个方法completion一般会调多次,一般会先返回缩略图,再返回原图(详见方法内部使用的系统API的说明),如果info[PHImageResultIsDegradedKey] 为 YES,则表明当前返回的是缩略图,否则是原图。 -- (void)getOriginalPhotoWithAsset:(PHAsset *)asset completion:(void (^)(UIImage *photo,NSDictionary *info))completion; -- (void)getOriginalPhotoWithAsset:(PHAsset *)asset newCompletion:(void (^)(UIImage *photo,NSDictionary *info,BOOL isDegraded))completion; +- (PHImageRequestID)getOriginalPhotoWithAsset:(PHAsset *)asset completion:(void (^)(UIImage *photo,NSDictionary *info))completion; +- (PHImageRequestID)getOriginalPhotoWithAsset:(PHAsset *)asset newCompletion:(void (^)(UIImage *photo,NSDictionary *info,BOOL isDegraded))completion; // 该方法中,completion只会走一次 -- (void)getOriginalPhotoDataWithAsset:(PHAsset *)asset completion:(void (^)(NSData *data,NSDictionary *info,BOOL isDegraded))completion; -- (void)getOriginalPhotoDataWithAsset:(PHAsset *)asset progressHandler:(void (^)(double progress, NSError *error, BOOL *stop, NSDictionary *info))progressHandler completion:(void (^)(NSData *data,NSDictionary *info,BOOL isDegraded))completion; +- (PHImageRequestID)getOriginalPhotoDataWithAsset:(PHAsset *)asset completion:(void (^)(NSData *data,NSDictionary *info,BOOL isDegraded))completion; +- (PHImageRequestID)getOriginalPhotoDataWithAsset:(PHAsset *)asset progressHandler:(void (^)(double progress, NSError *error, BOOL *stop, NSDictionary *info))progressHandler completion:(void (^)(NSData *data,NSDictionary *info,BOOL isDegraded))completion; /// Save photo 保存照片 - (void)savePhotoWithImage:(UIImage *)image completion:(void (^)(PHAsset *asset, NSError *error))completion; diff --git a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImageManager.m b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImageManager.m index 8ef71eb..48543ee 100755 --- a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImageManager.m +++ b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImageManager.m @@ -142,9 +142,9 @@ - (void)getAllAlbums:(BOOL)allowPickingVideo allowPickingImage:(BOOL)allowPickin // 有可能是PHCollectionList类的的对象,过滤掉 if (![collection isKindOfClass:[PHAssetCollection class]]) continue; // 过滤空相册 - if (collection.estimatedAssetCount <= 0) continue; + if (collection.estimatedAssetCount <= 0 && ![self isCameraRollAlbum:collection]) continue; PHFetchResult *fetchResult = [PHAsset fetchAssetsInAssetCollection:collection options:option]; - if (fetchResult.count < 1) continue; + if (fetchResult.count < 1 && ![self isCameraRollAlbum:collection]) continue; if ([self.pickerDelegate respondsToSelector:@selector(isAlbumCanSelect:result:)]) { if (![self.pickerDelegate isAlbumCanSelect:collection.localizedTitle result:fetchResult]) { @@ -161,7 +161,9 @@ - (void)getAllAlbums:(BOOL)allowPickingVideo allowPickingImage:(BOOL)allowPickin } } } - if (completion && albumArr.count > 0) completion(albumArr); + if (completion) { + completion(albumArr); + } } #pragma mark - Get Assets @@ -301,7 +303,7 @@ - (NSString *)getBytesFromDataLength:(NSInteger)dataLength { #pragma mark - Get Photo /// Get photo 获得照片本身 -- (int32_t)getPhotoWithAsset:(PHAsset *)asset completion:(void (^)(UIImage *, NSDictionary *, BOOL isDegraded))completion { +- (PHImageRequestID)getPhotoWithAsset:(PHAsset *)asset completion:(void (^)(UIImage *, NSDictionary *, BOOL isDegraded))completion { CGFloat fullScreenWidth = TZScreenWidth; if (fullScreenWidth > _photoPreviewMaxWidth) { fullScreenWidth = _photoPreviewMaxWidth; @@ -309,11 +311,11 @@ - (int32_t)getPhotoWithAsset:(PHAsset *)asset completion:(void (^)(UIImage *, NS return [self getPhotoWithAsset:asset photoWidth:fullScreenWidth completion:completion progressHandler:nil networkAccessAllowed:YES]; } -- (int32_t)getPhotoWithAsset:(PHAsset *)asset photoWidth:(CGFloat)photoWidth completion:(void (^)(UIImage *photo,NSDictionary *info,BOOL isDegraded))completion { +- (PHImageRequestID)getPhotoWithAsset:(PHAsset *)asset photoWidth:(CGFloat)photoWidth completion:(void (^)(UIImage *photo,NSDictionary *info,BOOL isDegraded))completion { return [self getPhotoWithAsset:asset photoWidth:photoWidth completion:completion progressHandler:nil networkAccessAllowed:YES]; } -- (int32_t)getPhotoWithAsset:(PHAsset *)asset completion:(void (^)(UIImage *photo,NSDictionary *info,BOOL isDegraded))completion progressHandler:(void (^)(double progress, NSError *error, BOOL *stop, NSDictionary *info))progressHandler networkAccessAllowed:(BOOL)networkAccessAllowed { +- (PHImageRequestID)getPhotoWithAsset:(PHAsset *)asset completion:(void (^)(UIImage *photo,NSDictionary *info,BOOL isDegraded))completion progressHandler:(void (^)(double progress, NSError *error, BOOL *stop, NSDictionary *info))progressHandler networkAccessAllowed:(BOOL)networkAccessAllowed { CGFloat fullScreenWidth = TZScreenWidth; if (_photoPreviewMaxWidth > 0 && fullScreenWidth > _photoPreviewMaxWidth) { fullScreenWidth = _photoPreviewMaxWidth; @@ -321,7 +323,7 @@ - (int32_t)getPhotoWithAsset:(PHAsset *)asset completion:(void (^)(UIImage *phot return [self getPhotoWithAsset:asset photoWidth:fullScreenWidth completion:completion progressHandler:progressHandler networkAccessAllowed:networkAccessAllowed]; } -- (int32_t)requestImageDataForAsset:(PHAsset *)asset completion:(void (^)(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info))completion progressHandler:(void (^)(double progress, NSError *error, BOOL *stop, NSDictionary *info))progressHandler { +- (PHImageRequestID)requestImageDataForAsset:(PHAsset *)asset completion:(void (^)(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info))completion progressHandler:(void (^)(double progress, NSError *error, BOOL *stop, NSDictionary *info))progressHandler { PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init]; options.progressHandler = ^(double progress, NSError *error, BOOL *stop, NSDictionary *info) { dispatch_async(dispatch_get_main_queue(), ^{ @@ -338,7 +340,7 @@ - (int32_t)requestImageDataForAsset:(PHAsset *)asset completion:(void (^)(NSData return imageRequestID; } -- (int32_t)getPhotoWithAsset:(PHAsset *)asset photoWidth:(CGFloat)photoWidth completion:(void (^)(UIImage *photo,NSDictionary *info,BOOL isDegraded))completion progressHandler:(void (^)(double progress, NSError *error, BOOL *stop, NSDictionary *info))progressHandler networkAccessAllowed:(BOOL)networkAccessAllowed { +- (PHImageRequestID)getPhotoWithAsset:(PHAsset *)asset photoWidth:(CGFloat)photoWidth completion:(void (^)(UIImage *photo,NSDictionary *info,BOOL isDegraded))completion progressHandler:(void (^)(double progress, NSError *error, BOOL *stop, NSDictionary *info))progressHandler networkAccessAllowed:(BOOL)networkAccessAllowed { CGSize imageSize; if (photoWidth < TZScreenWidth && photoWidth < _photoPreviewMaxWidth) { imageSize = AssetGridThumbnailSize; @@ -401,30 +403,30 @@ - (int32_t)getPhotoWithAsset:(PHAsset *)asset photoWidth:(CGFloat)photoWidth com } /// Get postImage / 获取封面图 -- (void)getPostImageWithAlbumModel:(TZAlbumModel *)model completion:(void (^)(UIImage *))completion { +- (PHImageRequestID)getPostImageWithAlbumModel:(TZAlbumModel *)model completion:(void (^)(UIImage *))completion { id asset = [model.result lastObject]; if (!self.sortAscendingByModificationDate) { asset = [model.result firstObject]; } - [[TZImageManager manager] getPhotoWithAsset:asset photoWidth:80 completion:^(UIImage *photo, NSDictionary *info, BOOL isDegraded) { + return [[TZImageManager manager] getPhotoWithAsset:asset photoWidth:80 completion:^(UIImage *photo, NSDictionary *info, BOOL isDegraded) { if (completion) completion(photo); }]; } /// Get Original Photo / 获取原图 -- (void)getOriginalPhotoWithAsset:(PHAsset *)asset completion:(void (^)(UIImage *photo,NSDictionary *info))completion { - [self getOriginalPhotoWithAsset:asset newCompletion:^(UIImage *photo, NSDictionary *info, BOOL isDegraded) { +- (PHImageRequestID)getOriginalPhotoWithAsset:(PHAsset *)asset completion:(void (^)(UIImage *photo,NSDictionary *info))completion { + return [self getOriginalPhotoWithAsset:asset newCompletion:^(UIImage *photo, NSDictionary *info, BOOL isDegraded) { if (completion) { completion(photo,info); } }]; } -- (void)getOriginalPhotoWithAsset:(PHAsset *)asset newCompletion:(void (^)(UIImage *photo,NSDictionary *info,BOOL isDegraded))completion { +- (PHImageRequestID)getOriginalPhotoWithAsset:(PHAsset *)asset newCompletion:(void (^)(UIImage *photo,NSDictionary *info,BOOL isDegraded))completion { PHImageRequestOptions *option = [[PHImageRequestOptions alloc]init]; option.networkAccessAllowed = YES; option.resizeMode = PHImageRequestOptionsResizeModeFast; - [[PHImageManager defaultManager] requestImageForAsset:asset targetSize:PHImageManagerMaximumSize contentMode:PHImageContentModeAspectFit options:option resultHandler:^(UIImage *result, NSDictionary *info) { + return [[PHImageManager defaultManager] requestImageForAsset:asset targetSize:PHImageManagerMaximumSize contentMode:PHImageContentModeAspectFit options:option resultHandler:^(UIImage *result, NSDictionary *info) { BOOL downloadFinined = (![[info objectForKey:PHImageCancelledKey] boolValue] && ![info objectForKey:PHImageErrorKey]); if (downloadFinined && result) { result = [self fixOrientation:result]; @@ -434,11 +436,11 @@ - (void)getOriginalPhotoWithAsset:(PHAsset *)asset newCompletion:(void (^)(UIIma }]; } -- (void)getOriginalPhotoDataWithAsset:(PHAsset *)asset completion:(void (^)(NSData *data,NSDictionary *info,BOOL isDegraded))completion { - [self getOriginalPhotoDataWithAsset:asset progressHandler:nil completion:completion]; +- (PHImageRequestID)getOriginalPhotoDataWithAsset:(PHAsset *)asset completion:(void (^)(NSData *data,NSDictionary *info,BOOL isDegraded))completion { + return [self getOriginalPhotoDataWithAsset:asset progressHandler:nil completion:completion]; } -- (void)getOriginalPhotoDataWithAsset:(PHAsset *)asset progressHandler:(void (^)(double progress, NSError *error, BOOL *stop, NSDictionary *info))progressHandler completion:(void (^)(NSData *data,NSDictionary *info,BOOL isDegraded))completion { +- (PHImageRequestID)getOriginalPhotoDataWithAsset:(PHAsset *)asset progressHandler:(void (^)(double progress, NSError *error, BOOL *stop, NSDictionary *info))progressHandler completion:(void (^)(NSData *data,NSDictionary *info,BOOL isDegraded))completion { PHImageRequestOptions *option = [[PHImageRequestOptions alloc] init]; option.networkAccessAllowed = YES; if ([[asset valueForKey:@"filename"] hasSuffix:@"GIF"]) { @@ -447,7 +449,7 @@ - (void)getOriginalPhotoDataWithAsset:(PHAsset *)asset progressHandler:(void (^) } [option setProgressHandler:progressHandler]; option.deliveryMode = PHImageRequestOptionsDeliveryModeHighQualityFormat; - [[PHImageManager defaultManager] requestImageDataForAsset:asset options:option resultHandler:^(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info) { + return [[PHImageManager defaultManager] requestImageDataForAsset:asset options:option resultHandler:^(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info) { BOOL downloadFinined = (![[info objectForKey:PHImageCancelledKey] boolValue] && ![info objectForKey:PHImageErrorKey]); if (downloadFinined && imageData) { if (completion) completion(imageData,info,NO); diff --git a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/en.lproj/Localizable.strings b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/en.lproj/Localizable.strings index ef699fa..0a3abca 100755 Binary files a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/en.lproj/Localizable.strings and b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/en.lproj/Localizable.strings differ diff --git a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/vi.lproj/Localizable.strings b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/vi.lproj/Localizable.strings index 7658f73..6d09f11 100644 --- a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/vi.lproj/Localizable.strings +++ b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/vi.lproj/Localizable.strings @@ -9,6 +9,7 @@ "Preview" = "Xem trước"; "Full image" = "Hình gốc"; "Processing..." = "Đang xử lý..."; +"No Photos or Videos" = "Không có ảnh hoặc video"; "Can not use camera" = "Máy chụp hình không khả dụng"; "Synchronizing photos from iCloud" = "Đang đồng bộ hình ảnh từ ICloud"; "Can not choose both video and photo" = "Trong lúc chọn hình ảnh không cùng lúc chọn video"; diff --git a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/zh-Hans.lproj/Localizable.strings b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/zh-Hans.lproj/Localizable.strings index ffe35b9..b29cbda 100755 Binary files a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/zh-Hans.lproj/Localizable.strings and b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/zh-Hans.lproj/Localizable.strings differ diff --git a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/zh-Hant.lproj/Localizable.strings b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/zh-Hant.lproj/Localizable.strings index 3aaccfa..9aefb59 100755 Binary files a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/zh-Hant.lproj/Localizable.strings and b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/zh-Hant.lproj/Localizable.strings differ diff --git a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.h b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.h index 1d92c67..05b0ee0 100644 --- a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.h +++ b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.h @@ -4,7 +4,7 @@ // // Created by 谭真 on 15/12/24. // Copyright © 2015年 谭真. All rights reserved. -// version 3.1.1 - 2018.11.07 +// version 3.1.7 - 2019.01.04 // 更多信息,请前往项目的github地址:https://github.com/banchichen/TZImagePickerController /* @@ -230,26 +230,11 @@ #pragma mark - - (void)cancelButtonClick; -// The picker should dismiss itself; when it dismissed these handle will be called. -// You can also set autoDismiss to NO, then the picker don't dismiss itself. -// 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的时候,会执行下面的handle -// 你也可以设置autoDismiss属性为NO,选择器就不会自己dismis了 -// 如果isSelectOriginalPhoto为YES,表明用户选择了原图 -// 你可以通过一个asset获得原图,通过这个方法:[[TZImageManager manager] getOriginalPhotoWithAsset:completion:] -// photos数组里的UIImage对象,默认是828像素宽,你可以通过设置photoWidth属性的值来改变它 +// For method annotations, see the corresponding method in TZImagePickerControllerDelegate / 方法注释见TZImagePickerControllerDelegate中对应方法 @property (nonatomic, copy) void (^didFinishPickingPhotosHandle)(NSArray *photos,NSArray *assets,BOOL isSelectOriginalPhoto); @property (nonatomic, copy) void (^didFinishPickingPhotosWithInfosHandle)(NSArray *photos,NSArray *assets,BOOL isSelectOriginalPhoto,NSArray *infos); @property (nonatomic, copy) void (^imagePickerControllerDidCancelHandle)(void); - -// If user picking a video, this handle will be called. -// 如果用户选择了一个视频,下面的handle会被执行 @property (nonatomic, copy) void (^didFinishPickingVideoHandle)(UIImage *coverImage,PHAsset *asset); - -// If user picking a gif image, this callback will be called. -// 如果用户选择了一个gif图片,下面的handle会被执行 @property (nonatomic, copy) void (^didFinishPickingGifImageHandle)(UIImage *animatedImage,id sourceAssets); @property (nonatomic, weak) id pickerDelegate; @@ -259,27 +244,30 @@ @protocol TZImagePickerControllerDelegate @optional -// The picker should dismiss itself; when it dismissed these handle will be called. +// The picker should dismiss itself; when it dismissed these callback will be called. // You can also set autoDismiss to NO, then the picker don't dismiss itself. // 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的时候,会执行下面的handle +// 这个照片选择器会自己dismiss,当选择器dismiss的时候,会执行下面的代理方法 // 你也可以设置autoDismiss属性为NO,选择器就不会自己dismis了 // 如果isSelectOriginalPhoto为YES,表明用户选择了原图 // 你可以通过一个asset获得原图,通过这个方法:[[TZImageManager manager] getOriginalPhotoWithAsset:completion:] // photos数组里的UIImage对象,默认是828像素宽,你可以通过设置photoWidth属性的值来改变它 - (void)imagePickerController:(TZImagePickerController *)picker didFinishPickingPhotos:(NSArray *)photos sourceAssets:(NSArray *)assets isSelectOriginalPhoto:(BOOL)isSelectOriginalPhoto; - (void)imagePickerController:(TZImagePickerController *)picker didFinishPickingPhotos:(NSArray *)photos sourceAssets:(NSArray *)assets isSelectOriginalPhoto:(BOOL)isSelectOriginalPhoto infos:(NSArray *)infos; -//- (void)imagePickerControllerDidCancel:(TZImagePickerController *)picker __attribute__((deprecated("Use -tz_imagePickerControllerDidCancel:."))); - (void)tz_imagePickerControllerDidCancel:(TZImagePickerController *)picker; -// If user picking a video, this callback will be called. -// 如果用户选择了一个视频,下面的handle会被执行 +// If user picking a video and allowPickingMultipleVideo is NO, this callback will be called. +// If allowPickingMultipleVideo is YES, will call imagePickerController:didFinishPickingPhotos:sourceAssets:isSelectOriginalPhoto: +// 如果用户选择了一个视频且allowPickingMultipleVideo是NO,下面的代理方法会被执行 +// 如果allowPickingMultipleVideo是YES,将会调用imagePickerController:didFinishPickingPhotos:sourceAssets:isSelectOriginalPhoto: - (void)imagePickerController:(TZImagePickerController *)picker didFinishPickingVideo:(UIImage *)coverImage sourceAssets:(PHAsset *)asset; -// If user picking a gif image, this callback will be called. -// 如果用户选择了一个gif图片,下面的handle会被执行 +// If user picking a gif image and allowPickingMultipleVideo is NO, this callback will be called. +// If allowPickingMultipleVideo is YES, will call imagePickerController:didFinishPickingPhotos:sourceAssets:isSelectOriginalPhoto: +// 如果用户选择了一个gif图片且allowPickingMultipleVideo是NO,下面的代理方法会被执行 +// 如果allowPickingMultipleVideo是YES,将会调用imagePickerController:didFinishPickingPhotos:sourceAssets:isSelectOriginalPhoto: - (void)imagePickerController:(TZImagePickerController *)picker didFinishPickingGifImage:(UIImage *)animatedImage sourceAssets:(PHAsset *)asset; // Decide album show or not't diff --git a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.m b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.m index ebaeaef..f4159b3 100644 --- a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.m +++ b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.m @@ -4,7 +4,7 @@ // // Created by 谭真 on 15/12/24. // Copyright © 2015年 谭真. All rights reserved. -// version 3.1.1 - 2018.11.07 +// version 3.1.7 - 2019.01.04 // 更多信息,请前往项目的github地址:https://github.com/banchichen/TZImagePickerController #import "TZImagePickerController.h" diff --git a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImageRequestOperation.h b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImageRequestOperation.h new file mode 100644 index 0000000..2820e36 --- /dev/null +++ b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImageRequestOperation.h @@ -0,0 +1,22 @@ +// +// TZImageRequestOperation.h +// TZImagePickerControllerFramework +// +// Created by 谭真 on 2018/12/20. +// Copyright © 2018 谭真. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface TZImageRequestOperation : NSOperation + +typedef void(^TZImageRequestCompletedBlock)(UIImage *photo, NSDictionary *info, BOOL isDegraded); +typedef void(^TZImageRequestProgressBlock)(double progress, NSError *error, BOOL *stop, NSDictionary *info); + +- (instancetype)initWithAsset:(PHAsset *)asset completion:(TZImageRequestCompletedBlock)completionBlock progressHandler:(TZImageRequestProgressBlock)progressHandler; +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImageRequestOperation.m b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImageRequestOperation.m new file mode 100644 index 0000000..40b016a --- /dev/null +++ b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImageRequestOperation.m @@ -0,0 +1,88 @@ +// +// TZImageRequestOperation.m +// TZImagePickerControllerFramework +// +// Created by 谭真 on 2018/12/20. +// Copyright © 2018 谭真. All rights reserved. +// + +#import "TZImageRequestOperation.h" +#import "TZImageManager.h" + +@interface TZImageRequestOperation () +@property (nonatomic, copy) TZImageRequestCompletedBlock completedBlock; +@property (nonatomic, copy) TZImageRequestProgressBlock progressBlock; +@property (nonatomic, strong) PHAsset *asset; + +@property (assign, nonatomic, getter = isExecuting) BOOL executing; +@property (assign, nonatomic, getter = isFinished) BOOL finished; +@end + +@implementation TZImageRequestOperation + +@synthesize executing = _executing; +@synthesize finished = _finished; + +- (instancetype)initWithAsset:(PHAsset *)asset completion:(TZImageRequestCompletedBlock)completionBlock progressHandler:(TZImageRequestProgressBlock)progressHandler { + self = [super init]; + self.asset = asset; + self.completedBlock = completionBlock; + self.progressBlock = progressHandler; + _executing = NO; + _finished = NO; + return self; +} + +- (void)start { + self.executing = YES; + dispatch_async(dispatch_get_global_queue(0, 0), ^{ + [[TZImageManager manager] getPhotoWithAsset:self.asset completion:^(UIImage *photo, NSDictionary *info, BOOL isDegraded) { + dispatch_async(dispatch_get_main_queue(), ^{ + if (!isDegraded) { + if (self.completedBlock) { + self.completedBlock(photo, info, isDegraded); + } + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [self done]; + }); + } + }); + } progressHandler:^(double progress, NSError *error, BOOL *stop, NSDictionary *info) { + dispatch_async(dispatch_get_main_queue(), ^{ + if (self.progressBlock) { + self.progressBlock(progress, error, stop, info); + } + }); + } networkAccessAllowed:YES]; + }); +} + +- (void)done { + self.finished = YES; + self.executing = NO; + [self reset]; +} + +- (void)reset { + self.asset = nil; + self.completedBlock = nil; + self.progressBlock = nil; +} + +- (void)setFinished:(BOOL)finished { + [self willChangeValueForKey:@"isFinished"]; + _finished = finished; + [self didChangeValueForKey:@"isFinished"]; +} + +- (void)setExecuting:(BOOL)executing { + [self willChangeValueForKey:@"isExecuting"]; + _executing = executing; + [self didChangeValueForKey:@"isExecuting"]; +} + +- (BOOL)isAsynchronous { + return YES; +} + +@end diff --git a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZLocationManager.h b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZLocationManager.h index f869bbb..b60d5fc 100644 --- a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZLocationManager.h +++ b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZLocationManager.h @@ -12,7 +12,7 @@ @interface TZLocationManager : NSObject -+ (instancetype)manager; ++ (instancetype)manager NS_SWIFT_NAME(default()); /// 开始定位 - (void)startLocation; diff --git a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPickerController.m b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPickerController.m index abd009a..f0dbd5e 100755 --- a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPickerController.m +++ b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPickerController.m @@ -17,6 +17,7 @@ #import "TZGifPhotoPreviewController.h" #import "TZLocationManager.h" #import +#import "TZImageRequestOperation.h" @interface TZPhotoPickerController () { NSMutableArray *_models; @@ -38,10 +39,11 @@ @interface TZPhotoPickerController ()= 1) { havenotShowAlert = YES; } - } networkAccessAllowed:YES]; + }]; + [self.operationQueue addOperation:operation]; } } if (tzImagePickerVc.selectedModels.count <= 0 || tzImagePickerVc.onlyReturnAsset) { @@ -495,7 +511,6 @@ - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cell cell.allowPickingMultipleVideo = tzImagePickerVc.allowPickingMultipleVideo; cell.photoDefImage = tzImagePickerVc.photoDefImage; cell.photoSelImage = tzImagePickerVc.photoSelImage; - cell.useCachedImage = self.useCachedImage; cell.assetCellDidSetModelBlock = tzImagePickerVc.assetCellDidSetModelBlock; cell.assetCellDidLayoutSubviewsBlock = tzImagePickerVc.assetCellDidLayoutSubviewsBlock; TZAssetModel *model; @@ -540,7 +555,7 @@ - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cell } [strongSelf refreshBottomToolBarStatus]; if (tzImagePickerVc.showSelectedIndex || tzImagePickerVc.showPhotoCannotSelectLayer) { - [strongSelf setUseCachedImageAndReloadData]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"TZ_PHOTO_PICKER_RELOAD_NOTIFICATION" object:strongSelf.navigationController]; } [UIView showOscillatoryAnimationWithLayer:strongLayer type:TZOscillatoryAnimationToSmaller]; } else { @@ -554,11 +569,10 @@ - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cell } strongCell.selectPhotoButton.selected = YES; model.isSelected = YES; + [tzImagePickerVc addSelectedModel:model]; if (tzImagePickerVc.showSelectedIndex || tzImagePickerVc.showPhotoCannotSelectLayer) { - model.needOscillatoryAnimation = YES; - [strongSelf setUseCachedImageAndReloadData]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"TZ_PHOTO_PICKER_RELOAD_NOTIFICATION" object:strongSelf.navigationController]; } - [tzImagePickerVc addSelectedModel:model]; [strongSelf refreshBottomToolBarStatus]; [UIView showOscillatoryAnimationWithLayer:strongLayer type:TZOscillatoryAnimationToSmaller]; } else { @@ -616,14 +630,6 @@ - (void)scrollViewDidScroll:(UIScrollView *)scrollView { #pragma mark - Private Method -- (void)setUseCachedImageAndReloadData { - self.useCachedImage = YES; - [self.collectionView reloadData]; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - self.useCachedImage = NO; - }); -} - /// 拍照按钮点击事件 - (void)takePhoto { AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo]; diff --git a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPreviewCell.h b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPreviewCell.h index d32ac24..b601ada 100644 --- a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPreviewCell.h +++ b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPreviewCell.h @@ -58,6 +58,7 @@ @property (strong, nonatomic) AVPlayerLayer *playerLayer; @property (strong, nonatomic) UIButton *playButton; @property (strong, nonatomic) UIImage *cover; +@property (nonatomic, strong) NSURL *videoURL; - (void)pausePlayerAndShowNaviBar; @end diff --git a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPreviewCell.m b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPreviewCell.m index 9a7e115..f9d457f 100644 --- a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPreviewCell.m +++ b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPreviewCell.m @@ -224,6 +224,8 @@ - (void)setAsset:(PHAsset *)asset { self.imageRequestID = 0; } } networkAccessAllowed:YES]; + + [self configMaximumZoomScale]; } - (void)recoverSubviews { @@ -257,9 +259,8 @@ - (void)resizeSubviews { [self refreshScrollViewContentSize]; } -- (void)setAllowCrop:(BOOL)allowCrop { - _allowCrop = allowCrop; - _scrollView.maximumZoomScale = allowCrop ? 4.0 : 2.5; +- (void)configMaximumZoomScale { + _scrollView.maximumZoomScale = _allowCrop ? 4.0 : 2.5; if ([self.asset isKindOfClass:[PHAsset class]]) { PHAsset *phAsset = (PHAsset *)self.asset; @@ -354,7 +355,7 @@ - (void)refreshImageContainerViewCenter { @implementation TZVideoPreviewCell - (void)configSubviews { - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(pausePlayerAndShowNaviBar) name:UIApplicationWillResignActiveNotification object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appWillResignActiveNotification) name:UIApplicationWillResignActiveNotification object:nil]; } - (void)configPlayButton { @@ -373,6 +374,11 @@ - (void)setModel:(TZAssetModel *)model { [self configMoviePlayer]; } +- (void)setVideoURL:(NSURL *)videoURL { + _videoURL = videoURL; + [self configMoviePlayer]; +} + - (void)configMoviePlayer { if (_player) { [_playerLayer removeFromSuperlayer]; @@ -381,20 +387,29 @@ - (void)configMoviePlayer { _player = nil; } - [[TZImageManager manager] getPhotoWithAsset:self.model.asset completion:^(UIImage *photo, NSDictionary *info, BOOL isDegraded) { - self->_cover = photo; - }]; - [[TZImageManager manager] getVideoWithAsset:self.model.asset completion:^(AVPlayerItem *playerItem, NSDictionary *info) { - dispatch_async(dispatch_get_main_queue(), ^{ - self->_player = [AVPlayer playerWithPlayerItem:playerItem]; - self->_playerLayer = [AVPlayerLayer playerLayerWithPlayer:self->_player]; - self->_playerLayer.backgroundColor = [UIColor blackColor].CGColor; - self->_playerLayer.frame = self.bounds; - [self.layer addSublayer:self->_playerLayer]; - [self configPlayButton]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(pausePlayerAndShowNaviBar) name:AVPlayerItemDidPlayToEndTimeNotification object:self->_player.currentItem]; - }); - }]; + if (self.model && self.model.asset) { + [[TZImageManager manager] getPhotoWithAsset:self.model.asset completion:^(UIImage *photo, NSDictionary *info, BOOL isDegraded) { + self.cover = photo; + }]; + [[TZImageManager manager] getVideoWithAsset:self.model.asset completion:^(AVPlayerItem *playerItem, NSDictionary *info) { + dispatch_async(dispatch_get_main_queue(), ^{ + [self configPlayerWithItem:playerItem]; + }); + }]; + } else { + AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:self.videoURL]; + [self configPlayerWithItem:playerItem]; + } +} + +- (void)configPlayerWithItem:(AVPlayerItem *)playerItem { + self.player = [AVPlayer playerWithPlayerItem:playerItem]; + self.playerLayer = [AVPlayerLayer playerLayerWithPlayer:self.player]; + self.playerLayer.backgroundColor = [UIColor blackColor].CGColor; + self.playerLayer.frame = self.bounds; + [self.layer addSublayer:self.playerLayer]; + [self configPlayButton]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(pausePlayerAndShowNaviBar) name:AVPlayerItemDidPlayToEndTimeNotification object:self.player.currentItem]; } - (void)layoutSubviews { @@ -404,7 +419,17 @@ - (void)layoutSubviews { } - (void)photoPreviewCollectionViewDidScroll { - [self pausePlayerAndShowNaviBar]; + if (_player && _player.rate != 0.0) { + [self pausePlayerAndShowNaviBar]; + } +} + +#pragma mark - Notification + +- (void)appWillResignActiveNotification { + if (_player && _player.rate != 0.0) { + [self pausePlayerAndShowNaviBar]; + } } #pragma mark - Click Event @@ -426,12 +451,10 @@ - (void)playButtonClick { } - (void)pausePlayerAndShowNaviBar { - if (_player.rate != 0.0) { - [_player pause]; - [_playButton setImage:[UIImage tz_imageNamedFromMyBundle:@"MMVideoPreviewPlay"] forState:UIControlStateNormal]; - if (self.singleTapGestureBlock) { - self.singleTapGestureBlock(); - } + [_player pause]; + [_playButton setImage:[UIImage tz_imageNamedFromMyBundle:@"MMVideoPreviewPlay"] forState:UIControlStateNormal]; + if (self.singleTapGestureBlock) { + self.singleTapGestureBlock(); } } diff --git a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPreviewController.m b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPreviewController.m index 4df41e6..9cbf9fe 100644 --- a/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPreviewController.m +++ b/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPreviewController.m @@ -502,7 +502,10 @@ - (void)collectionView:(UICollectionView *)collectionView didEndDisplayingCell:( if ([cell isKindOfClass:[TZPhotoPreviewCell class]]) { [(TZPhotoPreviewCell *)cell recoverSubviews]; } else if ([cell isKindOfClass:[TZVideoPreviewCell class]]) { - [(TZVideoPreviewCell *)cell pausePlayerAndShowNaviBar]; + TZVideoPreviewCell *videoCell = (TZVideoPreviewCell *)cell; + if (videoCell.player && videoCell.player.rate != 0.0) { + [videoCell pausePlayerAndShowNaviBar]; + } } } diff --git a/README.md b/README.md index eb6e8b4..a29cbdf 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # TZImagePreviewController [![CocoaPods](https://img.shields.io/cocoapods/v/TZImagePreviewController.svg?style=flat)](https://github.com/banchichen/TZImagePreviewController) -Enhance the [TZImagePickerController](https://github.com/banchichen/TZImagePickerController) library, supports to preview photos with UIImage or NSURL. -对[TZImagePickerController](https://github.com/banchichen/TZImagePickerController)库的增强,支持用UIImage、NSURL预览照片。 +Enhance the [TZImagePickerController](https://github.com/banchichen/TZImagePickerController) library, supports to preview photo by UIImage or NSURL and preview video by NSURL. +对[TZImagePickerController](https://github.com/banchichen/TZImagePickerController)库的增强,支持用UIImage、NSURL预览照片和用NSURL预览视频。 ## 一. Installation 安装 diff --git a/TZImagePreviewController.podspec b/TZImagePreviewController.podspec index d01786a..e97f741 100644 --- a/TZImagePreviewController.podspec +++ b/TZImagePreviewController.podspec @@ -1,15 +1,15 @@ Pod::Spec.new do |s| s.name = "TZImagePreviewController" - s.version = "0.2.1" - s.summary = "Enhance the TZImagePickerController library, supports to preview photos with UIImage or NSURL." + s.version = "0.3.0" + s.summary = "Enhance the TZImagePickerController library, supports to preview photo by UIImage or NSURL and preview video by NSURL." s.homepage = "https://github.com/banchichen/TZImagePreviewController" s.license = "MIT" s.author = { "banchichen" => "tanzhenios@foxmail.com" } s.platform = :ios s.ios.deployment_target = "8.0" - s.source = { :git => "https://github.com/banchichen/TZImagePreviewController.git", :tag => "0.2.1" } + s.source = { :git => "https://github.com/banchichen/TZImagePreviewController.git", :tag => "0.3.0" } s.requires_arc = true s.source_files = "TZImagePreviewController/TZImagePreviewController/*.{h,m}" s.frameworks = "Photos" - s.dependency 'TZImagePickerController', '>=3.1.1' + s.dependency 'TZImagePickerController', '>=3.1.7' end diff --git a/TZImagePreviewController.xcodeproj/project.pbxproj b/TZImagePreviewController.xcodeproj/project.pbxproj index bb261ea..2bc43b2 100644 --- a/TZImagePreviewController.xcodeproj/project.pbxproj +++ b/TZImagePreviewController.xcodeproj/project.pbxproj @@ -10,6 +10,7 @@ 6C94B21B132413E6D0951A54 /* libPods-TZImagePreviewController.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1418F5154E510D4AF8F71F75 /* libPods-TZImagePreviewController.a */; }; 9024661C2134394100C45621 /* TZImagePreviewController.podspec in Resources */ = {isa = PBXBuildFile; fileRef = 9024661A2134394100C45621 /* TZImagePreviewController.podspec */; }; 9024661D2134394100C45621 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 9024661B2134394100C45621 /* README.md */; }; + 9034570D21DEEAC5008CEEBE /* test_video.mov in Resources */ = {isa = PBXBuildFile; fileRef = 9034570C21DEEAC5008CEEBE /* test_video.mov */; }; 90F383A8212EBB2200D92DD1 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 90F383A7212EBB2200D92DD1 /* AppDelegate.m */; }; 90F383AB212EBB2200D92DD1 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 90F383AA212EBB2200D92DD1 /* ViewController.m */; }; 90F383B0212EBB2300D92DD1 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 90F383AF212EBB2300D92DD1 /* Assets.xcassets */; }; @@ -25,6 +26,7 @@ 4FD7270A23BD359688957D14 /* Pods-TZImagePreviewController.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TZImagePreviewController.release.xcconfig"; path = "Pods/Target Support Files/Pods-TZImagePreviewController/Pods-TZImagePreviewController.release.xcconfig"; sourceTree = ""; }; 9024661A2134394100C45621 /* TZImagePreviewController.podspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = TZImagePreviewController.podspec; sourceTree = SOURCE_ROOT; }; 9024661B2134394100C45621 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = SOURCE_ROOT; }; + 9034570C21DEEAC5008CEEBE /* test_video.mov */ = {isa = PBXFileReference; lastKnownFileType = video.quicktime; path = test_video.mov; sourceTree = ""; }; 90F383A3212EBB2200D92DD1 /* TZImagePreviewController.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TZImagePreviewController.app; sourceTree = BUILT_PRODUCTS_DIR; }; 90F383A6212EBB2200D92DD1 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 90F383A7212EBB2200D92DD1 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; @@ -62,6 +64,14 @@ name = Frameworks; sourceTree = ""; }; + 9034570B21DEEAAF008CEEBE /* Sources */ = { + isa = PBXGroup; + children = ( + 9034570C21DEEAC5008CEEBE /* test_video.mov */, + ); + path = Sources; + sourceTree = ""; + }; 90F3839A212EBB2100D92DD1 = { isa = PBXGroup; children = ( @@ -95,6 +105,7 @@ 90F383B1212EBB2300D92DD1 /* LaunchScreen.storyboard */, 90F383B4212EBB2300D92DD1 /* Info.plist */, 90F383B5212EBB2300D92DD1 /* main.m */, + 9034570B21DEEAAF008CEEBE /* Sources */, 9024661B2134394100C45621 /* README.md */, 9024661A2134394100C45621 /* TZImagePreviewController.podspec */, ); @@ -179,6 +190,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 9034570D21DEEAC5008CEEBE /* test_video.mov in Resources */, 90F383CB212EBCC500D92DD1 /* Main.storyboard in Resources */, 90F383B3212EBB2300D92DD1 /* LaunchScreen.storyboard in Resources */, 9024661D2134394100C45621 /* README.md in Resources */, diff --git a/TZImagePreviewController/Info.plist b/TZImagePreviewController/Info.plist index 8a53188..5e2b7d3 100644 --- a/TZImagePreviewController/Info.plist +++ b/TZImagePreviewController/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 0.2.1 + 0.3.0 CFBundleVersion 1 LSRequiresIPhoneOS diff --git a/TZImagePreviewController/Sources/test_video.mov b/TZImagePreviewController/Sources/test_video.mov new file mode 100644 index 0000000..e08bfa2 Binary files /dev/null and b/TZImagePreviewController/Sources/test_video.mov differ diff --git a/TZImagePreviewController/TZImagePreviewController/TZImagePreviewController.h b/TZImagePreviewController/TZImagePreviewController/TZImagePreviewController.h index c677fe8..ec4239a 100644 --- a/TZImagePreviewController/TZImagePreviewController/TZImagePreviewController.h +++ b/TZImagePreviewController/TZImagePreviewController/TZImagePreviewController.h @@ -4,7 +4,8 @@ // // Created by 谭真 on 18/08/23. // Copyright © 2018年 谭真. All rights reserved. -// +// version 0.3.0 - 2019.01.04 +// 更多信息,请前往项目的github地址:https://github.com/banchichen/TZImagePreviewController #import #import diff --git a/TZImagePreviewController/TZImagePreviewController/TZImagePreviewController.m b/TZImagePreviewController/TZImagePreviewController/TZImagePreviewController.m index edbd6e5..a7046c9 100644 --- a/TZImagePreviewController/TZImagePreviewController/TZImagePreviewController.m +++ b/TZImagePreviewController/TZImagePreviewController/TZImagePreviewController.m @@ -4,7 +4,7 @@ // // Created by 谭真 on 18/08/23. // Copyright © 2018年 谭真. All rights reserved. -// +// version 0.3.0 - 2019.01.04 #import "TZImagePreviewController.h" #import "TZPhotoPreviewCell.h" @@ -12,6 +12,7 @@ #import "UIView+Layout.h" #import "TZImagePickerController.h" #import "TZImageManager.h" +#import @interface TZImagePreviewController () { UICollectionView *_collectionView; @@ -41,6 +42,8 @@ @interface TZImagePreviewController () +#import @interface TZTestCell : UICollectionViewCell @@ -16,5 +17,8 @@ @property (nonatomic, strong) UILabel *gifLable; @property (nonatomic, strong) id asset; +@property (nonatomic, strong) NSURL *videoURL; +@property (nonatomic, strong) AVPlayer *player; +@property (nonatomic, strong) AVPlayerLayer *playerLayer; @end diff --git a/TZImagePreviewController/TZTestCell.m b/TZImagePreviewController/TZTestCell.m index cae668c..17c1773 100644 --- a/TZImagePreviewController/TZTestCell.m +++ b/TZImagePreviewController/TZTestCell.m @@ -53,6 +53,8 @@ - (void)layoutSubviews { _deleteBtn.frame = CGRectMake(self.tz_width - 36, 0, 36, 36); CGFloat width = self.tz_width / 3.0; _videoImageView.frame = CGRectMake(width, width, width, width); + [self bringSubviewToFront:_videoImageView]; + _playerLayer.frame = self.bounds; } - (void)setAsset:(PHAsset *)asset { @@ -61,7 +63,6 @@ - (void)setAsset:(PHAsset *)asset { _videoImageView.hidden = asset.mediaType != PHAssetMediaTypeVideo; _gifLable.hidden = ![[asset valueForKey:@"filename"] containsString:@"GIF"]; } else { - _videoImageView.hidden = YES; if ([asset isKindOfClass:[NSURL class]]) { NSURL *URL = (NSURL *)asset; _gifLable.hidden = ![URL.absoluteString.lowercaseString hasSuffix:@"gif"]; @@ -69,6 +70,35 @@ - (void)setAsset:(PHAsset *)asset { _gifLable.hidden = YES; } } + [self configMoviePlayer]; +} + +- (void)setVideoURL:(NSURL *)videoURL { + _videoURL = videoURL; + [self configMoviePlayer]; +} + +- (void)configMoviePlayer { + if (_player) { + [_playerLayer removeFromSuperlayer]; + _playerLayer = nil; + [_player pause]; + _player = nil; + } + + self.videoImageView.hidden = !self.videoURL; + if (self.videoURL) { + // 这个处理比较耗内存,最好是只用UIImageView显示视频的封面(服务端返回),不创建AVPlayer + AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:self.videoURL]; + self.player = [AVPlayer playerWithPlayerItem:playerItem]; + self.playerLayer = [AVPlayerLayer playerLayerWithPlayer:self.player]; + self.playerLayer.backgroundColor = [UIColor blackColor].CGColor; + self.playerLayer.frame = self.bounds; + [self.layer addSublayer:self.playerLayer]; + // 如cell内也需要播放视频,打开下面的注释即可,需注意会导致内存升高。同时需监听播放结束、应用回到后台的通知,将播放重置到起点或暂停,参考TZVideoPreviewCell内的处理 + // [self.player play]; + // self.videoImageView.hidden = YES; + } } @end diff --git a/TZImagePreviewController/ViewController.m b/TZImagePreviewController/ViewController.m index f4ae78f..07612f9 100644 --- a/TZImagePreviewController/ViewController.m +++ b/TZImagePreviewController/ViewController.m @@ -25,18 +25,24 @@ @interface ViewController ()