Showing preview only (772K chars total). Download the full file or copy to clipboard to get everything.
Repository: hujewelz/HUPhotoBrowser
Branch: master
Commit: c7530436a646
Files: 189
Total size: 709.1 KB
Directory structure:
gitextract_ok1bowu5/
├── .com.apple.timemachine.supported
├── .swift-version
├── Example/
│ ├── HUPhotoBrowser Demo/
│ │ ├── AppDelegate.h
│ │ ├── AppDelegate.m
│ │ ├── Base.lproj/
│ │ │ ├── LaunchScreen.xib
│ │ │ └── Main.storyboard
│ │ ├── Images.xcassets/
│ │ │ └── AppIcon.appiconset/
│ │ │ └── Contents.json
│ │ ├── Info.plist
│ │ ├── PhotoCell.h
│ │ ├── PhotoCell.m
│ │ ├── ViewController.h
│ │ ├── ViewController.m
│ │ └── main.m
│ ├── HUPhotoBrowser Demo.xcodeproj/
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace/
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata/
│ │ │ └── HUPhotoBrowser Demo.xccheckout
│ │ └── xcuserdata/
│ │ ├── huluobo.xcuserdatad/
│ │ │ └── xcschemes/
│ │ │ └── xcschememanagement.plist
│ │ ├── jewelz.xcuserdatad/
│ │ │ └── xcschemes/
│ │ │ ├── HUPhotoBrowser Demo.xcscheme
│ │ │ └── xcschememanagement.plist
│ │ └── mac.xcuserdatad/
│ │ ├── xcdebugger/
│ │ │ └── Breakpoints_v2.xcbkptlist
│ │ └── xcschemes/
│ │ ├── HUPhotoBrowser Demo.xcscheme
│ │ └── xcschememanagement.plist
│ ├── HUPhotoBrowser Demo.xcworkspace/
│ │ ├── contents.xcworkspacedata
│ │ ├── xcshareddata/
│ │ │ ├── HUPhotoBrowser Demo.xccheckout
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── xcuserdata/
│ │ ├── huluobo.xcuserdatad/
│ │ │ ├── UserInterfaceState.xcuserstate
│ │ │ └── xcdebugger/
│ │ │ └── Breakpoints_v2.xcbkptlist
│ │ └── jewelz.xcuserdatad/
│ │ └── UserInterfaceState.xcuserstate
│ ├── HUPhotoBrowser DemoTests/
│ │ ├── HUPhotoBrowser_DemoTests.m
│ │ └── Info.plist
│ ├── Podfile
│ └── Pods/
│ ├── HUPhotoPicker/
│ │ ├── HUPhotoPicker/
│ │ │ ├── Assets/
│ │ │ │ └── HUAlbumCell.xib
│ │ │ └── Classes/
│ │ │ ├── Asset.h
│ │ │ ├── HUAlbumCell.h
│ │ │ ├── HUAlbumCell.m
│ │ │ ├── HUAlbumTableViewController.h
│ │ │ ├── HUAlbumTableViewController.m
│ │ │ ├── HUImageGridCell.h
│ │ │ ├── HUImageGridCell.m
│ │ │ ├── HUImageGridViewController.h
│ │ │ ├── HUImageGridViewController.m
│ │ │ ├── HUImagePickerViewController.h
│ │ │ ├── HUImagePickerViewController.m
│ │ │ ├── HUImageSelectModel.h
│ │ │ ├── HUImageSelectModel.m
│ │ │ ├── HUNavTitleView.h
│ │ │ ├── HUNavTitleView.m
│ │ │ ├── HUPHAuthorizationNotDeterminedView.h
│ │ │ ├── HUPHAuthorizationNotDeterminedView.m
│ │ │ ├── HUPHAuthorizationNotDeterminedViewController.h
│ │ │ ├── HUPHAuthorizationNotDeterminedViewController.m
│ │ │ ├── HUPhotoAlbum.h
│ │ │ ├── HUPhotoAlbum.m
│ │ │ ├── HUPhotoManager.h
│ │ │ ├── HUPhotoManager.m
│ │ │ ├── HUPhotoPicker.h
│ │ │ ├── HUTakePhotoCell.h
│ │ │ ├── HUTakePhotoCell.m
│ │ │ ├── HUToast.h
│ │ │ ├── HUToast.m
│ │ │ ├── NSBundle+HUPicker.h
│ │ │ ├── NSBundle+HUPicker.m
│ │ │ ├── UIBarButtonItem+HUButton.h
│ │ │ ├── UIBarButtonItem+HUButton.m
│ │ │ ├── UIView+HUConstraint.h
│ │ │ └── UIView+HUConstraint.m
│ │ ├── LICENSE
│ │ └── README.md
│ ├── Local Podspecs/
│ │ └── HUPhotoBrowser.podspec.json
│ ├── Pods.xcodeproj/
│ │ ├── project.pbxproj
│ │ └── xcuserdata/
│ │ ├── huluobo.xcuserdatad/
│ │ │ └── xcschemes/
│ │ │ ├── HUPhotoBrowser.xcscheme
│ │ │ ├── HUPhotoPicker-HUPhotoPicker.xcscheme
│ │ │ ├── HUPhotoPicker.xcscheme
│ │ │ ├── Pods-HUPhotoBrowser Demo.xcscheme
│ │ │ ├── Pods-HUPhotoBrowser DemoTests.xcscheme
│ │ │ ├── SDWebImage.xcscheme
│ │ │ ├── SVProgressHUD.xcscheme
│ │ │ └── xcschememanagement.plist
│ │ └── jewelz.xcuserdatad/
│ │ └── xcschemes/
│ │ ├── HUPhotoBrowser.xcscheme
│ │ ├── HUPhotoPicker-HUPhotoPicker.xcscheme
│ │ ├── HUPhotoPicker.xcscheme
│ │ ├── Pods-HUPhotoBrowser Demo.xcscheme
│ │ ├── Pods-HUPhotoBrowser DemoTests.xcscheme
│ │ ├── SDWebImage.xcscheme
│ │ └── xcschememanagement.plist
│ ├── SDWebImage/
│ │ ├── LICENSE
│ │ ├── README.md
│ │ └── SDWebImage/
│ │ ├── NSData+ImageContentType.h
│ │ ├── NSData+ImageContentType.m
│ │ ├── NSImage+WebCache.h
│ │ ├── NSImage+WebCache.m
│ │ ├── SDImageCache.h
│ │ ├── SDImageCache.m
│ │ ├── SDImageCacheConfig.h
│ │ ├── SDImageCacheConfig.m
│ │ ├── SDWebImageCompat.h
│ │ ├── SDWebImageCompat.m
│ │ ├── SDWebImageDecoder.h
│ │ ├── SDWebImageDecoder.m
│ │ ├── SDWebImageDownloader.h
│ │ ├── SDWebImageDownloader.m
│ │ ├── SDWebImageDownloaderOperation.h
│ │ ├── SDWebImageDownloaderOperation.m
│ │ ├── SDWebImageManager.h
│ │ ├── SDWebImageManager.m
│ │ ├── SDWebImageOperation.h
│ │ ├── SDWebImagePrefetcher.h
│ │ ├── SDWebImagePrefetcher.m
│ │ ├── UIButton+WebCache.h
│ │ ├── UIButton+WebCache.m
│ │ ├── UIImage+GIF.h
│ │ ├── UIImage+GIF.m
│ │ ├── UIImage+MultiFormat.h
│ │ ├── UIImage+MultiFormat.m
│ │ ├── UIImageView+HighlightedWebCache.h
│ │ ├── UIImageView+HighlightedWebCache.m
│ │ ├── UIImageView+WebCache.h
│ │ ├── UIImageView+WebCache.m
│ │ ├── UIView+WebCache.h
│ │ ├── UIView+WebCache.m
│ │ ├── UIView+WebCacheOperation.h
│ │ └── UIView+WebCacheOperation.m
│ ├── SVProgressHUD/
│ │ ├── LICENSE.txt
│ │ ├── README.md
│ │ └── SVProgressHUD/
│ │ ├── SVIndefiniteAnimatedView.h
│ │ ├── SVIndefiniteAnimatedView.m
│ │ ├── SVProgressAnimatedView.h
│ │ ├── SVProgressAnimatedView.m
│ │ ├── SVProgressHUD.h
│ │ ├── SVProgressHUD.m
│ │ ├── SVRadialGradientLayer.h
│ │ └── SVRadialGradientLayer.m
│ └── Target Support Files/
│ ├── HUPhotoBrowser/
│ │ ├── HUPhotoBrowser-dummy.m
│ │ ├── HUPhotoBrowser-prefix.pch
│ │ └── HUPhotoBrowser.xcconfig
│ ├── HUPhotoPicker/
│ │ ├── HUPhotoPicker-dummy.m
│ │ ├── HUPhotoPicker-prefix.pch
│ │ ├── HUPhotoPicker.xcconfig
│ │ └── ResourceBundle-HUPhotoPicker-Info.plist
│ ├── Pods-HUPhotoBrowser Demo/
│ │ ├── Pods-HUPhotoBrowser Demo-acknowledgements.markdown
│ │ ├── Pods-HUPhotoBrowser Demo-acknowledgements.plist
│ │ ├── Pods-HUPhotoBrowser Demo-dummy.m
│ │ ├── Pods-HUPhotoBrowser Demo-frameworks.sh
│ │ ├── Pods-HUPhotoBrowser Demo-resources.sh
│ │ ├── Pods-HUPhotoBrowser Demo.debug.xcconfig
│ │ └── Pods-HUPhotoBrowser Demo.release.xcconfig
│ ├── Pods-HUPhotoBrowser DemoTests/
│ │ ├── Pods-HUPhotoBrowser DemoTests-acknowledgements.markdown
│ │ ├── Pods-HUPhotoBrowser DemoTests-acknowledgements.plist
│ │ ├── Pods-HUPhotoBrowser DemoTests-dummy.m
│ │ ├── Pods-HUPhotoBrowser DemoTests-frameworks.sh
│ │ ├── Pods-HUPhotoBrowser DemoTests-resources.sh
│ │ ├── Pods-HUPhotoBrowser DemoTests.debug.xcconfig
│ │ └── Pods-HUPhotoBrowser DemoTests.release.xcconfig
│ ├── SDWebImage/
│ │ ├── SDWebImage-dummy.m
│ │ ├── SDWebImage-prefix.pch
│ │ └── SDWebImage.xcconfig
│ └── SVProgressHUD/
│ ├── SVProgressHUD-dummy.m
│ ├── SVProgressHUD-prefix.pch
│ └── SVProgressHUD.xcconfig
├── HUPhotoBrowser/
│ ├── HUPhotoBrowser.h
│ ├── HUPhotoBrowser.m
│ ├── HUPhotoBrowserCell.h
│ ├── HUPhotoBrowserCell.m
│ ├── HUWebImageDownloader/
│ │ ├── HUWebImage.h
│ │ ├── HUWebImageDownloadOperation.h
│ │ ├── HUWebImageDownloadOperation.m
│ │ ├── HUWebImageDownloader.h
│ │ ├── HUWebImageDownloader.m
│ │ ├── UIImage+HUExtension.h
│ │ ├── UIImage+HUExtension.m
│ │ ├── UIImageView+HUWebImage.h
│ │ └── UIImageView+HUWebImage.m
│ ├── UIView+frame.h
│ ├── UIView+frame.m
│ └── hu_const.h
├── HUPhotoBrowser.a
├── HUPhotoBrowser.podspec
├── HUPhotoBrowser.xcodeproj/
│ ├── project.pbxproj
│ ├── project.xcworkspace/
│ │ ├── contents.xcworkspacedata
│ │ ├── xcshareddata/
│ │ │ └── HUPhotoBrowser.xccheckout
│ │ └── xcuserdata/
│ │ └── jewelz.xcuserdatad/
│ │ └── UserInterfaceState.xcuserstate
│ └── xcuserdata/
│ ├── jewelz.xcuserdatad/
│ │ └── xcschemes/
│ │ ├── HUPhotoBrowser.xcscheme
│ │ └── xcschememanagement.plist
│ └── mac.xcuserdatad/
│ ├── xcdebugger/
│ │ └── Breakpoints_v2.xcbkptlist
│ └── xcschemes/
│ ├── HUPhotoBrowser.xcscheme
│ └── xcschememanagement.plist
├── HUPhotoBrowserTests/
│ └── Info.plist
├── LICENSE
└── README.md
================================================
FILE CONTENTS
================================================
================================================
FILE: .com.apple.timemachine.supported
================================================
================================================
FILE: .swift-version
================================================
2.3
================================================
FILE: Example/HUPhotoBrowser Demo/AppDelegate.h
================================================
//
// AppDelegate.h
// HUPhotoBrowser Demo
//
// Created by mac on 16/2/25.
// Copyright (c) 2016年 hujewelz. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@end
================================================
FILE: Example/HUPhotoBrowser Demo/AppDelegate.m
================================================
//
// AppDelegate.m
// HUPhotoBrowser Demo
//
// Created by mac on 16/2/25.
// Copyright (c) 2016年 hujewelz. All rights reserved.
//
#import "AppDelegate.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
return YES;
}
- (void)applicationWillResignActive:(UIApplication *)application {
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
}
- (void)applicationDidEnterBackground:(UIApplication *)application {
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
// Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}
- (void)applicationWillTerminate:(UIApplication *)application {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}
@end
================================================
FILE: Example/HUPhotoBrowser Demo/Base.lproj/LaunchScreen.xib
================================================
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="6214" systemVersion="14A314h" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6207"/>
<capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<view contentMode="scaleToFill" id="iN0-l3-epB">
<rect key="frame" x="0.0" y="0.0" width="480" height="480"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" Copyright (c) 2016年 hujewelz. All rights reserved." textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="8ie-xW-0ye">
<rect key="frame" x="20" y="439" width="441" height="21"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="HUPhotoBrowser Demo" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="kId-c2-rCX">
<rect key="frame" x="20" y="140" width="441" height="43"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="36"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="kId-c2-rCX" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="bottom" multiplier="1/3" constant="1" id="5cJ-9S-tgC"/>
<constraint firstAttribute="centerX" secondItem="kId-c2-rCX" secondAttribute="centerX" id="Koa-jz-hwk"/>
<constraint firstAttribute="bottom" secondItem="8ie-xW-0ye" secondAttribute="bottom" constant="20" id="Kzo-t9-V3l"/>
<constraint firstItem="8ie-xW-0ye" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="20" symbolic="YES" id="MfP-vx-nX0"/>
<constraint firstAttribute="centerX" secondItem="8ie-xW-0ye" secondAttribute="centerX" id="ZEH-qu-HZ9"/>
<constraint firstItem="kId-c2-rCX" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="20" symbolic="YES" id="fvb-Df-36g"/>
</constraints>
<nil key="simulatedStatusBarMetrics"/>
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
<point key="canvasLocation" x="548" y="455"/>
</view>
</objects>
</document>
================================================
FILE: Example/HUPhotoBrowser Demo/Base.lproj/Main.storyboard
================================================
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12121" systemVersion="16F73" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="0Kq-ws-uy7">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="ufC-wZ-h7g">
<objects>
<viewController id="vXZ-lx-hvc" customClass="ViewController" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="jyV-Pf-zRb"/>
<viewControllerLayoutGuide type="bottom" id="2fi-mo-0CV"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="kh9-bI-dsS">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="prototypes" translatesAutoresizingMaskIntoConstraints="NO" id="mja-x1-3VU">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="10" minimumInteritemSpacing="10" id="9ud-9Q-cIg">
<size key="itemSize" width="150" height="121"/>
<size key="headerReferenceSize" width="0.0" height="0.0"/>
<size key="footerReferenceSize" width="0.0" height="0.0"/>
<inset key="sectionInset" minX="4" minY="0.0" maxX="4" maxY="0.0"/>
</collectionViewFlowLayout>
<cells>
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="PhotoCell" id="EKC-lY-Png" customClass="PhotoCell">
<rect key="frame" x="4" y="0.0" width="150" height="121"/>
<autoresizingMask key="autoresizingMask"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="150" height="121"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="N7d-MV-1Tg">
<rect key="frame" x="0.0" y="0.0" width="150" height="121"/>
<color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
</imageView>
</subviews>
</view>
<constraints>
<constraint firstItem="N7d-MV-1Tg" firstAttribute="leading" secondItem="EKC-lY-Png" secondAttribute="leading" id="1KX-aR-bgb"/>
<constraint firstAttribute="bottom" secondItem="N7d-MV-1Tg" secondAttribute="bottom" id="aEo-j6-ant"/>
<constraint firstItem="N7d-MV-1Tg" firstAttribute="top" secondItem="EKC-lY-Png" secondAttribute="top" id="enU-f3-KkH"/>
<constraint firstAttribute="trailing" secondItem="N7d-MV-1Tg" secondAttribute="trailing" id="fcc-bP-fg0"/>
</constraints>
<connections>
<outlet property="imageView" destination="N7d-MV-1Tg" id="tCt-eq-bhT"/>
</connections>
</collectionViewCell>
</cells>
<connections>
<outlet property="dataSource" destination="vXZ-lx-hvc" id="uH4-jF-oGq"/>
<outlet property="delegate" destination="vXZ-lx-hvc" id="r5u-U3-8dQ"/>
</connections>
</collectionView>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="2fi-mo-0CV" firstAttribute="top" secondItem="mja-x1-3VU" secondAttribute="bottom" id="Trl-qD-iB8"/>
<constraint firstAttribute="trailing" secondItem="mja-x1-3VU" secondAttribute="trailing" id="beY-PA-Jni"/>
<constraint firstItem="mja-x1-3VU" firstAttribute="top" secondItem="kh9-bI-dsS" secondAttribute="top" id="jQD-W8-j2Q"/>
<constraint firstItem="mja-x1-3VU" firstAttribute="leading" secondItem="kh9-bI-dsS" secondAttribute="leading" id="tYB-Op-O1N"/>
</constraints>
</view>
<navigationItem key="navigationItem" id="Du5-I2-Sio">
<barButtonItem key="leftBarButtonItem" systemItem="refresh" id="u3J-Ky-TgA">
<connections>
<action selector="refresh:" destination="vXZ-lx-hvc" id="AjC-ea-HFD"/>
</connections>
</barButtonItem>
<barButtonItem key="rightBarButtonItem" style="plain" systemItem="add" id="ama-th-eHP">
<connections>
<action selector="pickImage:" destination="vXZ-lx-hvc" id="2Oa-7P-H5S"/>
</connections>
</barButtonItem>
</navigationItem>
<connections>
<outlet property="collectionView" destination="mja-x1-3VU" id="XSY-MW-ySi"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="x5A-6p-PRh" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="504" y="338"/>
</scene>
<!--Navigation Controller-->
<scene sceneID="f6U-dq-fiX">
<objects>
<navigationController automaticallyAdjustsScrollViewInsets="NO" id="0Kq-ws-uy7" sceneMemberID="viewController">
<toolbarItems/>
<navigationBar key="navigationBar" contentMode="scaleToFill" id="wCq-WZ-13H">
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
<autoresizingMask key="autoresizingMask"/>
</navigationBar>
<nil name="viewControllers"/>
<connections>
<segue destination="vXZ-lx-hvc" kind="relationship" relationship="rootViewController" id="8bH-ff-cve"/>
</connections>
</navigationController>
<placeholder placeholderIdentifier="IBFirstResponder" id="pOJ-av-TMB" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-206" y="338"/>
</scene>
</scenes>
</document>
================================================
FILE: Example/HUPhotoBrowser Demo/Images.xcassets/AppIcon.appiconset/Contents.json
================================================
{
"images" : [
{
"idiom" : "iphone",
"size" : "29x29",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "29x29",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "40x40",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "40x40",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "60x60",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "60x60",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: Example/HUPhotoBrowser Demo/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>NSPhotoLibraryUsageDescription</key>
<string></string>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
</dict>
</plist>
================================================
FILE: Example/HUPhotoBrowser Demo/PhotoCell.h
================================================
//
// PhotoCell.h
// HUPhotoBrowser Demo
//
// Created by mac on 16/2/25.
// Copyright (c) 2016年 hujewelz. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface PhotoCell : UICollectionViewCell
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@end
================================================
FILE: Example/HUPhotoBrowser Demo/PhotoCell.m
================================================
//
// PhotoCell.m
// HUPhotoBrowser Demo
//
// Created by mac on 16/2/25.
// Copyright (c) 2016年 hujewelz. All rights reserved.
//
#import "PhotoCell.h"
@implementation PhotoCell
@end
================================================
FILE: Example/HUPhotoBrowser Demo/ViewController.h
================================================
//
// ViewController.h
// HUPhotoBrowser Demo
//
// Created by mac on 16/2/25.
// Copyright (c) 2016年 hujewelz. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@end
================================================
FILE: Example/HUPhotoBrowser Demo/ViewController.m
================================================
//
// ViewController.m
// HUPhotoBrowser Demo
//
// Created by mac on 16/2/25.
// Copyright (c) 2016年 hujewelz. All rights reserved.
//
#import "ViewController.h"
#import "PhotoCell.h"
#import "HUPhotoBrowser.h"
#import <UIImageView+WebCache.h>
#import <UIImageView+HUWebImage.h>
#import <HUPhotoPicker/HUPhotoPicker.h>
@interface ViewController ()<UICollectionViewDataSource, UICollectionViewDelegate,UICollectionViewDelegateFlowLayout,HUImagePickerViewControllerDelegate,UINavigationControllerDelegate>
{
BOOL _localImage;
}
@property (weak, nonatomic) IBOutlet UICollectionView *collectionView;
@property (nonatomic, strong) NSArray *images;
@property (nonatomic, strong) NSArray *originalImages;
@property (nonatomic, strong) NSMutableArray *URLStrings;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"HUPhotoBrowser Demo";
_URLStrings = [NSMutableArray array];
// Do any additional setup after loading the view, typically from a nib.
[self getWebImages];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark collection view data source
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
return _localImage ? _images.count : _URLStrings.count;
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
PhotoCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"PhotoCell" forIndexPath:indexPath];
if (_localImage) {
cell.imageView.image = self.images[indexPath.row];
}
else {
[cell.imageView hu_setImageWithURL:[NSURL URLWithString:_URLStrings[indexPath.row]]];
}
return cell;
}
#pragma mark - collection view delegate
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
PhotoCell *cell = (PhotoCell *)[collectionView cellForItemAtIndexPath:indexPath];
if (_localImage) {
[HUPhotoBrowser showFromImageView:cell.imageView withImages:self.originalImages atIndex:indexPath.row];
}
else {
[HUPhotoBrowser showFromImageView:cell.imageView withURLStrings:_URLStrings placeholderImage:[UIImage imageNamed:@"placeholder"] atIndex:indexPath.row dismiss:nil];
}
}
#pragma mark - HUImagePickerViewControllerDelegate
- (void)imagePickerViewController:(HUImagePickerViewController *)imagePickerViewController didFinishPickingImageWithImages:(NSArray<UIImage *> *)images assets:(NSArray<PHAsset *> *)assets {
[self dismissViewControllerAnimated:YES completion:nil];
_images = images;
_originalImages = images;
_localImage = YES;
[self.collectionView reloadData];
}
#pragma mark - IBAction
- (IBAction)pickImage:(id)sender {
HUImagePickerViewController *picker = [[HUImagePickerViewController alloc] init];
picker.delegate = self;
[self presentViewController:picker animated:YES completion:nil];
}
- (IBAction)refresh:(id)sender {
[self getWebImages];
_localImage = NO;
[self.collectionView reloadData];
}
#pragma mark - private
- (void)getWebImages {
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration];
NSURL *url = [NSURL URLWithString:@"https://pixabay.com/api/?key=4572819-33c1e1dcbac7521c915689a81&&image_type=photo"];
NSURLRequest *repuest = [NSURLRequest requestWithURL:url];
NSURLSessionDataTask *task = [session dataTaskWithRequest:repuest completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
NSDictionary *result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
NSMutableArray *urlS = [NSMutableArray array];
for (NSDictionary *dict in result[@"hits"]) {
NSString *linkurl = dict[@"webformatURL"];
[urlS addObject:linkurl];
}
_URLStrings = urlS;
dispatch_async(dispatch_get_main_queue(), ^{
[self.collectionView reloadData];
});
}];
[task resume];
}
@end
================================================
FILE: Example/HUPhotoBrowser Demo/main.m
================================================
//
// main.m
// HUPhotoBrowser Demo
//
// Created by mac on 16/2/25.
// Copyright (c) 2016年 hujewelz. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main(int argc, char * argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
================================================
FILE: Example/HUPhotoBrowser Demo.xcodeproj/project.pbxproj
================================================
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
040623A31C7E9989005653C1 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 040623A21C7E9989005653C1 /* main.m */; };
040623A61C7E9989005653C1 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 040623A51C7E9989005653C1 /* AppDelegate.m */; };
040623A91C7E9989005653C1 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 040623A81C7E9989005653C1 /* ViewController.m */; };
040623AC1C7E9989005653C1 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 040623AA1C7E9989005653C1 /* Main.storyboard */; };
040623AE1C7E9989005653C1 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 040623AD1C7E9989005653C1 /* Images.xcassets */; };
040623B11C7E9989005653C1 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 040623AF1C7E9989005653C1 /* LaunchScreen.xib */; };
040623BD1C7E9989005653C1 /* HUPhotoBrowser_DemoTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 040623BC1C7E9989005653C1 /* HUPhotoBrowser_DemoTests.m */; };
040624021C7E9BB6005653C1 /* PhotoCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 040624011C7E9BB6005653C1 /* PhotoCell.m */; };
044D06501CD34623005BDFF2 /* placeholder.png in Resources */ = {isa = PBXBuildFile; fileRef = 044D064F1CD34623005BDFF2 /* placeholder.png */; };
BAE6B9A9C28D8D7FBAFBD61F /* libPods-HUPhotoBrowser DemoTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FB702EF6466173C9049EA4E3 /* libPods-HUPhotoBrowser DemoTests.a */; };
C2CE112E20AE7956006DEB06 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = C2CE112B20AE7956006DEB06 /* README.md */; };
C2CE112F20AE7956006DEB06 /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = C2CE112C20AE7956006DEB06 /* LICENSE */; };
C2CE113020AE7956006DEB06 /* HUPhotoBrowser.podspec in Resources */ = {isa = PBXBuildFile; fileRef = C2CE112D20AE7956006DEB06 /* HUPhotoBrowser.podspec */; };
F5D16FEE5AB714F5360AD713 /* libPods-HUPhotoBrowser Demo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0B3405AA6738D3B753050B7C /* libPods-HUPhotoBrowser Demo.a */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
040623B71C7E9989005653C1 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 040623951C7E9989005653C1 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 0406239C1C7E9989005653C1;
remoteInfo = "HUPhotoBrowser Demo";
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
0406239D1C7E9989005653C1 /* HUPhotoBrowser Demo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "HUPhotoBrowser Demo.app"; sourceTree = BUILT_PRODUCTS_DIR; };
040623A11C7E9989005653C1 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
040623A21C7E9989005653C1 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
040623A41C7E9989005653C1 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
040623A51C7E9989005653C1 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
040623A71C7E9989005653C1 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
040623A81C7E9989005653C1 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; };
040623AB1C7E9989005653C1 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
040623AD1C7E9989005653C1 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
040623B01C7E9989005653C1 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = "<group>"; };
040623B61C7E9989005653C1 /* HUPhotoBrowser DemoTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "HUPhotoBrowser DemoTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
040623BB1C7E9989005653C1 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
040623BC1C7E9989005653C1 /* HUPhotoBrowser_DemoTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HUPhotoBrowser_DemoTests.m; sourceTree = "<group>"; };
040624001C7E9BB6005653C1 /* PhotoCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PhotoCell.h; sourceTree = "<group>"; };
040624011C7E9BB6005653C1 /* PhotoCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PhotoCell.m; sourceTree = "<group>"; };
044D064F1CD34623005BDFF2 /* placeholder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = placeholder.png; sourceTree = "<group>"; };
0B3405AA6738D3B753050B7C /* libPods-HUPhotoBrowser Demo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-HUPhotoBrowser Demo.a"; sourceTree = BUILT_PRODUCTS_DIR; };
3F903672B8A30024BEB85314 /* Pods-HUPhotoBrowser Demo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HUPhotoBrowser Demo.release.xcconfig"; path = "Pods/Target Support Files/Pods-HUPhotoBrowser Demo/Pods-HUPhotoBrowser Demo.release.xcconfig"; sourceTree = "<group>"; };
5E779CEE89A1CB6936C03263 /* Pods-HUPhotoBrowser Demo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HUPhotoBrowser Demo.debug.xcconfig"; path = "Pods/Target Support Files/Pods-HUPhotoBrowser Demo/Pods-HUPhotoBrowser Demo.debug.xcconfig"; sourceTree = "<group>"; };
C2CE112B20AE7956006DEB06 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../../README.md; sourceTree = "<group>"; };
C2CE112C20AE7956006DEB06 /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = LICENSE; path = ../../LICENSE; sourceTree = "<group>"; };
C2CE112D20AE7956006DEB06 /* HUPhotoBrowser.podspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = HUPhotoBrowser.podspec; path = ../../HUPhotoBrowser.podspec; sourceTree = "<group>"; };
E46B2F0916D241B35A9BD18C /* Pods-HUPhotoBrowser DemoTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HUPhotoBrowser DemoTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-HUPhotoBrowser DemoTests/Pods-HUPhotoBrowser DemoTests.release.xcconfig"; sourceTree = "<group>"; };
F1491B717433294000E08563 /* Pods-HUPhotoBrowser DemoTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HUPhotoBrowser DemoTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-HUPhotoBrowser DemoTests/Pods-HUPhotoBrowser DemoTests.debug.xcconfig"; sourceTree = "<group>"; };
FB702EF6466173C9049EA4E3 /* libPods-HUPhotoBrowser DemoTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-HUPhotoBrowser DemoTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
0406239A1C7E9989005653C1 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
F5D16FEE5AB714F5360AD713 /* libPods-HUPhotoBrowser Demo.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
040623B31C7E9989005653C1 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
BAE6B9A9C28D8D7FBAFBD61F /* libPods-HUPhotoBrowser DemoTests.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
040623941C7E9989005653C1 = {
isa = PBXGroup;
children = (
C2CE112A20AE7939006DEB06 /* Podspec Metadata */,
0406239F1C7E9989005653C1 /* HUPhotoBrowser Demo */,
040623B91C7E9989005653C1 /* HUPhotoBrowser DemoTests */,
0406239E1C7E9989005653C1 /* Products */,
AFAAEBF96020AD44718B49B4 /* Pods */,
FAC6D30897335D2BCBFDD90B /* Frameworks */,
);
sourceTree = "<group>";
};
0406239E1C7E9989005653C1 /* Products */ = {
isa = PBXGroup;
children = (
0406239D1C7E9989005653C1 /* HUPhotoBrowser Demo.app */,
040623B61C7E9989005653C1 /* HUPhotoBrowser DemoTests.xctest */,
);
name = Products;
sourceTree = "<group>";
};
0406239F1C7E9989005653C1 /* HUPhotoBrowser Demo */ = {
isa = PBXGroup;
children = (
040623A41C7E9989005653C1 /* AppDelegate.h */,
040623A51C7E9989005653C1 /* AppDelegate.m */,
040623A71C7E9989005653C1 /* ViewController.h */,
040623A81C7E9989005653C1 /* ViewController.m */,
040624001C7E9BB6005653C1 /* PhotoCell.h */,
040624011C7E9BB6005653C1 /* PhotoCell.m */,
040623AA1C7E9989005653C1 /* Main.storyboard */,
040623AD1C7E9989005653C1 /* Images.xcassets */,
040623AF1C7E9989005653C1 /* LaunchScreen.xib */,
040623A01C7E9989005653C1 /* Supporting Files */,
);
path = "HUPhotoBrowser Demo";
sourceTree = "<group>";
};
040623A01C7E9989005653C1 /* Supporting Files */ = {
isa = PBXGroup;
children = (
044D064F1CD34623005BDFF2 /* placeholder.png */,
040623A11C7E9989005653C1 /* Info.plist */,
040623A21C7E9989005653C1 /* main.m */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
040623B91C7E9989005653C1 /* HUPhotoBrowser DemoTests */ = {
isa = PBXGroup;
children = (
040623BC1C7E9989005653C1 /* HUPhotoBrowser_DemoTests.m */,
040623BA1C7E9989005653C1 /* Supporting Files */,
);
path = "HUPhotoBrowser DemoTests";
sourceTree = "<group>";
};
040623BA1C7E9989005653C1 /* Supporting Files */ = {
isa = PBXGroup;
children = (
040623BB1C7E9989005653C1 /* Info.plist */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
AFAAEBF96020AD44718B49B4 /* Pods */ = {
isa = PBXGroup;
children = (
5E779CEE89A1CB6936C03263 /* Pods-HUPhotoBrowser Demo.debug.xcconfig */,
3F903672B8A30024BEB85314 /* Pods-HUPhotoBrowser Demo.release.xcconfig */,
F1491B717433294000E08563 /* Pods-HUPhotoBrowser DemoTests.debug.xcconfig */,
E46B2F0916D241B35A9BD18C /* Pods-HUPhotoBrowser DemoTests.release.xcconfig */,
);
name = Pods;
sourceTree = "<group>";
};
C2CE112A20AE7939006DEB06 /* Podspec Metadata */ = {
isa = PBXGroup;
children = (
C2CE112D20AE7956006DEB06 /* HUPhotoBrowser.podspec */,
C2CE112C20AE7956006DEB06 /* LICENSE */,
C2CE112B20AE7956006DEB06 /* README.md */,
);
path = "Podspec Metadata";
sourceTree = "<group>";
};
FAC6D30897335D2BCBFDD90B /* Frameworks */ = {
isa = PBXGroup;
children = (
0B3405AA6738D3B753050B7C /* libPods-HUPhotoBrowser Demo.a */,
FB702EF6466173C9049EA4E3 /* libPods-HUPhotoBrowser DemoTests.a */,
);
name = Frameworks;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
0406239C1C7E9989005653C1 /* HUPhotoBrowser Demo */ = {
isa = PBXNativeTarget;
buildConfigurationList = 040623C01C7E9989005653C1 /* Build configuration list for PBXNativeTarget "HUPhotoBrowser Demo" */;
buildPhases = (
A962A2954A15437EEDEDD01C /* [CP] Check Pods Manifest.lock */,
040623991C7E9989005653C1 /* Sources */,
0406239A1C7E9989005653C1 /* Frameworks */,
0406239B1C7E9989005653C1 /* Resources */,
B0E9B81CB19068F4E9174942 /* [CP] Embed Pods Frameworks */,
97981A438D22C17C60DAD2EE /* [CP] Copy Pods Resources */,
);
buildRules = (
);
dependencies = (
);
name = "HUPhotoBrowser Demo";
productName = "HUPhotoBrowser Demo";
productReference = 0406239D1C7E9989005653C1 /* HUPhotoBrowser Demo.app */;
productType = "com.apple.product-type.application";
};
040623B51C7E9989005653C1 /* HUPhotoBrowser DemoTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 040623C31C7E9989005653C1 /* Build configuration list for PBXNativeTarget "HUPhotoBrowser DemoTests" */;
buildPhases = (
E0F2C44E94EA75AA6F5357CA /* [CP] Check Pods Manifest.lock */,
040623B21C7E9989005653C1 /* Sources */,
040623B31C7E9989005653C1 /* Frameworks */,
040623B41C7E9989005653C1 /* Resources */,
65F7F3B05B67ECD82A8D70B0 /* [CP] Embed Pods Frameworks */,
4267A09C64DAB8DB54D72BE0 /* [CP] Copy Pods Resources */,
);
buildRules = (
);
dependencies = (
040623B81C7E9989005653C1 /* PBXTargetDependency */,
);
name = "HUPhotoBrowser DemoTests";
productName = "HUPhotoBrowser DemoTests";
productReference = 040623B61C7E9989005653C1 /* HUPhotoBrowser DemoTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
040623951C7E9989005653C1 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0730;
ORGANIZATIONNAME = hujewelz;
TargetAttributes = {
0406239C1C7E9989005653C1 = {
CreatedOnToolsVersion = 6.4;
DevelopmentTeam = 6E4KPH54E6;
};
040623B51C7E9989005653C1 = {
CreatedOnToolsVersion = 6.4;
TestTargetID = 0406239C1C7E9989005653C1;
};
};
};
buildConfigurationList = 040623981C7E9989005653C1 /* Build configuration list for PBXProject "HUPhotoBrowser Demo" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 040623941C7E9989005653C1;
productRefGroup = 0406239E1C7E9989005653C1 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
0406239C1C7E9989005653C1 /* HUPhotoBrowser Demo */,
040623B51C7E9989005653C1 /* HUPhotoBrowser DemoTests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
0406239B1C7E9989005653C1 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
C2CE113020AE7956006DEB06 /* HUPhotoBrowser.podspec in Resources */,
C2CE112F20AE7956006DEB06 /* LICENSE in Resources */,
044D06501CD34623005BDFF2 /* placeholder.png in Resources */,
040623AC1C7E9989005653C1 /* Main.storyboard in Resources */,
C2CE112E20AE7956006DEB06 /* README.md in Resources */,
040623B11C7E9989005653C1 /* LaunchScreen.xib in Resources */,
040623AE1C7E9989005653C1 /* Images.xcassets in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
040623B41C7E9989005653C1 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
4267A09C64DAB8DB54D72BE0 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "[CP] Copy Pods Resources";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-HUPhotoBrowser DemoTests/Pods-HUPhotoBrowser DemoTests-resources.sh\"\n";
showEnvVarsInLog = 0;
};
65F7F3B05B67ECD82A8D70B0 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-HUPhotoBrowser DemoTests/Pods-HUPhotoBrowser DemoTests-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
97981A438D22C17C60DAD2EE /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${SRCROOT}/Pods/Target Support Files/Pods-HUPhotoBrowser Demo/Pods-HUPhotoBrowser Demo-resources.sh",
$PODS_CONFIGURATION_BUILD_DIR/HUPhotoPicker/HUPhotoPicker.bundle,
"${PODS_ROOT}/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle",
);
name = "[CP] Copy Pods Resources";
outputPaths = (
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-HUPhotoBrowser Demo/Pods-HUPhotoBrowser Demo-resources.sh\"\n";
showEnvVarsInLog = 0;
};
A962A2954A15437EEDEDD01C /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-HUPhotoBrowser Demo-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
B0E9B81CB19068F4E9174942 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-HUPhotoBrowser Demo/Pods-HUPhotoBrowser Demo-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
E0F2C44E94EA75AA6F5357CA /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-HUPhotoBrowser DemoTests-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
040623991C7E9989005653C1 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
040624021C7E9BB6005653C1 /* PhotoCell.m in Sources */,
040623A91C7E9989005653C1 /* ViewController.m in Sources */,
040623A61C7E9989005653C1 /* AppDelegate.m in Sources */,
040623A31C7E9989005653C1 /* main.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
040623B21C7E9989005653C1 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
040623BD1C7E9989005653C1 /* HUPhotoBrowser_DemoTests.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
040623B81C7E9989005653C1 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 0406239C1C7E9989005653C1 /* HUPhotoBrowser Demo */;
targetProxy = 040623B71C7E9989005653C1 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
040623AA1C7E9989005653C1 /* Main.storyboard */ = {
isa = PBXVariantGroup;
children = (
040623AB1C7E9989005653C1 /* Base */,
);
name = Main.storyboard;
sourceTree = "<group>";
};
040623AF1C7E9989005653C1 /* LaunchScreen.xib */ = {
isa = PBXVariantGroup;
children = (
040623B01C7E9989005653C1 /* Base */,
);
name = LaunchScreen.xib;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
040623BE1C7E9989005653C1 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 8.4;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
};
name = Debug;
};
040623BF1C7E9989005653C1 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 8.4;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
VALIDATE_PRODUCT = YES;
};
name = Release;
};
040623C11C7E9989005653C1 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 5E779CEE89A1CB6936C03263 /* Pods-HUPhotoBrowser Demo.debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
DEVELOPMENT_TEAM = 6E4KPH54E6;
INFOPLIST_FILE = "HUPhotoBrowser Demo/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "com.hujewelz.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE = "";
};
name = Debug;
};
040623C21C7E9989005653C1 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 3F903672B8A30024BEB85314 /* Pods-HUPhotoBrowser Demo.release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
DEVELOPMENT_TEAM = 6E4KPH54E6;
INFOPLIST_FILE = "HUPhotoBrowser Demo/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "com.hujewelz.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE = "";
};
name = Release;
};
040623C41C7E9989005653C1 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = F1491B717433294000E08563 /* Pods-HUPhotoBrowser DemoTests.debug.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
FRAMEWORK_SEARCH_PATHS = (
"$(SDKROOT)/Developer/Library/Frameworks",
"$(inherited)",
);
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
INFOPLIST_FILE = "HUPhotoBrowser DemoTests/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "com.hujewelz.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/HUPhotoBrowser Demo.app/HUPhotoBrowser Demo";
};
name = Debug;
};
040623C51C7E9989005653C1 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = E46B2F0916D241B35A9BD18C /* Pods-HUPhotoBrowser DemoTests.release.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
FRAMEWORK_SEARCH_PATHS = (
"$(SDKROOT)/Developer/Library/Frameworks",
"$(inherited)",
);
INFOPLIST_FILE = "HUPhotoBrowser DemoTests/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "com.hujewelz.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/HUPhotoBrowser Demo.app/HUPhotoBrowser Demo";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
040623981C7E9989005653C1 /* Build configuration list for PBXProject "HUPhotoBrowser Demo" */ = {
isa = XCConfigurationList;
buildConfigurations = (
040623BE1C7E9989005653C1 /* Debug */,
040623BF1C7E9989005653C1 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
040623C01C7E9989005653C1 /* Build configuration list for PBXNativeTarget "HUPhotoBrowser Demo" */ = {
isa = XCConfigurationList;
buildConfigurations = (
040623C11C7E9989005653C1 /* Debug */,
040623C21C7E9989005653C1 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
040623C31C7E9989005653C1 /* Build configuration list for PBXNativeTarget "HUPhotoBrowser DemoTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
040623C41C7E9989005653C1 /* Debug */,
040623C51C7E9989005653C1 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 040623951C7E9989005653C1 /* Project object */;
}
================================================
FILE: Example/HUPhotoBrowser Demo.xcodeproj/project.xcworkspace/contents.xcworkspacedata
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:HUPhotoBrowser Demo.xcodeproj">
</FileRef>
</Workspace>
================================================
FILE: Example/HUPhotoBrowser Demo.xcodeproj/project.xcworkspace/xcshareddata/HUPhotoBrowser Demo.xccheckout
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDESourceControlProjectFavoriteDictionaryKey</key>
<false/>
<key>IDESourceControlProjectIdentifier</key>
<string>CE29FB11-1DFE-4499-9106-1E1B43F85B28</string>
<key>IDESourceControlProjectName</key>
<string>HUPhotoBrowser Demo</string>
<key>IDESourceControlProjectOriginsDictionary</key>
<dict>
<key>3E54BB6501640F2F1E4E23A6F020501F2858AB48</key>
<string>https://github.com/hujewelz/HUPhotoBrowser.git</string>
</dict>
<key>IDESourceControlProjectPath</key>
<string>Example/HUPhotoBrowser Demo.xcodeproj</string>
<key>IDESourceControlProjectRelativeInstallPathDictionary</key>
<dict>
<key>3E54BB6501640F2F1E4E23A6F020501F2858AB48</key>
<string>../../..</string>
</dict>
<key>IDESourceControlProjectURL</key>
<string>https://github.com/hujewelz/HUPhotoBrowser.git</string>
<key>IDESourceControlProjectVersion</key>
<integer>111</integer>
<key>IDESourceControlProjectWCCIdentifier</key>
<string>3E54BB6501640F2F1E4E23A6F020501F2858AB48</string>
<key>IDESourceControlProjectWCConfigurations</key>
<array>
<dict>
<key>IDESourceControlRepositoryExtensionIdentifierKey</key>
<string>public.vcs.git</string>
<key>IDESourceControlWCCIdentifierKey</key>
<string>3E54BB6501640F2F1E4E23A6F020501F2858AB48</string>
<key>IDESourceControlWCCName</key>
<string>HUPhotoBrowser</string>
</dict>
</array>
</dict>
</plist>
================================================
FILE: Example/HUPhotoBrowser Demo.xcodeproj/xcuserdata/huluobo.xcuserdatad/xcschemes/xcschememanagement.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SchemeUserState</key>
<dict>
<key>HUPhotoBrowser Demo.xcscheme</key>
<dict>
<key>orderHint</key>
<integer>7</integer>
</dict>
</dict>
</dict>
</plist>
================================================
FILE: Example/HUPhotoBrowser Demo.xcodeproj/xcuserdata/jewelz.xcuserdatad/xcschemes/HUPhotoBrowser Demo.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0730"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "0406239C1C7E9989005653C1"
BuildableName = "HUPhotoBrowser Demo.app"
BlueprintName = "HUPhotoBrowser Demo"
ReferencedContainer = "container:HUPhotoBrowser Demo.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "NO"
buildForArchiving = "NO"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "040623B51C7E9989005653C1"
BuildableName = "HUPhotoBrowser DemoTests.xctest"
BlueprintName = "HUPhotoBrowser DemoTests"
ReferencedContainer = "container:HUPhotoBrowser Demo.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "040623B51C7E9989005653C1"
BuildableName = "HUPhotoBrowser DemoTests.xctest"
BlueprintName = "HUPhotoBrowser DemoTests"
ReferencedContainer = "container:HUPhotoBrowser Demo.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "0406239C1C7E9989005653C1"
BuildableName = "HUPhotoBrowser Demo.app"
BlueprintName = "HUPhotoBrowser Demo"
ReferencedContainer = "container:HUPhotoBrowser Demo.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "0406239C1C7E9989005653C1"
BuildableName = "HUPhotoBrowser Demo.app"
BlueprintName = "HUPhotoBrowser Demo"
ReferencedContainer = "container:HUPhotoBrowser Demo.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "0406239C1C7E9989005653C1"
BuildableName = "HUPhotoBrowser Demo.app"
BlueprintName = "HUPhotoBrowser Demo"
ReferencedContainer = "container:HUPhotoBrowser Demo.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: Example/HUPhotoBrowser Demo.xcodeproj/xcuserdata/jewelz.xcuserdatad/xcschemes/xcschememanagement.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SchemeUserState</key>
<dict>
<key>HUPhotoBrowser Demo.xcscheme</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>0406239C1C7E9989005653C1</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>040623B51C7E9989005653C1</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict>
</dict>
</plist>
================================================
FILE: Example/HUPhotoBrowser Demo.xcodeproj/xcuserdata/mac.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Bucket
type = "1"
version = "2.0">
<Breakpoints>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "HUPhotoBrowser Demo/HUPhotoBrowser/HUPhotoBrowser.m"
timestampString = "478142202.352438"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "31"
endingLineNumber = "31"
landmarkName = "-dealloc"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
</Breakpoints>
</Bucket>
================================================
FILE: Example/HUPhotoBrowser Demo.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/HUPhotoBrowser Demo.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0640"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "0406239C1C7E9989005653C1"
BuildableName = "HUPhotoBrowser Demo.app"
BlueprintName = "HUPhotoBrowser Demo"
ReferencedContainer = "container:HUPhotoBrowser Demo.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "NO"
buildForArchiving = "NO"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "040623B51C7E9989005653C1"
BuildableName = "HUPhotoBrowser DemoTests.xctest"
BlueprintName = "HUPhotoBrowser DemoTests"
ReferencedContainer = "container:HUPhotoBrowser Demo.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "040623B51C7E9989005653C1"
BuildableName = "HUPhotoBrowser DemoTests.xctest"
BlueprintName = "HUPhotoBrowser DemoTests"
ReferencedContainer = "container:HUPhotoBrowser Demo.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "0406239C1C7E9989005653C1"
BuildableName = "HUPhotoBrowser Demo.app"
BlueprintName = "HUPhotoBrowser Demo"
ReferencedContainer = "container:HUPhotoBrowser Demo.xcodeproj">
</BuildableReference>
</MacroExpansion>
</TestAction>
<LaunchAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
buildConfiguration = "Debug"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "0406239C1C7E9989005653C1"
BuildableName = "HUPhotoBrowser Demo.app"
BlueprintName = "HUPhotoBrowser Demo"
ReferencedContainer = "container:HUPhotoBrowser Demo.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
buildConfiguration = "Release"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "0406239C1C7E9989005653C1"
BuildableName = "HUPhotoBrowser Demo.app"
BlueprintName = "HUPhotoBrowser Demo"
ReferencedContainer = "container:HUPhotoBrowser Demo.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: Example/HUPhotoBrowser Demo.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/xcschememanagement.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SchemeUserState</key>
<dict>
<key>HUPhotoBrowser Demo.xcscheme</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>0406239C1C7E9989005653C1</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>040623B51C7E9989005653C1</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict>
</dict>
</plist>
================================================
FILE: Example/HUPhotoBrowser Demo.xcworkspace/contents.xcworkspacedata
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:HUPhotoBrowser Demo.xcodeproj">
</FileRef>
<FileRef
location = "group:Pods/Pods.xcodeproj">
</FileRef>
</Workspace>
================================================
FILE: Example/HUPhotoBrowser Demo.xcworkspace/xcshareddata/HUPhotoBrowser Demo.xccheckout
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDESourceControlProjectFavoriteDictionaryKey</key>
<false/>
<key>IDESourceControlProjectIdentifier</key>
<string>06162301-A6AF-43BC-A098-A5C0AEEEF86B</string>
<key>IDESourceControlProjectName</key>
<string>HUPhotoBrowser Demo</string>
<key>IDESourceControlProjectOriginsDictionary</key>
<dict>
<key>3E54BB6501640F2F1E4E23A6F020501F2858AB48</key>
<string>https://github.com/hujewelz/HUPhotoBrowser.git</string>
</dict>
<key>IDESourceControlProjectPath</key>
<string>Example/HUPhotoBrowser Demo.xcworkspace</string>
<key>IDESourceControlProjectRelativeInstallPathDictionary</key>
<dict>
<key>3E54BB6501640F2F1E4E23A6F020501F2858AB48</key>
<string>../..</string>
</dict>
<key>IDESourceControlProjectURL</key>
<string>https://github.com/hujewelz/HUPhotoBrowser.git</string>
<key>IDESourceControlProjectVersion</key>
<integer>111</integer>
<key>IDESourceControlProjectWCCIdentifier</key>
<string>3E54BB6501640F2F1E4E23A6F020501F2858AB48</string>
<key>IDESourceControlProjectWCConfigurations</key>
<array>
<dict>
<key>IDESourceControlRepositoryExtensionIdentifierKey</key>
<string>public.vcs.git</string>
<key>IDESourceControlWCCIdentifierKey</key>
<string>3E54BB6501640F2F1E4E23A6F020501F2858AB48</string>
<key>IDESourceControlWCCName</key>
<string>HUPhotoBrowser</string>
</dict>
</array>
</dict>
</plist>
================================================
FILE: Example/HUPhotoBrowser Demo.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>
================================================
FILE: Example/HUPhotoBrowser Demo.xcworkspace/xcuserdata/huluobo.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Bucket
type = "0"
version = "2.0">
</Bucket>
================================================
FILE: Example/HUPhotoBrowser DemoTests/HUPhotoBrowser_DemoTests.m
================================================
//
// HUPhotoBrowser_DemoTests.m
// HUPhotoBrowser DemoTests
//
// Created by mac on 16/2/25.
// Copyright (c) 2016年 hujewelz. All rights reserved.
//
#import <UIKit/UIKit.h>
#import <XCTest/XCTest.h>
@interface HUPhotoBrowser_DemoTests : XCTestCase
@end
@implementation HUPhotoBrowser_DemoTests
- (void)setUp {
[super setUp];
// Put setup code here. This method is called before the invocation of each test method in the class.
}
- (void)tearDown {
// Put teardown code here. This method is called after the invocation of each test method in the class.
[super tearDown];
}
- (void)testExample {
// This is an example of a functional test case.
XCTAssert(YES, @"Pass");
}
- (void)testPerformanceExample {
// This is an example of a performance test case.
[self measureBlock:^{
// Put the code you want to measure the time of here.
}];
}
@end
================================================
FILE: Example/HUPhotoBrowser DemoTests/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>
================================================
FILE: Example/Podfile
================================================
# Uncomment this line to define a global platform for your project
platform :ios, '8.0'
# Uncomment this line if you're using Swift
# use_frameworks!
target 'HUPhotoBrowser Demo' do
pod 'HUPhotoBrowser', :path => '../'
pod 'SDWebImage'
pod 'HUPhotoPicker', '~> 1.0.3'
end
target 'HUPhotoBrowser DemoTests' do
end
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Assets/HUAlbumCell.xib
================================================
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="12121" systemVersion="16F73" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" rowHeight="88" id="KGk-i7-Jjw" customClass="HUAlbumCell">
<rect key="frame" x="0.0" y="0.0" width="368" height="88"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
<rect key="frame" x="0.0" y="0.0" width="368" height="88"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="2WO-xF-Kx5">
<rect key="frame" x="14" y="14" width="60" height="60"/>
<color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
<constraints>
<constraint firstAttribute="width" constant="60" id="BgW-0x-Gj5"/>
<constraint firstAttribute="height" constant="60" id="QNg-iL-ogm"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Rkk-Yp-vqT">
<rect key="frame" x="82" y="14" width="38" height="18"/>
<fontDescription key="fontDescription" type="system" pointSize="15"/>
<color key="textColor" red="0.1999788582" green="0.20001345870000001" blue="0.1999712884" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2nc-dY-mfx">
<rect key="frame" x="82" y="58" width="33" height="16"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<color key="textColor" red="0.86666666670000003" green="0.8862745098" blue="0.92156862750000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<constraints>
<constraint firstItem="2nc-dY-mfx" firstAttribute="leading" secondItem="Rkk-Yp-vqT" secondAttribute="leading" id="Y4g-65-pqY"/>
<constraint firstItem="Rkk-Yp-vqT" firstAttribute="top" secondItem="2WO-xF-Kx5" secondAttribute="top" id="ZaK-NC-prn"/>
<constraint firstItem="2WO-xF-Kx5" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="14" id="cYJ-7r-2sh"/>
<constraint firstItem="2nc-dY-mfx" firstAttribute="bottom" secondItem="2WO-xF-Kx5" secondAttribute="bottom" id="eQi-vl-p9m"/>
<constraint firstItem="2WO-xF-Kx5" firstAttribute="centerY" secondItem="H2p-sc-9uM" secondAttribute="centerY" id="hv8-3G-LC1"/>
<constraint firstItem="Rkk-Yp-vqT" firstAttribute="leading" secondItem="2WO-xF-Kx5" secondAttribute="trailing" constant="8" id="yav-Si-NDz"/>
</constraints>
</tableViewCellContentView>
<connections>
<outlet property="album" destination="2WO-xF-Kx5" id="ZQ5-ao-JOR"/>
<outlet property="countLabel" destination="2nc-dY-mfx" id="XWI-be-5Wo"/>
<outlet property="titleLabel" destination="Rkk-Yp-vqT" id="qt7-UW-ePD"/>
</connections>
<point key="canvasLocation" x="58" y="76"/>
</tableViewCell>
</objects>
</document>
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/Asset.h
================================================
//
// Asset.h
// HUPhotoPicker
//
// Created by jewelz on 2017/7/28.
//
#ifndef Asset_h
#define Asset_h
#import "NSBundle+HUPicker.h"
#define UIFontBoldMake(size) [UIFont boldSystemFontOfSize:(size)]
#define UIFontMake(size) [UIFont systemFontOfSize:(size)]
#define UIColorMake(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1]
#define UIImageMake(named) [NSBundle hu_imageNamed:(named)]
#endif /* Asset_h */
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUAlbumCell.h
================================================
//
// BAAlbumCell.h
// beautyAssistant
//
// Created by jewelz on 2017/6/26.
// Copyright © 2017年 Service+. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface HUAlbumCell : UITableViewCell
+ (UINib *)nib;
+ (NSString *)reuseIdentifier;
@property (weak, nonatomic) IBOutlet UIImageView *album;
@property (weak, nonatomic) IBOutlet UILabel *titleLabel;
@property (weak, nonatomic) IBOutlet UILabel *countLabel;
@end
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUAlbumCell.m
================================================
//
// BAAlbumCell.m
// beautyAssistant
//
// Created by jewelz on 2017/6/26.
// Copyright © 2017年 Service+. All rights reserved.
//
#import "HUAlbumCell.h"
#import "NSBundle+HUPicker.h"
#import "NSBundle+HUPicker.h"
@implementation HUAlbumCell
+ (UINib *)nib {
// NSBundle *podBundle = [NSBundle bundleForClass:[self class]];
return [UINib nibWithNibName:@"HUAlbumCell" bundle:[NSBundle hu_bundle]];
}
+ (NSString *)reuseIdentifier {
return @"BAAlbumCell";
}
- (void)awakeFromNib {
[super awakeFromNib];
// Initialization code
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
@end
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUAlbumTableViewController.h
================================================
//
// BAAlbumTableViewController.h
// beautyAssistant
//
// Created by jewelz on 2017/6/22.
// Copyright © 2017年 Service+. All rights reserved.
//
#import <UIKit/UIKit.h>
@class PHFetchResult;
@interface HUAlbumTableViewController : UITableViewController
@property (nonatomic, copy) void (^didSelectedAlbum)(NSString *title, PHFetchResult *fetchResult);
@end
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUAlbumTableViewController.m
================================================
//
// BAAlbumTableViewController.m
// beautyAssistant
//
// Created by jewelz on 2017/6/22.
// Copyright © 2017年 Service+. All rights reserved.
//
#import "HUAlbumTableViewController.h"
#import "HUImageGridViewController.h"
#import <Photos/Photos.h>
#import "HUAlbumCell.h"
#import "HUPhotoAlbum.h"
@interface HUAlbumTableViewController () <PHPhotoLibraryChangeObserver> {
PHFetchResult<PHAssetCollection *> *_smartAlbums;
PHFetchResult<PHCollection *> *_userCollectons;
}
@property (nonatomic, strong) PHFetchResult<PHAsset *> *allPhotos;
//@property (nonatomic, strong) NSArray<PHAssetCollection *> *smartAlbums;
//@property (nonatomic, strong) NSArray<PHCollection *> *userCollectons;
@property (nonatomic, strong) PHCachingImageManager *cachingImageManager;
@property (nonatomic, strong) PHImageRequestOptions *options;
@property (nonatomic, strong) NSArray<HUPhotoAlbum *> *allAlbums;
@end
@implementation HUAlbumTableViewController
- (void)viewDidLoad {
[super viewDidLoad];
PHAuthorizationStatus author = [PHPhotoLibrary authorizationStatus];
if (author == PHAuthorizationStatusNotDetermined) {
// 无权限
[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
if (status == PHAuthorizationStatusAuthorized) {
[self setupData];
return ;
}
[self rightBarItemClicked];
}];
return;
}
if (author == PHAuthorizationStatusRestricted || author == PHAuthorizationStatusDenied) {
[self rightBarItemClicked];
return;
}
[self setupData];
}
- (void)dealloc {
if ([PHPhotoLibrary authorizationStatus] == PHAuthorizationStatusAuthorized) {
[[PHPhotoLibrary sharedPhotoLibrary] unregisterChangeObserver:self];
}
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)rightBarItemClicked {
[self.navigationController dismissViewControllerAnimated:YES completion:nil];
}
#pragma mark - Table view data source
//- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// return 2;
//}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return self.allAlbums.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
PHAsset *asset = nil;
HUAlbumCell *cell = [tableView dequeueReusableCellWithIdentifier:[HUAlbumCell reuseIdentifier] forIndexPath:indexPath];
HUPhotoAlbum *album = self.allAlbums[indexPath.row];
cell.titleLabel.text = album.title;
cell.countLabel.text = [NSString stringWithFormat:@"%zd", album.assetCount];
PHFetchResult *results = [PHAsset fetchAssetsInAssetCollection:album.collection options:nil];
asset = [results firstObject];
[_cachingImageManager requestImageForAsset:asset targetSize:CGSizeMake(120, 120) contentMode:PHImageContentModeDefault options:_options resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {
// NSLog(@"result: %@", result);
cell.album.image = result;
}];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
HUPhotoAlbum *album = self.allAlbums[indexPath.row];
//HUImageGridViewController *vc = [[HUImageGridViewController alloc] init];
PHFetchOptions *options = [PHFetchOptions new];
options.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]];
PHFetchResult *results = [PHAsset fetchAssetsInAssetCollection:album.collection options:options];
// vc.title = album.title;
// vc.fetchResult = results;
// [self.navigationController pushViewController:vc animated:true];
if (_didSelectedAlbum) {
_didSelectedAlbum(album.title, results);
}
}
- (void)photoLibraryDidChange:(PHChange *)changeInstance {
dispatch_sync(dispatch_get_main_queue(), ^{
PHFetchResultChangeDetails *all = [changeInstance changeDetailsForFetchResult:_allPhotos];
PHFetchResultChangeDetails *details = [changeInstance changeDetailsForFetchResult:_smartAlbums];
PHFetchResultChangeDetails *users = [changeInstance changeDetailsForFetchResult:_userCollectons];
if (all) {
_allPhotos = [all fetchResultAfterChanges];
}
if (details) {
_smartAlbums = [details fetchResultAfterChanges];
}
if (users) {
_userCollectons = [users fetchResultAfterChanges];
}
self.allAlbums = [self getPhotoAlbumsFromSmallAlbumsAndUserCollections];
[self.tableView reloadData];
});
}
# pragma mark - Private
- (void)setupData {
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"取消" style:UIBarButtonItemStylePlain target:self action:@selector(rightBarItemClicked)];
self.tableView.rowHeight = 80;
[self.tableView registerNib:[HUAlbumCell nib] forCellReuseIdentifier:[HUAlbumCell reuseIdentifier]];
_cachingImageManager = [[PHCachingImageManager alloc] init];
PHFetchOptions *options = [PHFetchOptions new];
options.includeAssetSourceTypes = PHAssetResourceTypePhoto;
_smartAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAlbumSyncedAlbum options:options];
_userCollectons = [PHCollectionList fetchTopLevelUserCollectionsWithOptions:options];
self.allAlbums = [self getPhotoAlbumsFromSmallAlbumsAndUserCollections];
options.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]];
_allPhotos = [PHAsset fetchAssetsWithOptions:options];
[[PHPhotoLibrary sharedPhotoLibrary] registerChangeObserver:self];
}
- (NSArray<HUPhotoAlbum *> *)getPhotoAlbumsFromSmallAlbumsAndUserCollections {
NSMutableArray<HUPhotoAlbum *> *allAlums = [NSMutableArray array];
NSArray<HUPhotoAlbum *> *smarts = [self getPhotoAlbumsWithPHAssetCollection:_smartAlbums];
[allAlums addObjectsFromArray:smarts];
NSArray<HUPhotoAlbum *> *users = [self getPhotoAlbumsWithPHAssetCollection:_userCollectons];
[allAlums addObjectsFromArray:users];
return [allAlums copy];
}
- (NSArray<HUPhotoAlbum *> *)getPhotoAlbumsWithPHAssetCollection:(id)assetCollections {
NSMutableArray<HUPhotoAlbum *> *collections = [NSMutableArray array];
HUPhotoAlbum *album = nil;
for (PHCollection *collection in assetCollections) {
if ([collection isKindOfClass:[PHAssetCollection class]]) {
PHFetchResult *results = [PHAsset fetchAssetsInAssetCollection:(PHAssetCollection *)collection options:nil];
if (results.count > 0) {
album = [HUPhotoAlbum photoAlbumWithAssetCollection:(PHAssetCollection*)collection assetCount:results.count];
[collections addObject: album];
}
}
}
return collections;
}
#pragma mark - getter & setter
- (NSArray *)allAlbums {
if (_allAlbums == nil) {
_allAlbums = [NSArray array];
}
return _allAlbums;
}
- (PHImageRequestOptions *)options {
if (_options == nil) {
_options = [PHImageRequestOptions new];
_options.resizeMode = PHImageRequestOptionsResizeModeFast;
[_options setSynchronous:false];
[_options setNetworkAccessAllowed:false];
}
return _options;
}
@end
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUImageGridCell.h
================================================
//
// BAImageGridCell.h
// beautyAssistant
//
// Created by jewelz on 2017/6/22.
// Copyright © 2017年 Service+. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "HUImageSelectModel.h"
@interface HUImageGridCell : UICollectionViewCell
+ (NSString *)reuseIdentifier;
@property (nonatomic, strong) UIImageView *thumbnail;
@property (nonatomic, strong) UIButton *degradedButton;
@property (nonatomic, assign) BOOL isDegraded;
@property (nonatomic, copy) NSString *representedAssetIdentifier;
@property (nonatomic, strong) HUImageSelectModel *model;
@end
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUImageGridCell.m
================================================
//
// HUImageGridCell.m
// beautyAssistant
//
// Created by jewelz on 2017/6/22.
// Copyright © 2017年 Service+. All rights reserved.
//
#import "HUImageGridCell.h"
#import "Asset.h"
#import "UIView+HUConstraint.h"
//#import "NSBundle+HUPicker.h"
@interface HUImageGridCell ()
@property (nonatomic, strong) UIButton *checkButton;
@end
@implementation HUImageGridCell
+ (NSString *)reuseIdentifier {
return @"HUImageGridCell";
}
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
[self setupView];
}
return self;
}
- (void)setModel:(HUImageSelectModel *)model {
_model = model;
[_checkButton setSelected:model.isSelected];
if (model.isSelected) {
NSString *title = [NSString stringWithFormat:@"%zd", model.index];
[_checkButton setTitle:title forState:UIControlStateSelected];
}
}
- (void)setIsDegraded:(BOOL)isDegraded {
_isDegraded = isDegraded;
self.degradedButton.hidden = !isDegraded;
// NSLog(@"is degraded: %zd", isDegraded);
}
- (void)setupView {
[self.contentView addSubview:self.thumbnail];
[self.contentView addConstraintsWithVisualFormat:@"H:|[v0]|" views:@[self.thumbnail]];
[self.contentView addConstraintsWithVisualFormat:@"V:|[v0]|" views:@[self.thumbnail]];
[self.contentView addSubview:self.checkButton];
[self.contentView addConstraintsWithVisualFormat:@"H:[v0(==22)]-2-|" views:@[self.checkButton]];
[self.contentView addConstraintsWithVisualFormat:@"V:|-2-[v0(==22)]" views:@[self.checkButton]];
[self.contentView addSubview:self.degradedButton];
[self.contentView addConstraintsWithVisualFormat:@"H:|[v0]|" views:@[self.degradedButton]];
[self.contentView addConstraintsWithVisualFormat:@"V:|[v0]|" views:@[self.degradedButton]];
}
- (UIImageView *)thumbnail {
if (_thumbnail == nil) {
_thumbnail = [UIImageView new];
_thumbnail.contentMode = UIViewContentModeScaleAspectFill;
_thumbnail.backgroundColor = [UIColor redColor];
_thumbnail.clipsToBounds = YES;
}
return _thumbnail;
}
- (UIButton *)checkButton {
if (_checkButton == nil) {
_checkButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_checkButton setBackgroundImage:UIImageMake(@"photo_button_normal") forState:UIControlStateNormal];
[_checkButton setBackgroundImage:UIImageMake(@"photo_button_selected") forState:UIControlStateSelected];
[_checkButton setTitle:nil forState:UIControlStateNormal];
_checkButton.adjustsImageWhenHighlighted = NO;
_checkButton.userInteractionEnabled = NO;
[_checkButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
_checkButton.titleLabel.font = [UIFont systemFontOfSize:13];
}
return _checkButton;
}
- (UIButton *)degradedButton {
if (_degradedButton == nil) {
_degradedButton = [UIButton buttonWithType:UIButtonTypeCustom];
_degradedButton.adjustsImageWhenHighlighted = NO;
//_degradedButton.backgroundColor = [UIColor redColor];
_degradedButton.backgroundColor = [UIColor colorWithWhite:1 alpha:0.5];
}
return _degradedButton;
}
@end
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUImageGridViewController.h
================================================
//
// HUImageGridViewController.h
// beautyAssistant
//
// Created by jewelz on 2017/6/22.
// Copyright © 2017年 Service+. All rights reserved.
//
#import <UIKit/UIKit.h>
#import <Photos/Photos.h>
@interface HUImageGridViewController : UIViewController
@property (nonatomic, strong) PHFetchResult<PHAsset *> *fetchResult;
@end
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUImageGridViewController.m
================================================
//
// HUImageGridViewController.m
// beautyAssistant
//
// Created by jewelz on 2017/6/22.
// Copyright © 2017年 Service+. All rights reserved.
//
#import "HUImageGridViewController.h"
#import "HUImageGridCell.h"
#import "HUTakePhotoCell.h"
#import "HUNavTitleView.h"
#import "HUImagePickerViewController.h"
#import "HUImageSelectModel.h"
#import "HUPHAuthorizationNotDeterminedView.h"
#import "HUAlbumTableViewController.h"
#import "Asset.h"
#import "UIView+HUConstraint.m"
#import "UIBarButtonItem+HUButton.h"
#import "HUPhotoManager.h"
#import "HUToast.h"
@interface HUImageGridViewController ()<UICollectionViewDataSource, UICollectionViewDelegateFlowLayout, PHPhotoLibraryChangeObserver, UIGestureRecognizerDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate> {
NSInteger _cloumns;
CGFloat _spacing;
__weak HUAlbumTableViewController *_albumVC;
}
@property (nonatomic, strong) UICollectionView *collectionView;
@property (nonatomic, strong) HUNavTitleView *navTitleView;
@property (nonatomic, strong) PHCachingImageManager *cachingImageManager;
@property (nonatomic, strong) PHImageRequestOptions *options;
@property (nonatomic, assign) CGSize targetSize;
@property (nonatomic, strong) NSMutableArray<HUImageSelectModel *> *selectModels;
@property (nonatomic, strong) NSMutableArray<NSIndexPath *> *selectIndexPaths;
@property (nonatomic, strong) NSMutableArray *images;
@property (nonatomic, strong) HUPHAuthorizationNotDeterminedView *notDeterminedView;
@property (nonatomic, strong) UIView *bgMask;
@end
@implementation HUImageGridViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
self.navigationController.interactivePopGestureRecognizer.delegate = self;
//self.navigationItem.leftBarButtonItem = [UIBarButtonItem leftItemWithImage:UIImageMake(@"nav_back") target:self action:@selector(back)];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"取消" style:UIBarButtonItemStylePlain target:self action:@selector(dismiss)];
PHAuthorizationStatus author = [PHPhotoLibrary authorizationStatus];
if (author == PHAuthorizationStatusNotDetermined) {
// 无权限
[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
if (status == PHAuthorizationStatusAuthorized) {
dispatch_async(dispatch_get_main_queue(), ^{
[self setupData];
});
return ;
}
[self rightBarItemClicked];
}];
return;
}
[self setupData];
}
- (void)dealloc {
if ([PHPhotoLibrary authorizationStatus] == PHAuthorizationStatusAuthorized) {
[[PHPhotoLibrary sharedPhotoLibrary] unregisterChangeObserver:self];
}
}
#pragma mark - Collection view data source
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
return _fetchResult.count + 1;
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.item == 0) {
HUTakePhotoCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:[HUTakePhotoCell reuseIdentifier] forIndexPath:indexPath];
return cell;
}
PHAsset *asset = _fetchResult[indexPath.item - 1];
HUImageGridCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:[HUImageGridCell reuseIdentifier] forIndexPath:indexPath];
cell.representedAssetIdentifier = asset.localIdentifier;
cell.model = self.selectModels[indexPath.item-1];
[_cachingImageManager requestImageForAsset:asset targetSize:_targetSize contentMode:PHImageContentModeDefault options:_options resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {
BOOL isDegraded = [info[PHImageResultIsDegradedKey] boolValue];
if (result && [cell.representedAssetIdentifier isEqualToString: asset.localIdentifier]) {
cell.thumbnail.image = result;
cell.isDegraded = isDegraded;
}
}];
return cell;
}
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.item == 0) {
[self takePhoto];
return;
}
PHAsset *asset = _fetchResult[indexPath.item-1];
if (asset.mediaType != PHAssetMediaTypeImage) {
return;
}
HUImageSelectModel *model = self.selectModels[indexPath.item-1];
HUImagePickerViewController *pickVc = (HUImagePickerViewController *)self.navigationController;
if (self.selectIndexPaths.count >= pickVc.maxCount && !model.isSelected) {
NSString *title = [NSString stringWithFormat:@"你最多只能选择%zd张照片", pickVc.maxCount];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title message:nil delegate:nil cancelButtonTitle:@"我知道了" otherButtonTitles:nil, nil];
[alert show];
return;
}
if (!model.isSelected) {
[[HUPhotoManager sharedInstance] checkPhotoIsAvaliableWithAsset:asset progress:^(double progress) {
} completed:^(BOOL avaliable, UIImage * _Nonnull image) {
if (avaliable) {
model.isSelected = !model.isSelected;
[self.selectIndexPaths addObject:indexPath];
model.index = self.selectIndexPaths.count;
model.asset = _fetchResult[indexPath.item-1];
[collectionView reloadItemsAtIndexPaths:@[indexPath]];
[self resetRightBarButton];
} else {
[HUToast makeToast:@"iCloud同步中" inView:self.view];
}
}];
} else {
model.isSelected = !model.isSelected;
[self.selectIndexPaths removeObject:indexPath];
model.asset = nil;
NSMutableArray *indexPaths = [NSMutableArray array];
[indexPaths addObject:indexPath];
for (HUImageSelectModel *obj in self.selectModels) {
if (obj != model && obj.index > model.index) {
obj.index -= 1;
[indexPaths addObject:obj.indexPath];
}
}
[collectionView reloadItemsAtIndexPaths:indexPaths];
[self resetRightBarButton];
}
// return;
//
//
// HUImagePickerViewController *pickVc = (HUImagePickerViewController *)self.navigationController;
// if (self.selectIndexPaths.count >= pickVc.maxCount && !model.isSelected) {
// NSString *title = [NSString stringWithFormat:@"你最多只能选择%zd张照片", pickVc.maxCount];
// UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title message:nil delegate:nil cancelButtonTitle:@"我知道了" otherButtonTitles:nil, nil];
// [alert show];
// return;
// }
//
// model.isSelected = !model.isSelected;
//
// if (model.isSelected) {
// [self.selectIndexPaths addObject:indexPath];
// model.index = self.selectIndexPaths.count;
// model.asset = _fetchResult[indexPath.item-1];
// [collectionView reloadItemsAtIndexPaths:@[indexPath]];
// } else {
// [self.selectIndexPaths removeObject:indexPath];
// model.asset = nil;
// NSMutableArray *indexPaths = [NSMutableArray array];
// [indexPaths addObject:indexPath];
//
// for (HUImageSelectModel *obj in self.selectModels) {
// if (obj != model && obj.index > model.index) {
// obj.index -= 1;
// [indexPaths addObject:obj.indexPath];
// }
// }
//
// [collectionView reloadItemsAtIndexPaths:indexPaths];
// }
// [self.uploadButton setTitle:[NSString stringWithFormat:@"上传(%zd)", self.selectIndexPaths.count] forState:UIControlStateNormal];
}
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
CGFloat space = _spacing * (_cloumns - 1);
CGFloat wh = (self.view.frame.size.width - space) / _cloumns;
return CGSizeMake(wh, wh);
}
#pragma mark - UIImagePickerControllerDelegate
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
[picker dismissViewControllerAnimated:YES completion:nil];
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info {
[picker dismissViewControllerAnimated:YES completion:nil];
UIImage *image = info[UIImagePickerControllerOriginalImage];
HUImagePickerViewController *pickVc = (HUImagePickerViewController *)self.navigationController;
if ([pickVc.delegate respondsToSelector:@selector(imagePickerViewController:didFinishPickingImageWithImages:assets:)]) {
[pickVc.delegate imagePickerViewController:pickVc didFinishPickingImageWithImages:@[image] assets:nil];
}
}
#pragma mark - PHPhotoLibraryChangeObserver
- (void)photoLibraryDidChange:(PHChange *)changeInstance {
// dispatch_sync(dispatch_get_main_queue(), ^{
//
// PHFetchResultChangeDetails *details = [changeInstance changeDetailsForFetchResult:_fetchResult];
// if (details) {
// self.fetchResult = [details fetchResultAfterChanges];
//// [self.collectionView reloadData];
// }
//
// });
}
#pragma mark - Action
- (void)rightBarItemClicked {
// [SVProgressHUD dismiss];
if (self.selectIndexPaths.count > 0) {
[self fetchPhotos];
return;
}
if ([self.navigationController isKindOfClass:[HUImagePickerViewController class]]) {
[self.navigationController dismissViewControllerAnimated:YES completion:nil];
}
}
- (void)fetchPhotos {
NSMutableArray *assets = [NSMutableArray arrayWithCapacity:self.selectIndexPaths.count];
for (HUImageSelectModel *model in self.selectModels) {
if (model.isSelected) {
[assets addObject:model.asset];
}
}
if (assets.count == 0) {
return;
}
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self fetchPhotoWithAsset:assets];
});
}
- (void)selectPhotoAlbum:(UIButton *)sender {
sender.selected = !sender.selected;
if (sender.isSelected) {
self.bgMask.hidden = NO;
_albumVC.view.hidden = NO;
[UIView animateWithDuration:0.5 delay:0 usingSpringWithDamping:0.8 initialSpringVelocity:1 options:UIViewAnimationOptionCurveEaseInOut animations:^{
self.bgMask.alpha = 1;
_albumVC.view.transform = CGAffineTransformMakeTranslation(0, CGRectGetHeight(self.view.frame)-200+64);
} completion:^(BOOL finished) {
}];
} else {
[self dismissPhotoAlbum];
}
}
- (void)dismissPhotoAlbum {
_navTitleView.selected = NO;
[UIView animateWithDuration:0.5 delay:0 usingSpringWithDamping:0.8 initialSpringVelocity:1 options:UIViewAnimationOptionCurveEaseInOut animations:^{
self.bgMask.alpha = 0;
_albumVC.view.transform = CGAffineTransformIdentity;
} completion:^(BOOL finished) {
self.bgMask.hidden = YES;
_albumVC.view.hidden = YES;
}];
}
#pragma mark - Private
- (void)fetchPhotoWithAsset:(NSArray<PHAsset *> *)assets {
[[HUPhotoManager sharedInstance] fetchPhotosWithAssets:assets progress:nil completed:^(NSArray<UIImage *> * _Nonnull images) {
dispatch_async(dispatch_get_main_queue(), ^{
if (![self.navigationController isKindOfClass:[HUImagePickerViewController class]]) {
return;
}
HUImagePickerViewController *pickVc = (HUImagePickerViewController *)self.navigationController;
if ([pickVc.delegate respondsToSelector:@selector(imagePickerViewController:didFinishPickingImageWithImages:assets:)]) {
[pickVc.delegate imagePickerViewController:pickVc didFinishPickingImageWithImages:images assets:assets];
}
});
}];
}
- (void)takePhoto {
if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
[[[UIAlertView alloc] initWithTitle:@"您的设备不支持相机" message:nil delegate:nil cancelButtonTitle:@"我知道了" otherButtonTitles:nil, nil] show];
return;
}
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentViewController:picker animated:YES completion:nil];
}
- (void)back {
[self.navigationController popViewControllerAnimated:YES];
}
- (void)dismiss {
[self dismissViewControllerAnimated:YES completion:nil];
}
- (void)resetRightBarButton {
HUImagePickerViewController *pickVc = (HUImagePickerViewController *)self.navigationController;
NSString *rightTitle = self.selectIndexPaths.count > 0 ? [NSString stringWithFormat:@"确定(%zd/%zd)", self.selectIndexPaths.count, pickVc.maxCount] : @"确定";
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:rightTitle style:UIBarButtonItemStylePlain target:self action:@selector(rightBarItemClicked)];
self.navigationItem.rightBarButtonItem.enabled = self.selectIndexPaths.count > 0;
NSDictionary *attribute = @{NSForegroundColorAttributeName:UIColorMake(48, 144, 255), NSFontAttributeName:[UIFont systemFontOfSize:15]};
[self.navigationItem.rightBarButtonItem setTitleTextAttributes:attribute forState:UIControlStateNormal];
}
#pragma mark - UIGestureRecognizerDelegate
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {
return YES;
}
#pragma mark - getter
- (void)setupView {
self.automaticallyAdjustsScrollViewInsets = NO;
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"确定" style:UIBarButtonItemStylePlain target:self action:@selector(rightBarItemClicked)];
self.navigationItem.rightBarButtonItem.enabled = NO;
[self.view addSubview:self.collectionView];
[self.view addConstraintsWithVisualFormat:@"H:|[v0]|" views:@[self.collectionView]];
[self.view addConstraintsWithVisualFormat:@"V:|[v0]|" views:@[self.collectionView]];
self.navigationItem.titleView = self.navTitleView;
//self.navTitleView.title = @"全部照片";
[self.view addSubview:self.bgMask];
[self.view addConstraintsWithVisualFormat:@"H:|[v0]|" views:@[self.bgMask]];
[self.view addConstraintsWithVisualFormat:@"V:|[v0]|" views:@[self.bgMask]];
CGFloat height = CGRectGetHeight(self.view.frame)-200;
HUAlbumTableViewController *albumVC = [[HUAlbumTableViewController alloc] init];
albumVC.didSelectedAlbum = ^(NSString *title, PHFetchResult *fetchResult) {
[self dismissPhotoAlbum];
self.navTitleView.title = title;
self.fetchResult = fetchResult;
};
albumVC.view.frame = CGRectMake(0, -height, CGRectGetWidth(self.view.frame), height);
albumVC.view.hidden = YES;
[self.view addSubview:albumVC.view];
[self addChildViewController:albumVC];
[albumVC didMoveToParentViewController:self];
_albumVC = albumVC;
}
- (void)setupData {
HUImagePickerViewController *pickVc = (HUImagePickerViewController *)self.navigationController;
_cloumns = pickVc.numberOfColumns;
_spacing = pickVc.spacing;
[[HUPhotoManager sharedInstance] setNetworkAccessAllowed:pickVc.isNetworkAccessAllowed];
[self setupView];
if (_fetchResult == nil) {
PHFetchOptions *options = [PHFetchOptions new];
options.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]];
self.fetchResult = [PHAsset fetchAssetsWithOptions:options];
}
CGFloat space = _spacing * (_cloumns - 1);
CGFloat width = ((self.view.frame.size.width - space) / _cloumns) * [UIScreen mainScreen].scale;
_targetSize = CGSizeMake(width, width);
_cachingImageManager = [[PHCachingImageManager alloc] init];
[[PHPhotoLibrary sharedPhotoLibrary] registerChangeObserver:self];
}
#pragma mark - getter & setter
- (void)setFetchResult:(PHFetchResult<PHAsset *> *)fetchResult {
_fetchResult = fetchResult;
[self.selectModels removeAllObjects];
[self.selectIndexPaths removeAllObjects];
[self resetRightBarButton];
for (NSInteger i=0; i<fetchResult.count; i++) {
HUImageSelectModel *model = [HUImageSelectModel new];
model.indexPath = [NSIndexPath indexPathForItem:i+1 inSection:0];
[self.selectModels addObject:model];
}
[self.collectionView reloadData];
}
- (UICollectionView *)collectionView {
if (_collectionView == nil) {
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
layout.minimumLineSpacing = _spacing;
layout.minimumInteritemSpacing = _spacing;
layout.sectionInset = UIEdgeInsetsMake(_spacing, 0, _spacing, 0);
_collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
_collectionView.dataSource = self;
_collectionView.delegate = self;
_collectionView.backgroundColor = UIColorMake(238, 241, 242);
_collectionView.contentInset = UIEdgeInsetsMake(64, 0, 0, 0);
// if (@available(iOS 11.0, *)) {
// _collectionView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
// }
[_collectionView setAlwaysBounceVertical:YES];
[_collectionView registerClass:[HUTakePhotoCell class] forCellWithReuseIdentifier:[HUTakePhotoCell reuseIdentifier]];
[_collectionView registerClass:[HUImageGridCell class] forCellWithReuseIdentifier:[HUImageGridCell reuseIdentifier]];
}
return _collectionView;
}
- (HUNavTitleView *)navTitleView {
if (_navTitleView == nil) {
_navTitleView = [HUNavTitleView buttonWithType:UIButtonTypeCustom];
_navTitleView.bounds = CGRectMake(0, 0, 200, 44);
[_navTitleView setTitleColor:UIColorMake(30, 30, 30) forState:UIControlStateNormal];
[_navTitleView setImage:UIImageMake(@"album_open_icon") forState:UIControlStateNormal];
[_navTitleView setImage:UIImageMake(@"album_close_icon") forState:UIControlStateSelected];
_navTitleView.titleLabel.font = UIFontMake(16);
_navTitleView.title = @"全部照片";
[_navTitleView addTarget:self action:@selector(selectPhotoAlbum:) forControlEvents:UIControlEventTouchUpInside];
}
return _navTitleView;
}
- (UIView *)bgMask {
if (_bgMask == nil) {
_bgMask = [[UIView alloc] init];
_bgMask.backgroundColor = [UIColor colorWithWhite:0 alpha:0.45];
_bgMask.alpha = 0;
}
return _bgMask;
}
- (PHImageRequestOptions *)options {
if (_options == nil) {
_options = [PHImageRequestOptions new];
_options.resizeMode = PHImageRequestOptionsResizeModeExact;
}
return _options;
}
- (NSMutableArray<HUImageSelectModel *> *)selectModels {
if (_selectModels == nil) {
_selectModels = [NSMutableArray array];
}
return _selectModels;
}
- (NSMutableArray<NSIndexPath *> *)selectIndexPaths {
if (_selectIndexPaths == nil) {
_selectIndexPaths = [NSMutableArray array];
}
return _selectIndexPaths;
}
- (NSMutableArray *)images {
if (_images == nil) {
_images = [NSMutableArray array];
}
return _images;
}
- (HUPHAuthorizationNotDeterminedView *)notDeterminedView {
if (_notDeterminedView == nil) {
_notDeterminedView = [[HUPHAuthorizationNotDeterminedView alloc] initWithFrame:self.view.bounds];
}
return _notDeterminedView;
}
@end
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUImagePickerViewController.h
================================================
//
// HUImagePickerViewController.h
// beautyAssistant
//
// Created by jewelz on 2017/6/22.
// Copyright © 2017年 Service+. All rights reserved.
//
#import <UIKit/UIKit.h>
@class HUImagePickerViewController, PHAsset;
@protocol HUImagePickerViewControllerDelegate <NSObject>
@optional
- (void)imagePickerViewController:(nonnull HUImagePickerViewController *)imagePickerViewController
didFinishPickingImageWithImages:(nonnull NSArray<UIImage *> *)images assets:(nullable NSArray<PHAsset *> *)assets;
- (void)imagePickerViewControllerDidBeginUploadImage:(nonnull HUImagePickerViewController *)imagePickerViewController;
@end
@interface HUImagePickerViewController : UINavigationController
- (instancetype _Nonnull )initWithMaxCount:(NSInteger)maxCount numberOfColumns:(NSInteger)columns;
@property (nonatomic, weak, nullable) id <HUImagePickerViewControllerDelegate, UINavigationControllerDelegate> delegate;
@property (nonatomic, assign) NSInteger maxCount;
@property (nonatomic, assign) NSInteger numberOfColumns;
@property (nonatomic, assign) CGFloat spacing;
/// 是否允许通过网络下载iCloud图片,默认为 NO
@property (nonatomic, assign, getter=isNetworkAccessAllowed) BOOL networkAccessAllowed;
@end
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUImagePickerViewController.m
================================================
//
// HUImagePickerViewController.m
// beautyAssistant
//
// Created by jewelz on 2017/6/22.
// Copyright © 2017年 Service+. All rights reserved.
//
#import "HUImagePickerViewController.h"
#import "HUAlbumTableViewController.h"
#import "HUImageGridViewController.h"
#import "HUPHAuthorizationNotDeterminedView.h"
#import "HUPHAuthorizationNotDeterminedViewController.h"
#import "Asset.h"
#import <Photos/Photos.h>
@interface HUImagePickerViewController ()
@end
@implementation HUImagePickerViewController
@synthesize delegate = _delegate;
- (instancetype)initWithMaxCount:(NSInteger)maxCount numberOfColumns:(NSInteger)columns {
UIViewController *rootVc = nil;
PHAuthorizationStatus author = [PHPhotoLibrary authorizationStatus];
if (author == PHAuthorizationStatusRestricted || author == PHAuthorizationStatusDenied) {
rootVc = [[HUPHAuthorizationNotDeterminedViewController alloc] init];
} else {
rootVc = [[HUImageGridViewController alloc] init];
}
self = [super initWithRootViewController:rootVc];
if (self) {
_maxCount = maxCount;
_numberOfColumns = columns;
_spacing = 1.5;
}
return self;
}
- (instancetype)init {
return [self initWithMaxCount:10 numberOfColumns:4];
}
- (void)viewDidLoad {
[super viewDidLoad];
[[UINavigationBar appearance] setTintColor:UIColorMake(30, 30, 30)];
NSDictionary *titleAttribute = @{NSForegroundColorAttributeName:UIColorMake(30, 30, 30), NSFontAttributeName:[UIFont systemFontOfSize:17]};
[[UINavigationBar appearance] setTitleTextAttributes:titleAttribute];
//设置正常状态
NSDictionary *attribute = @{NSForegroundColorAttributeName:UIColorMake(81, 88, 102), NSFontAttributeName:[UIFont systemFontOfSize:15]};
[[UIBarButtonItem appearance] setTitleTextAttributes:attribute forState:UIControlStateNormal];
//设置不可用状态
NSDictionary *disAttribute = @{NSForegroundColorAttributeName:UIColorMake(209, 209, 209), NSFontAttributeName:[UIFont systemFontOfSize:15]};
[[UIBarButtonItem appearance] setTitleTextAttributes:disAttribute forState:UIControlStateDisabled];
// PHAuthorizationStatus author = [PHPhotoLibrary authorizationStatus];
// if (author == PHAuthorizationStatusNotDetermined || author == PHAuthorizationStatusAuthorized) {
// HUAlbumTableViewController *vc = [[HUAlbumTableViewController alloc] init];
//
// [self pushViewController:vc animated:true];
// }
}
- (void)setDelegate:(id<HUImagePickerViewControllerDelegate,UINavigationControllerDelegate>)delegate {
_delegate = delegate;
}
- (id<HUImagePickerViewControllerDelegate,UINavigationControllerDelegate>)delegate {
return _delegate;
}
@end
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUImageSelectModel.h
================================================
//
// BAImageSelectModel.h
// beautyAssistant
//
// Created by jewelz on 2017/6/22.
// Copyright © 2017年 Service+. All rights reserved.
//
#import <Foundation/Foundation.h>
@class PHAsset;
@interface HUImageSelectModel : NSObject
@property (nonatomic, assign) BOOL isSelected;
@property (nonatomic, assign) NSInteger index;
@property (nonatomic, strong) PHAsset *asset;
@property (nonatomic, strong) NSIndexPath *indexPath;
@end
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUImageSelectModel.m
================================================
//
// BAImageSelectModel.m
// beautyAssistant
//
// Created by jewelz on 2017/6/22.
// Copyright © 2017年 Service+. All rights reserved.
//
#import "HUImageSelectModel.h"
@implementation HUImageSelectModel
@end
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUNavTitleView.h
================================================
//
// NavTitleView.h
// HUPhotoPicker
//
// Created by jewelz on 2017/9/27.
//
#import <UIKit/UIKit.h>
@interface HUNavTitleView : UIButton
@property (nonatomic, copy) NSString *title;
@end
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUNavTitleView.m
================================================
//
// NavTitleView.m
// HUPhotoPicker
//
// Created by jewelz on 2017/9/27.
//
#import "HUNavTitleView.h"
#import "NSBundle+HUPicker.h"
@interface HUNavTitleView()
@end
@implementation HUNavTitleView
- (void)setTitle:(NSString *)title {
_title = [title copy];
[self setTitle:title forState:UIControlStateNormal];
[self setTitle:title forState:UIControlStateSelected];
[self setTitleEdgeInsets:UIEdgeInsetsMake(0, -self.imageView.image.size.width * 2 - 3, 0, 0)];
CGFloat titleWidth = [title sizeWithAttributes:@{NSFontAttributeName: self.titleLabel.font}].width + 3;
//CGFloat titleWidth = self.titleLabel.bounds.size.width;
[self setImageEdgeInsets:UIEdgeInsetsMake(0, titleWidth, 0, -titleWidth)];
}
@end
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUPHAuthorizationNotDeterminedView.h
================================================
//
// BAPHAuthorizationNotDeterminedView.h
// beautyAssistant
//
// Created by jewelz on 2017/7/20.
// Copyright © 2017年 Service+. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface HUPHAuthorizationNotDeterminedView : UIView
@end
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUPHAuthorizationNotDeterminedView.m
================================================
//
// BAPHAuthorizationNotDeterminedView.m
// beautyAssistant
//
// Created by jewelz on 2017/7/20.
// Copyright © 2017年 Service+. All rights reserved.
//
#import "HUPHAuthorizationNotDeterminedView.h"
#import "Asset.h"
#import "UIView+HUConstraint.h"
@interface HUPHAuthorizationNotDeterminedView()
@property (nonatomic, strong) UIImageView *imageView;
@property (nonatomic, strong) UILabel *titleLabel;
@property (nonatomic, strong) UILabel *descLabel;
@end
@implementation HUPHAuthorizationNotDeterminedView
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self setupView];
}
return self;
}
- (void)setupView {
[self addSubview:self.imageView];
[self centerXOffset:0 forView:self.imageView];
[self centerYOffset:-30 forView:self.imageView];
[self addSubview:self.titleLabel];
[self addConstraintsWithVisualFormat:@"V:[v0]-30-[v1]" views:@[self.imageView, self.titleLabel]];
[self centerXOffset:0 forView:self.titleLabel];
[self addSubview:self.descLabel];
[self centerXOffset:0 forView:self.descLabel];
[self addConstraintsWithVisualFormat:@"V:[v0]-8-[v1]" views:@[self.titleLabel, self.descLabel]];
}
- (UIImageView *)imageView {
if (_imageView == nil) {
_imageView = [[UIImageView alloc] init];
_imageView.image = UIImageMake(@"Jurisdiction_icon");
}
return _imageView;
}
- (UILabel *)titleLabel {
if (_titleLabel == nil) {
_titleLabel = [[UILabel alloc] init];
_titleLabel.font = UIFontBoldMake(17);
_titleLabel.text = @"此应用没有权限访问您的照片或视频。";
_titleLabel.textColor = UIColorMake(98, 107, 122);
}
return _titleLabel;
}
- (UILabel *)descLabel {
if (_descLabel == nil) {
_descLabel = [[UILabel alloc] init];
_descLabel.font = UIFontMake(15);
_descLabel.text = @"您可以在\"隐私设置\"中启用访问。";
_descLabel.textColor = [UIColor lightGrayColor];
}
return _descLabel;
}
@end
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUPHAuthorizationNotDeterminedViewController.h
================================================
//
// BAPHAuthorizationNotDeterminedViewController.h
// beautyAssistant
//
// Created by jewelz on 2017/7/20.
// Copyright © 2017年 Service+. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface HUPHAuthorizationNotDeterminedViewController : UIViewController
@end
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUPHAuthorizationNotDeterminedViewController.m
================================================
//
// HUPHAuthorizationNotDeterminedViewController.m
// beautyAssistant
//
// Created by jewelz on 2017/7/20.
// Copyright © 2017年 Service+. All rights reserved.
//
#import "HUPHAuthorizationNotDeterminedViewController.h"
#import "HUPHAuthorizationNotDeterminedView.h"
#import "HUImagePickerViewController.h"
@interface HUPHAuthorizationNotDeterminedViewController ()
@property (nonatomic, strong) HUPHAuthorizationNotDeterminedView *notDeterminedView;
@end
@implementation HUPHAuthorizationNotDeterminedViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"取消" style:UIBarButtonItemStylePlain target:self action:@selector(rightBarItemClicked)];
[self.view addSubview:self.notDeterminedView];
}
#pragma mark - Action
- (void)rightBarItemClicked {
//[SVProgressHUD dismiss];
if ([self.navigationController isKindOfClass:[HUImagePickerViewController class]]) {
[self.navigationController dismissViewControllerAnimated:YES completion:nil];
}
}
- (HUPHAuthorizationNotDeterminedView *)notDeterminedView {
if (_notDeterminedView == nil) {
_notDeterminedView = [[HUPHAuthorizationNotDeterminedView alloc] initWithFrame:self.view.bounds];
}
return _notDeterminedView;
}
@end
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUPhotoAlbum.h
================================================
//
// HUPhotoAlbum.h
// Pods
//
// Created by jewelz on 2017/9/15.
//
//
#import <Foundation/Foundation.h>
@class PHAssetCollection;
@interface HUPhotoAlbum : NSObject
@property (nonatomic, copy) NSString *title;
@property (nonatomic, assign) NSUInteger assetCount;
@property (nonatomic, strong) PHAssetCollection *collection;
+ (instancetype)photoAlbumWithAssetCollection:(PHAssetCollection *)collection assetCount:(NSUInteger)count;
- (instancetype)initWithAssetCollection:(PHAssetCollection *)collection assetCount:(NSUInteger)count;
@end
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUPhotoAlbum.m
================================================
//
// HUPhotoAlbum.m
// Pods
//
// Created by jewelz on 2017/9/15.
//
//
#import "HUPhotoAlbum.h"
#import <Photos/Photos.h>
@implementation HUPhotoAlbum
+ (instancetype)photoAlbumWithAssetCollection:(PHAssetCollection *)collection assetCount:(NSUInteger)count {
return [[self alloc] initWithAssetCollection:collection assetCount:count];
}
- (instancetype)initWithAssetCollection:(PHAssetCollection *)collection assetCount:(NSUInteger)count {
self = [super init];
if (self) {
self.title = collection.localizedTitle;
self.collection = collection;
self.assetCount = count;
}
return self;
}
@end
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUPhotoManager.h
================================================
//
// HUPhotoHelper.h
// Pods
//
// Created by jewelz on 2017/7/29.
//
//
#import <Foundation/Foundation.h>
@class PHAsset;
@interface HUPhotoManager : NSObject
@property (nonatomic, assign, getter=isNetworkAccessAllowed) BOOL networkAccessAllowed;
+ (nonnull instancetype)sharedInstance;
- (void)fetchPhotoWithAsset:(nonnull PHAsset *)asset
progress:(nullable void(^)(double progress))progress
completed:(nullable void(^)(BOOL success, UIImage * _Nonnull image))completed;
- (void)fetchPhotosWithAssets:(nonnull NSArray<PHAsset *> *)assets
progress:(nullable void(^)(double progress))progress
completed:(nullable void(^)(NSArray<UIImage *> * _Nonnull images))completed;
- (void)cancelPhotoRequest;
- (void)checkPhotoIsAvaliableWithAsset:(nonnull PHAsset *)asset
progress:(nullable void(^)(double progress))progress
completed:(nullable void(^)(BOOL avaliable, UIImage * _Nonnull image))completed;
@end
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUPhotoManager.m
================================================
//
// HUPhotoHelper.m
// Pods
//
// Created by jewelz on 2017/7/29.
//
//
#import "HUPhotoManager.h"
#import <Photos/Photos.h>
@interface HUPhotoManager()
@property (nonatomic, copy) NSMutableDictionary<NSString *, UIImage *> *imageCache;
@property (nonatomic, copy) NSMutableDictionary<NSString *, NSNumber *> * imageRequestIDs;
@property (nonatomic, strong) PHImageRequestOptions *requestOptions;
@end
@implementation HUPhotoManager
+ (instancetype)sharedInstance {
static HUPhotoManager *shared = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
shared = [[HUPhotoManager alloc] init];
});
return shared;
}
- (instancetype)init {
if (self == [super init]) {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(clearCache) name:UIApplicationDidReceiveMemoryWarningNotification object:nil];
}
return self;
}
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
- (void)fetchPhotosWithAssets:(nonnull NSArray<PHAsset *> *)assets
progress:(nullable void(^)(double progress))progress
completed:(nullable void(^)(NSArray<UIImage *> * _Nonnull images))completed {
__block NSMutableArray *downloadeds = [NSMutableArray array];
NSMutableArray *shouldDownlds = [NSMutableArray array];
for (PHAsset *asset in assets) {
UIImage *cachedImage = [self.imageCache objectForKey:asset.localIdentifier];
if (cachedImage) {
[downloadeds addObject:cachedImage];
} else {
[shouldDownlds addObject:asset];
}
}
if (downloadeds.count >= assets.count) {
if (progress) {
progress(1);
}
if (completed) {
completed(downloadeds);
}
return;
}
double count = shouldDownlds.count;
for (PHAsset *asset in shouldDownlds) {
[self fetchPhotoWithAsset:asset progress:^(double _progress) {
if (progress) {
dispatch_async(dispatch_get_main_queue(), ^{
progress(_progress / count);
});
}
} completed:^(BOOL success, UIImage * _Nullable image) {
[downloadeds addObject:image];
if (downloadeds.count >= assets.count) {
if (progress) {
dispatch_async(dispatch_get_main_queue(), ^{
progress(1);
});
}
if (completed) {
dispatch_async(dispatch_get_main_queue(), ^{
completed(downloadeds);
});
}
}
}];
}
}
- (void)fetchPhotoWithAsset:(nonnull PHAsset *)asset
progress:(nullable void(^)(double progress))progress
completed:(nullable void(^)(BOOL avaliable, UIImage * _Nonnull image))completed {
UIImage *cachedImage = [self.imageCache objectForKey:asset.localIdentifier];
if (cachedImage) {
if (progress) {
progress(1);
}
if (completed) {
completed(YES, cachedImage);
}
return;
}
[self.requestOptions setProgressHandler: ^(double _progress, NSError *__nullable error, BOOL *stop, NSDictionary *__nullable info) {
dispatch_async(dispatch_get_main_queue(), ^{
if (progress) {
progress(_progress);
}
});
}];
PHImageRequestID requestID = [[PHImageManager defaultManager] requestImageForAsset:asset targetSize:PHImageManagerMaximumSize contentMode:PHImageContentModeDefault options:self.requestOptions resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {
if (result) {
[self.imageCache setObject:result forKey:asset.localIdentifier];
}
BOOL downloadFinined = ![[info objectForKey:PHImageCancelledKey] boolValue] && ![info objectForKey:PHImageErrorKey] && ![[info objectForKey:PHImageResultIsDegradedKey] boolValue];
BOOL isInCloudKey = [[info objectForKey:PHImageResultIsInCloudKey] boolValue];
// 从iCloud下载图片
if (result && downloadFinined) {
dispatch_async(dispatch_get_main_queue(), ^{
if (completed) {
completed(YES, result);
}
});
} else if (isInCloudKey && !result) {
UIImage *image = [self.imageCache objectForKey:asset.localIdentifier];
if (image) {
dispatch_async(dispatch_get_main_queue(), ^{
if (completed) {
completed(YES, image);
}
});
}
}
}];
[self.imageRequestIDs setObject:@(requestID) forKey:asset.localIdentifier];
}
- (void)checkPhotoIsAvaliableWithAsset:(nonnull PHAsset *)asset
progress:(nullable void(^)(double progress))progress
completed:(nullable void(^)(BOOL avaliable, UIImage * _Nonnull image))completed {
UIImage *cachedImage = [self.imageCache objectForKey:asset.localIdentifier];
if (cachedImage) {
if (progress) {
progress(1);
}
if (completed) {
completed(YES, cachedImage);
}
return;
}
PHImageRequestOptions *options = [PHImageRequestOptions new];
[options setNetworkAccessAllowed:NO];
[options setSynchronous:YES];
[options setProgressHandler: ^(double _progress, NSError *__nullable error, BOOL *stop, NSDictionary *__nullable info) {
dispatch_async(dispatch_get_main_queue(), ^{
if (progress) {
progress(_progress);
}
});
}];
PHImageRequestID requestID = [[PHImageManager defaultManager] requestImageForAsset:asset targetSize:PHImageManagerMaximumSize contentMode:PHImageContentModeDefault options:options resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {
if (result) {
[self.imageCache setObject:result forKey:asset.localIdentifier];
dispatch_async(dispatch_get_main_queue(), ^{
if (completed) {
completed(YES, result);
}
});
} else {
if (self.isNetworkAccessAllowed) {
[self fetchPhotoWithAsset:asset progress:nil completed:nil];
}
dispatch_async(dispatch_get_main_queue(), ^{
if (completed) {
completed(NO, result);
}
});
}
}];
[self.imageRequestIDs setObject:@(requestID) forKey:asset.localIdentifier];
}
- (void)cancelPhotoRequest {
for (NSNumber *obj in self.imageRequestIDs) {
[[PHImageManager defaultManager] cancelImageRequest:obj.intValue];
}
}
- (BOOL)isPhotoDownloaded:(PHAsset *)asset {
return true;
}
- (void)cancelPhotoRequestWithAsset:(PHAsset *)asset {
NSNumber *idNumber = [self.imageRequestIDs objectForKey:asset.localIdentifier];
if (!idNumber) {
return;
}
[[PHImageManager defaultManager] cancelImageRequest:idNumber.intValue];
}
- (void)clearCache {
[self.imageCache removeAllObjects];
[self.imageRequestIDs removeAllObjects];
}
#pragma mark - getter
- (NSMutableDictionary<NSString *,UIImage *> *)imageCache {
if (_imageCache == nil) {
_imageCache = [NSMutableDictionary dictionary];
}
return _imageCache;
}
- (NSMutableDictionary<NSString *,NSNumber *> *)imageRequestIDs {
if (_imageRequestIDs == nil) {
_imageRequestIDs = [NSMutableDictionary dictionary];
}
return _imageRequestIDs;
}
- (PHImageRequestOptions *)requestOptions {
if (_requestOptions == nil) {
_requestOptions = [PHImageRequestOptions new];
[_requestOptions setNetworkAccessAllowed:YES];
}
return _requestOptions;
}
@end
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUPhotoPicker.h
================================================
//
// HUPhotoPicker.h
// Pods
//
// Created by jewelz on 2017/7/28.
//
//
#ifndef HUPhotoPicker_h
#define HUPhotoPicker_h
#import <Photos/PHAsset.h>
#import "HUImagePickerViewController.h"
#endif /* HUPhotoPicker_h */
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUTakePhotoCell.h
================================================
//
// HUTakePhotoCell.h
// Pods
//
// Created by jewelz on 2017/9/15.
//
//
#import <UIKit/UIKit.h>
@interface HUTakePhotoCell : UICollectionViewCell
+ (NSString *)reuseIdentifier;
@end
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUTakePhotoCell.m
================================================
//
// HUTakePhotoCell.m
// Pods
//
// Created by jewelz on 2017/9/15.
//
//
#import "HUTakePhotoCell.h"
#import "UIView+HUConstraint.h"
#import "Asset.h"
@implementation HUTakePhotoCell
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
[self setupView];
}
return self;
}
- (void)setupView {
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.backgroundColor = [UIColor whiteColor];
[button setImage:UIImageMake(@"album_photograph_icon") forState:UIControlStateNormal];
button.userInteractionEnabled = NO;
[self.contentView addSubview:button];
[self.contentView addConstraintsWithVisualFormat:@"H:|[v0]|" views:@[button]];
[self.contentView addConstraintsWithVisualFormat:@"V:|[v0]|" views:@[button]];
}
+ (NSString *)reuseIdentifier {
return @"HUTakePhotoCell";
}
@end
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUToast.h
================================================
//
// Toast.h
// Pods
//
// Created by jewelz on 2017/9/16.
//
//
#import <UIKit/UIKit.h>
@interface HUToast : UIView
+ (void)makeToast:(NSString *)message inView:(UIView *)view;
@end
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUToast.m
================================================
//
// Toast.m
// Pods
//
// Created by jewelz on 2017/9/16.
//
//
#import "HUToast.h"
#import "UIView+HUConstraint.h"
@interface HUToast ()
@property (nonatomic, strong) UILabel *messageLabel;
@end
@implementation HUToast
+ (instancetype)sharedInstance {
static HUToast *toast = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
toast = [[self alloc] init];
});
return toast;
}
+ (void)makeToast:(NSString *)message inView:(UIView *)view {
[[HUToast sharedInstance] makeToast:message inView:view];
}
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:CGRectMake(0, 0, 160, 100)];
if (self) {
[self setupView];
}
return self;
}
- (void)layoutSubviews {
[super layoutSubviews];
self.messageLabel.frame = self.bounds;
}
- (void)makeToast:(NSString *)message inView:(UIView *)view {
if ([view.subviews containsObject:self]) {
return;
}
self.alpha = 0;
self.messageLabel.text = message;
self.center = CGPointMake(view.frame.size.width/2, view.frame.size.height/2);
[view addSubview:self];
[UIView animateWithDuration:0.25 animations:^{
self.alpha = 1;
} completion:^(BOOL finished) {
NSTimer *timer = [NSTimer timerWithTimeInterval:1 target:self selector:@selector(hide:) userInfo:nil repeats:NO];
[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
}];
}
- (void)hide:(NSTimer *)timer {
[UIView animateWithDuration:0.25 animations:^{
self.alpha = 0;
} completion:^(BOOL finished) {
[self removeFromSuperview];
[timer invalidate];
}];
}
- (void)setupView {
self.backgroundColor = [UIColor colorWithWhite:0 alpha:0.75];
self.layer.cornerRadius = 6;
self.layer.masksToBounds = YES;
[self addSubview:self.messageLabel];
}
- (UILabel *)messageLabel {
if (_messageLabel == nil) {
_messageLabel = [[UILabel alloc] init];
_messageLabel.textColor = [UIColor whiteColor];
_messageLabel.font = [UIFont systemFontOfSize:15];
_messageLabel.numberOfLines = 0;
_messageLabel.textAlignment = NSTextAlignmentCenter;
}
return _messageLabel;
}
@end
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/NSBundle+HUPicker.h
================================================
//
// NSBundle+HUPicker.h
// Pods
//
// Created by jewelz on 2017/7/28.
//
//
#import <Foundation/Foundation.h>
@interface NSBundle (HUPicker)
+ (instancetype)hu_bundle;
+ (UIImage *)hu_imageNamed:(NSString *)name;
@end
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/NSBundle+HUPicker.m
================================================
//
// NSBundle+HUPicker.m
// Pods
//
// Created by jewelz on 2017/7/28.
//
//
#import "NSBundle+HUPicker.h"
#import "HUImagePickerViewController.h"
@implementation NSBundle (HUPicker)
+ (instancetype)hu_bundle {
static NSBundle *bundle = nil;
if (bundle == nil) {
NSBundle *podBundle = [NSBundle bundleForClass:[HUImagePickerViewController class]];
bundle = [NSBundle bundleWithPath:[podBundle pathForResource:@"HUPhotoPicker" ofType:@"bundle"]];
}
return bundle;
}
+ (UIImage *)hu_imageNamed:(NSString *)name {
return [UIImage imageNamed:name inBundle:[self hu_bundle] compatibleWithTraitCollection:nil];
}
@end
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/UIBarButtonItem+HUButton.h
================================================
//
// UIBarButtonItem+HUButton.h
// Pods
//
// Created by jewelz on 2017/7/29.
//
//
#import <UIKit/UIKit.h>
@interface UIBarButtonItem (HUButton)
+ (instancetype)leftItemWithImage:(UIImage *)image target:(id)target action:(SEL)action;
@end
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/UIBarButtonItem+HUButton.m
================================================
//
// UIBarButtonItem+HUButton.m
// Pods
//
// Created by jewelz on 2017/7/29.
//
//
#import "UIBarButtonItem+HUButton.h"
@implementation UIBarButtonItem (HUButton)
+ (instancetype)leftItemWithImage:(UIImage *)image target:(id)target action:(SEL)action {
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(0, 0, 60, 44);
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
[button setImage:image forState:UIControlStateNormal];
[button addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
return [[UIBarButtonItem alloc] initWithCustomView:button];
}
@end
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/UIView+HUConstraint.h
================================================
//
// UIView+Constraint.h
// HUPhotoPicker
//
// Created by jewelz on 2017/7/28.
//
#import <UIKit/UIKit.h>
@interface UIView (HUConstraint)
- (void)addConstraintsWithVisualFormat:(nonnull NSString *)formate views:(nonnull NSArray <UIView *>*)views;
- (void)centerView:(nonnull UIView *)view;
- (void)centerXOffset:(CGFloat)offsetX forView:(nonnull UIView *)view;
- (void)centerYOffset:(CGFloat)offsetY forView:(nonnull UIView *)view;
@end
================================================
FILE: Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/UIView+HUConstraint.m
================================================
//
// UIView+Constraint.m
// HUPhotoPicker
//
// Created by jewelz on 2017/7/28.
//
#import "UIView+HUConstraint.h"
@implementation UIView (HUConstraint)
- (void)addConstraintsWithVisualFormat:(nonnull NSString *)formate views:(nonnull NSArray <UIView *>*)views {
if (views.count == 0) {
return;
}
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
__block NSString *key = @"";
[views enumerateObjectsUsingBlock:^(UIView * _Nonnull view, NSUInteger idx, BOOL * _Nonnull stop) {
view.translatesAutoresizingMaskIntoConstraints = NO;
key = [NSString stringWithFormat:@"v%zd", idx];
[dict setObject:view forKey:key];
}];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:formate options:0 metrics:nil views:dict]];
}
- (void)centerView:(nonnull UIView *)view {
[self centerXOffset:0 forView:view];
[self centerYOffset:0 forView:view];
}
- (void)centerXOffset:(CGFloat)offsetX forView:(nonnull UIView *)view {
view.translatesAutoresizingMaskIntoConstraints = NO;
[self addConstraint:[NSLayoutConstraint constraintWithItem:view attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeCenterX multiplier:1 constant:offsetX]];
}
- (void)centerYOffset:(CGFloat)offsetY forView:(nonnull UIView *)view {
[self addConstraint:[NSLayoutConstraint constraintWithItem:view attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeCenterY multiplier:1 constant:offsetY]];
}
@end
================================================
FILE: Example/Pods/HUPhotoPicker/LICENSE
================================================
MIT License
Copyright (c) 2017 Jewelz Hu
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: Example/Pods/HUPhotoPicker/README.md
================================================
# HUPhotoPicker
[](https://travis-ci.org/hujewelz/HUPhotoPicker)
[](http://cocoapods.org/pods/HUPhotoPicker)
[](http://cocoapods.org/pods/HUPhotoPicker)
[](http://cocoapods.org/pods/HUPhotoPicker)
## Example
To run the example project, clone the repo, and run `pod install` from the Example directory first.
## Requirements
## Installation
HUPhotoPicker is available through [CocoaPods](http://cocoapods.org). To install
it, simply add the following line to your Podfile:
```ruby
pod "HUPhotoPicker"
```
## Author
Jewelz Hu, hujewelz@163.com
## License
HUPhotoPicker is available under the MIT license. See the LICENSE file for more info.
================================================
FILE: Example/Pods/Local Podspecs/HUPhotoBrowser.podspec.json
================================================
{
"name": "HUPhotoBrowser",
"version": "1.3.0",
"summary": "photo browser for ios, which can browse Photo library and web image",
"homepage": "https://github.com/hujewelz/HUPhotoBrowser",
"license": "MIT",
"authors": {
"Jewelz Hu": "https://github.com/hujewelz/HUPhotoBrowser"
},
"platforms": {
"ios": "7.0"
},
"source": {
"git": "https://github.com/hujewelz/HUPhotoBrowser.git",
"tag": "1.3.0"
},
"source_files": "HUPhotoBrowser/**/*.{h,m}",
"requires_arc": true,
"frameworks": [
"UIKit",
"Photos",
"AssetsLibrary"
],
"public_header_files": [
"HUPhotoBrowser/HUPhotoBrowser.h",
"HUPhotoBrowser/HUPhotoPicker/HUImagePickerViewController.h",
"HUPhotoBrowser/HUWebImageDownloader/{UIImageView+HUWebImage,HUWebImageDownloader}.h"
],
"dependencies": {
"SVProgressHUD": [
]
}
}
================================================
FILE: Example/Pods/Pods.xcodeproj/project.pbxproj
================================================
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
02735D8436E3DB9E7EA79694C58BE6F4 /* UIImage+HUExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 0AE18F7ECC383B6860F958FFE3E22296 /* UIImage+HUExtension.m */; };
053D329FAA96B749E2FD97CB6D096A85 /* SDWebImagePrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 00C800A6F02590F678225961616F0E14 /* SDWebImagePrefetcher.h */; settings = {ATTRIBUTES = (Public, ); }; };
0615F5F2ABF3C6D02B66F471EAEE37BA /* SDWebImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 441D9E0D8C2033CBCB8EBD66CB4EDC11 /* SDWebImageManager.m */; };
0801E52B09E882BB1E2441347E566214 /* SVRadialGradientLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = EBB4E8043E0015F89FDA55D0CA569CC4 /* SVRadialGradientLayer.m */; };
086F8C085ABB04F9C8C5C422DFDF1412 /* SDWebImageCompat.m in Sources */ = {isa = PBXBuildFile; fileRef = 545C51AB7AB0CB14DF4ECCA613BAFEA5 /* SDWebImageCompat.m */; };
0A4BFCC90ABBFF825C70EFE9F9B7CD34 /* HUTakePhotoCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D9EB29BC0DA93559B0D44D7C78426356 /* HUTakePhotoCell.m */; };
0B674BD1EC01B2F2E5B86BC361C2032B /* UIImage+MultiFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A68BB2127299F79461E6F6B3AB52869 /* UIImage+MultiFormat.m */; };
0CE6A5C6B62A9FD71E66BD0B202273A4 /* SVProgressHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C51BE05478A10C56BD6FF53686494E7 /* SVProgressHUD.m */; };
1241C92252F5500B6FA1782A66AF6432 /* HUPhotoBrowser-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A524D07B783D67E8F7BC7A33A47770AE /* HUPhotoBrowser-dummy.m */; };
12B9BC6E6EC8792296CED4F0C56ED6E2 /* nav_back@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9B6C41B0E78CD3F337D9DA8131A22914 /* nav_back@3x.png */; };
13944C33461BCA0868BC17FC8D7E6252 /* NSImage+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 21F56FEF368B49D93D7E4F418AAE8296 /* NSImage+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
152BF7BE0AA241A5C6BE4F608CA9E6A0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A686FEEDCC01B1622154D0E4BEB71DAA /* Foundation.framework */; };
154E25C8A639BD2855EF6ED1CE1311D0 /* HUAlbumTableViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D9DC81E5EBE3E1913E938646E03C2E9 /* HUAlbumTableViewController.h */; settings = {ATTRIBUTES = (Project, ); }; };
1B055DEC5A93B3430137EDFD63E1A62E /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F8305A2C6089188628736DDD2F370A /* ImageIO.framework */; };
1C531B0E4A281E5F1CCFD426B5C59F50 /* HUWebImageDownloadOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 91040B2B94B6447A1D4D9387C627B02A /* HUWebImageDownloadOperation.h */; settings = {ATTRIBUTES = (Project, ); }; };
1D14675094EB2982854BBDE56D642F7F /* album_close_icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3A7B323C6C7AA5954DD661A569FA77CD /* album_close_icon@2x.png */; };
1DA19173FBBEE7D11EBFD489D002ECB3 /* HUPhotoAlbum.m in Sources */ = {isa = PBXBuildFile; fileRef = F527FE5669CA594E88CADC793838CDAF /* HUPhotoAlbum.m */; };
1E766D1CE8821B1AA0F0BA3769BD750E /* HUImageGridViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = AFDEF6B3F68ABAD646B955014670B32D /* HUImageGridViewController.m */; };
1E868873A8CF56F277977C0F28D6D54D /* HUImageSelectModel.m in Sources */ = {isa = PBXBuildFile; fileRef = D2A1832C622E09402E5443E39EEB7C17 /* HUImageSelectModel.m */; };
24AC460FDE1C0610A111CCF67FC835D8 /* image_selected@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C137D78D8E705BFC3E79578F84BA3413 /* image_selected@2x.png */; };
29CD90FDAAB316F204CEEAFB5564A5A7 /* SDWebImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B2BFA65B10054FC241F1C3ABB96E68B /* SDWebImageDownloader.m */; };
2AC999D34D8A6DEECCC2D91261A67865 /* SVIndefiniteAnimatedView.h in Headers */ = {isa = PBXBuildFile; fileRef = 7787CCB41A739DF35AC7AF65005F5384 /* SVIndefiniteAnimatedView.h */; settings = {ATTRIBUTES = (Public, ); }; };
2BD3489F5F1D3B0D47C57D3506A372F8 /* HUImageGridCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 13320B73B1EEDEC7054B6BA67D32D4EB /* HUImageGridCell.m */; };
2C61EAC4DA7890F245FBD68AE417C4CA /* image_selected@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = D68944CA5223A84064F95C057951163C /* image_selected@3x.png */; };
2FFFCBCE6865FEDD745574FD47A69FD6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A686FEEDCC01B1622154D0E4BEB71DAA /* Foundation.framework */; };
35C11FA48B4F1C25AEC21C72FFDF51B5 /* nav_back@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C3D0023A3AA419520B006770CC4B9FD4 /* nav_back@2x.png */; };
35D8BA8171A586B59D48614BCBC18DDA /* UIView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = AF0D9B0557E593C2184912CC905AA5E1 /* UIView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
36081993A921C1EECB74335B1EE0F34C /* UIButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = F48C3A3A0784AB826CDC951A03656357 /* UIButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
384A9AAA97DAB3A480C1DD84170AD1A8 /* NSImage+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 919847A9F94E2FACD0E3E3CB08A71F90 /* NSImage+WebCache.m */; };
3A7A90BB67EA1197192AC12C57CB9585 /* Jurisdiction_icon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 0C2818BB53593BDAB01B9BE25C54FB07 /* Jurisdiction_icon@3x.png */; };
3D9390CD8F716E217F034C87639ABBAD /* HUToast.m in Sources */ = {isa = PBXBuildFile; fileRef = BEF559DE20B55C84DA7DE88F2DC3674F /* HUToast.m */; };
3E845D3F5BC22756CFE33576ECF38EDF /* SVProgressAnimatedView.h in Headers */ = {isa = PBXBuildFile; fileRef = 865ECDF17E5F581EC036DA88C8EA5EC6 /* SVProgressAnimatedView.h */; settings = {ATTRIBUTES = (Public, ); }; };
400FEBC5B5E78F7BC76B9FB21DC02912 /* album_photograph_icon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 73B08799CBB6E6C520DFDC31692B4B3A /* album_photograph_icon@3x.png */; };
41E3EC52537EB6280D7DE2DFEB19F369 /* SDImageCacheConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 61CE96D2977D382BDBEF6EB6C360CAA5 /* SDImageCacheConfig.m */; };
441F9F02296486E9F50BB59E0105966E /* Photos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 804666883EC6B1A30EE2C0C21974EA4E /* Photos.framework */; };
44315C1D5AA06EC4516CC016F4505054 /* UIView+HUConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = F0DACE5743EF9203F95EDC4F0FF77FC3 /* UIView+HUConstraint.m */; };
4B8779A43D1E81C6FFE4593B5F8D6288 /* NSBundle+HUPicker.h in Headers */ = {isa = PBXBuildFile; fileRef = FB68DA04853D2044F150D9165DD4AD40 /* NSBundle+HUPicker.h */; settings = {ATTRIBUTES = (Project, ); }; };
4DAB2E3EAFE5D4EF3806D2A76036F4FF /* photo_button_selected@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 703F045B6E13F9E59046173B939701EC /* photo_button_selected@2x.png */; };
527E140533AFB0472E5D59561053EDD2 /* UIButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = DE8F32142A47511484566FE4535744C4 /* UIButton+WebCache.m */; };
53A14922CA39A52C1926D0246C2BB1F0 /* HUAlbumCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E14F497E11E651AC49123BA06F5ED79 /* HUAlbumCell.h */; settings = {ATTRIBUTES = (Project, ); }; };
580058559154D3B6A975DDAE7EFBA3C5 /* SDWebImageCompat.h in Headers */ = {isa = PBXBuildFile; fileRef = 0687350693844A2E9E522786088D90F3 /* SDWebImageCompat.h */; settings = {ATTRIBUTES = (Public, ); }; };
598BA4AEFD2B722B093B57F23D516DF1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A686FEEDCC01B1622154D0E4BEB71DAA /* Foundation.framework */; };
5A90BA62A73A14336AE2A28E5D320B0A /* HUImagePickerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D6B30683558D738F4DE543582F7189B1 /* HUImagePickerViewController.m */; };
5BA328FA29936FC6602FA2AC66CA7023 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A686FEEDCC01B1622154D0E4BEB71DAA /* Foundation.framework */; };
5D4A489B188F4BCA1B89DE0F17BB8FA7 /* HUWebImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = BBCE812D3697587EE47CA1B5C2F315CC /* HUWebImageDownloader.m */; };
5DCEE92ACF66523B2A394A8FCD937EA5 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EE05B0A93E7AC961E35AFD6B72A43F53 /* UIKit.framework */; };
605A413ED7A7834E43679FB47E2C1110 /* HUPhotoManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0DA652A6053BD21B7B631581A9AE77F8 /* HUPhotoManager.m */; };
6169115EC8E6EFE24CFCEF5D1E02D736 /* SDWebImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = F475A7C707C8FB377AC19C870CEAFFF2 /* SDWebImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; };
62E71CA9C06816E2FB7E729AF2283634 /* HUNavTitleView.h in Headers */ = {isa = PBXBuildFile; fileRef = A2D3BF58C096E8B3557DBD41DD70D03B /* HUNavTitleView.h */; settings = {ATTRIBUTES = (Project, ); }; };
641BF2B026B2E09570949CEAAA1CEC79 /* SDWebImagePrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F0FBC46E4BB9737994EE2E35E6E07A4 /* SDWebImagePrefetcher.m */; };
65B63AB881AA74C306596717363C5E0F /* UIImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 20FB595B908B4DA42B12C10B3B74A2FA /* UIImageView+WebCache.m */; };
65CEECC1600B3EB655A0EB242D354A88 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A686FEEDCC01B1622154D0E4BEB71DAA /* Foundation.framework */; };
66025EBA8B6D98C392958C8520F6D7E5 /* HUPHAuthorizationNotDeterminedViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C6EAE39BE0B78BD51FA0C8578DFC6215 /* HUPHAuthorizationNotDeterminedViewController.m */; };
66DECE27B5EF416042C9FF26AD43EF00 /* HUToast.h in Headers */ = {isa = PBXBuildFile; fileRef = 9103C49F8D840C91E18ED85756AB0BBB /* HUToast.h */; settings = {ATTRIBUTES = (Project, ); }; };
671D941A03C1E763513AAA4857DC51BD /* HUImageGridCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 69AED5B69BC460F980416E86560D5348 /* HUImageGridCell.h */; settings = {ATTRIBUTES = (Project, ); }; };
694DC69113D8FC517034EC5FBC00950A /* HUImagePickerViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E8491134C958BC38C9F082D5CE0C36B /* HUImagePickerViewController.h */; settings = {ATTRIBUTES = (Public, ); }; };
6A2EE1939C21B95571A77B65094E505D /* album_close_icon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = C86AB20D8D71D526A8202973E9A1F545 /* album_close_icon@3x.png */; };
74302A6E58181E6596A1BB389365F43F /* HUAlbumTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C61601A866B0B6F3B1CC15879939A46 /* HUAlbumTableViewController.m */; };
746F598854C3DB3E9DB0D0726148FD94 /* hu_const.h in Headers */ = {isa = PBXBuildFile; fileRef = F157F1452E6D4EAE236DA49C7C0E894B /* hu_const.h */; settings = {ATTRIBUTES = (Project, ); }; };
768C9F5C502E68F2914072040FFA71E1 /* NSData+ImageContentType.m in Sources */ = {isa = PBXBuildFile; fileRef = D4E456D947C1E3759C029BA645213B74 /* NSData+ImageContentType.m */; };
78DBC6F454ABC5112579DF6275C4461A /* Jurisdiction_icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C68E7235956D835ADFBE6514D8E96EFA /* Jurisdiction_icon@2x.png */; };
79996630838668D04EA3BFB57560995E /* HUImageSelectModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CE6CBF80A2939FE6F1C7C149A1C1F4A /* HUImageSelectModel.h */; settings = {ATTRIBUTES = (Project, ); }; };
7C3459B05690C13218F9F23C827FE21A /* UIView+frame.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FBCA5CAA0922972DB941FA957456C36 /* UIView+frame.m */; };
7E071687325BF5B296A25A75974490C3 /* SVProgressHUD-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B72FB7B35A719AFAD18FAA1C4F6EDAC /* SVProgressHUD-dummy.m */; };
7E813E032E1B31658FCF923F78B479B5 /* HUPHAuthorizationNotDeterminedView.h in Headers */ = {isa = PBXBuildFile; fileRef = 02090B8A152D8EA57D43A1D41FC3FAE1 /* HUPHAuthorizationNotDeterminedView.h */; settings = {ATTRIBUTES = (Project, ); }; };
814F5D3D6EE077DCD1A25EDF6DB63CAA /* UIView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C796604D26CF43514817953954C5AF9 /* UIView+WebCache.m */; };
822C18350931407D1EE15B2BB719E3F3 /* HUPhotoAlbum.h in Headers */ = {isa = PBXBuildFile; fileRef = 10F59DBE0AF6AAF69E10F159B417661A /* HUPhotoAlbum.h */; settings = {ATTRIBUTES = (Project, ); }; };
8392C6FF89FEE6B0FB3042AA0925313D /* HUPhotoPicker.h in Headers */ = {isa = PBXBuildFile; fileRef = D49449D610A39E04D4C2A121F5E4FD32 /* HUPhotoPicker.h */; settings = {ATTRIBUTES = (Public, ); }; };
83C575C5E394FD4869BEAE2FE3FD5B02 /* UIImage+MultiFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = F69008F697735A74BE8C45DDAEF29A41 /* UIImage+MultiFormat.h */; settings = {ATTRIBUTES = (Public, ); }; };
841A407A7C5DC32F91DA0EB3D8014C2E /* SVProgressAnimatedView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BFA6105989E1129CE256E52520269E1 /* SVProgressAnimatedView.m */; };
86FB723DD88559EC1E288B9FA5B7EE4A /* HUPhotoManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 13B5E72269741E51831AA307A834D172 /* HUPhotoManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
873C75AB9B12A76E90DAF9EAB44A991C /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C4F9ECEA64607144F85BC468769B68C2 /* QuartzCore.framework */; };
8A96738F5A80EDF3797B7716F8F12E63 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A686FEEDCC01B1622154D0E4BEB71DAA /* Foundation.framework */; };
8B6C609B4E035A892066DC53BBFB119E /* SDImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 17F5F8ED6AD15C8E85169BF85D772348 /* SDImageCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
8BAB9550CAA0B5A7EA5F2F828130E136 /* SDWebImageDownloaderOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 45587FF486C1EEDF876807B8E8CC935E /* SDWebImageDownloaderOperation.m */; };
8CFB4E2A821C8946F972B52F14E1EAB3 /* HUPHAuthorizationNotDeterminedView.m in Sources */ = {isa = PBXBuildFile; fileRef = 56232916A8D191E1DEB3601409A09124 /* HUPHAuthorizationNotDeterminedView.m */; };
8DC69158558D4AB7EE00575DA0CDD675 /* UIImageView+HighlightedWebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B9BF87558582615F2810E72AC339206 /* UIImageView+HighlightedWebCache.m */; };
8E653B2F5B6D7E3A285833A5888AC3D6 /* HUAlbumCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 51C9CC5C6680C06B24AEC9DF433CC87C /* HUAlbumCell.xib */; };
909372963DBA08C68992835EB86061EA /* NSData+ImageContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = D958A56255E71ADC24D80C094DAC1A7A /* NSData+ImageContentType.h */; settings = {ATTRIBUTES = (Public, ); }; };
91AB44B5B7DB95A7BA5B5B5D3DAF775D /* Asset.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A7056DF7B1C83091325D3DF07123CB6 /* Asset.h */; settings = {ATTRIBUTES = (Project, ); }; };
91D498E3B268ECC94289A8EBE57FDB14 /* HUPhotoBrowserCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B6A27FBC85A69196B8297F1235D2027 /* HUPhotoBrowserCell.h */; settings = {ATTRIBUTES = (Project, ); }; };
935F70349715265D86E8FD0597447AC5 /* SDWebImageDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 5440CAABC38EE84F75266A36CB50E346 /* SDWebImageDecoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
93E2D3CD516D98158E5D06EAD5EF4868 /* album_open_icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A4D56D45B44D3173C51062AD8CE60193 /* album_open_icon@2x.png */; };
97EB8C5178E22A872B36A788152AA571 /* SVProgressHUD.h in Headers */ = {isa = PBXBuildFile; fileRef = 753A0AD8EE029D65DDC636A68F7A5D56 /* SVProgressHUD.h */; settings = {ATTRIBUTES = (Public, ); }; };
98C136139F278CFA1281924A853F23F0 /* HUPhotoBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = F7A0250C4B3D552BA4CADE666439B13D /* HUPhotoBrowser.m */; };
99B738B37205FF969C2BDB51627CD71A /* UIView+WebCacheOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 08214ABFFF911AC79EAD4722979DDB29 /* UIView+WebCacheOperation.h */; settings = {ATTRIBUTES = (Public, ); }; };
9BC35B29E439FAC7E11246F5898D0BD1 /* SDWebImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F057D640CB9E60D7D53423DD283C9A4B /* SDWebImage-dummy.m */; };
9BDE24BE44A77B9E0CB09814CE3941E3 /* UIImageView+HighlightedWebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 286D66F5AAD3686AC8D9AB22677CBCE9 /* UIImageView+HighlightedWebCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
9EA3B8E135E065F0914BEB70EDFE6775 /* SDImageCacheConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 19064ABD4D32F1FA7743601441F135D1 /* SDImageCacheConfig.h */; settings = {ATTRIBUTES = (Public, ); }; };
A0CC6C2D247E55AE7E6E4CE552C7B270 /* photo_button_normal@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = BDADDF678F3ECC6FEB0547730DB2AF2D /* photo_button_normal@3x.png */; };
A0DB532409564F8DF18924EA2CBB0929 /* SDWebImageDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E825E9268F7A21ED4A10CACA6DAC8C9 /* SDWebImageDecoder.m */; };
A2B42E2B533938834E83B3957FA83837 /* AssetsLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2F66A76856B26ADEC9C3296F0FE0B5A /* AssetsLibrary.framework */; };
A3E65E80FAA621CA37687E721E440540 /* album_photograph_icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C28CA3BBDBA583094087A2890A7C7FE0 /* album_photograph_icon@2x.png */; };
A3F0B52FC22E648C3D8783934613B1BA /* photo_button_normal@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B6BCF7F14A2A289DFB89DA8D608C1796 /* photo_button_normal@2x.png */; };
A5D6462FB49CAFF292C5EDE70BD65784 /* Pods-HUPhotoBrowser Demo-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A39260F4921A34460754C96BF086B62 /* Pods-HUPhotoBrowser Demo-dummy.m */; };
A60F3472AD558A5C66E269AD32F0A160 /* HUAlbumCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BAD901633A161CB4C35C1A9466869C3 /* HUAlbumCell.m */; };
A63D39295D405569DCE488454011DBAB /* HUTakePhotoCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 1277B0BF2774C41E61B74F8F3F084D87 /* HUTakePhotoCell.h */; settings = {ATTRIBUTES = (Project, ); }; };
A7DB2E7B837586BE06497232D65B3BA8 /* SDWebImageDownloaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DCC6D86420229BFAB1F056871A12607 /* SDWebImageDownloaderOperation.h */; settings = {ATTRIBUTES = (Public, ); }; };
AA2B867A047A62006345CABCFC932C81 /* UIImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F476C600975412D143CA6797F9B48AF /* UIImageView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
B45672895B70B90CBB854A69850A112F /* SDWebImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C6DFDC2D8A016511F4AED26F3544CF6 /* SDWebImageManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
B68A1F5A13355D589240D8E774D7F10D /* UIImageView+HUWebImage.h in Headers */ = {isa = PBXBuildFile; fileRef = C843E13541704A189B1DAD2DBC088F04 /* UIImageView+HUWebImage.h */; settings = {ATTRIBUTES = (Public, ); }; };
BBAEBB6AF61E7D4AD565BBF9FF8A16DB /* HUPhotoPicker-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = EBCCDDCFD3DA396C62681DC281319765 /* HUPhotoPicker-dummy.m */; };
BC0BFD421A71955FE7C83DC3EAC0BBCB /* HUWebImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 293ACC9890E0C871FC279737AA8EF8D3 /* HUWebImage.h */; settings = {ATTRIBUTES = (Project, ); }; };
BD16BBCD6291F236455D1FBC72D33281 /* UIImage+HUExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D96800D9444348C9EF862C9797663E8 /* UIImage+HUExtension.h */; settings = {ATTRIBUTES = (Project, ); }; };
C3518915CEB45A87EF5DCAFC9F93696E /* HUWebImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = C9B410728A89C72F649567CB946115D1 /* HUWebImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; };
C58B4014568B8705E8A620707CA28F51 /* UIImageView+HUWebImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 0ACFB56952A75327CCF7A9D285F61319 /* UIImageView+HUWebImage.m */; };
C7CA5364C6A3B19A1590369A9FC85A65 /* HUImageGridViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = BE78CD177B2F07E683BFE658848BA2A0 /* HUImageGridViewController.h */; settings = {ATTRIBUTES = (Project, ); }; };
C86C2E7953283ED2B5B845B676B038AC /* album_open_icon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = A316B140C3B1474605CDE6512EA540FA /* album_open_icon@3x.png */; };
C8FAE843C4BA0303449B6E4D579EDBED /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EE05B0A93E7AC961E35AFD6B72A43F53 /* UIKit.framework */; };
CDBA2121509F504062E1BDF268CB6D58 /* UIImage+GIF.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B38EF6EE351405BFF1A723C71A0CF97 /* UIImage+GIF.m */; };
CDC033EC56BCF03AB75E7DCB77B8AC39 /* HUPhotoBrowserCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8EC596D9BEBB2A682737B6979B9945 /* HUPhotoBrowserCell.m */; };
D02959EAAE84300F7DFFF1EF28CD4C2B /* NSBundle+HUPicker.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AE15A73A5C43C841A105D61C78AC511 /* NSBundle+HUPicker.m */; };
D6B3DEABE7F25211FF3923A5F2116532 /* HUPHAuthorizationNotDeterminedViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 49A6EFC2685278E2DF77BF2A0DDBE083 /* HUPHAuthorizationNotDeterminedViewController.h */; settings = {ATTRIBUTES = (Project, ); }; };
D779890F7370C5C5554D8094AA4C5A13 /* UIBarButtonItem+HUButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 94E349128851E2C8898702890C40F4F9 /* UIBarButtonItem+HUButton.m */; };
D9746CBC85CFFE20D7E72B131EB4F8D0 /* UIBarButtonItem+HUButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A9A3289CAC5E7F9A6A2E7A0833F5790 /* UIBarButtonItem+HUButton.h */; settings = {ATTRIBUTES = (Project, ); }; };
D9D4B596A996B4F4AC367E8CA9209AF8 /* UIView+HUConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DC223C3C761C783185E1FFB1A7A05E3 /* UIView+HUConstraint.h */; settings = {ATTRIBUTES = (Project, ); }; };
DBC6A6834B7CA85141141A9FC59E08C7 /* Photos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 804666883EC6B1A30EE2C0C21974EA4E /* Photos.framework */; };
DC5D856B421A8DF82260E61BF79F08E8 /* HUWebImageDownloadOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 94DDDEAEFD125C897C744D5C9F295F28 /* HUWebImageDownloadOperation.m */; };
DF3321CF3E41B83F87AAD7F08BC3C764 /* SVIndefiniteAnimatedView.m in Sources */ = {isa = PBXBuildFile; fileRef = A6872A62128DF0B9C337DD8EB551B99F /* SVIndefiniteAnimatedView.m */; };
E1A09732EB1D4DEE543E57BC9E75B181 /* UIView+frame.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EB976DB4DE69AA197DACE8A0AE44DEA /* UIView+frame.h */; settings = {ATTRIBUTES = (Project, ); }; };
E283E46931867F7EBF81F3B55978CE76 /* SDImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = D7387A90A4E52BF5ADF9DC82A56D31E2 /* SDImageCache.m */; };
E91D8B354A89AC323FFB8E81B00780ED /* UIImage+GIF.h in Headers */ = {isa = PBXBuildFile; fileRef = E31DD5A02B0033EA77659E77DFEDD15A /* UIImage+GIF.h */; settings = {ATTRIBUTES = (Public, ); }; };
EA5C2EE172234721DA4FFBE1E3EFAA18 /* HUNavTitleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CA2109BCE58B9B9827024FE7D6C2905 /* HUNavTitleView.m */; };
EB3B763E8A293AC718BF7B221FCAF395 /* UIView+WebCacheOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 34B7D74B34C33201DFB7105711BABE76 /* UIView+WebCacheOperation.m */; };
F22AFC90A1EA932CB3EB26F29B6181C5 /* photo_button_selected@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = E25CC34B1906BD764E3B6AF5807B0175 /* photo_button_selected@3x.png */; };
F7E2ED980B54D1F1209B33A72877F145 /* Pods-HUPhotoBrowser DemoTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 224779CFFFD95B16021CB8EA8C4F9BBD /* Pods-HUPhotoBrowser DemoTests-dummy.m */; };
FCB0CF77447303B45928AB44BA7B4973 /* HUPhotoBrowser.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A5EB8FFE503BA9B41DE8F099A20CC64 /* HUPhotoBrowser.h */; settings = {ATTRIBUTES = (Public, ); }; };
FD49D93DB71B5A970FEE2A166A3D24D0 /* SVRadialGradientLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = C1D4A6B3E3FA774837EEE83CCC78A605 /* SVRadialGradientLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
FDB4A416E19DF7AAF581FD0A2D0597A8 /* SDWebImageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FFA0F53632825CF88AB2EB6B22A7F07 /* SDWebImageOperation.h */; settings = {ATTRIBUTES = (Public, ); }; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
1DF3B04FD0110B3430E6B386516516E5 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */;
proxyType = 1;
remoteGlobalIDString = E5C155FFDDFCD74237E4D301D504CD59;
remoteInfo = SVProgressHUD;
};
790BB20FF7770EDCDBFB4B49BC5FB78B /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */;
proxyType = 1;
remoteGlobalIDString = 156B947C8425573AB59F6FB4E33470DD;
remoteInfo = SDWebImage;
};
951FFE9A507AEB3DD9B0AC20F7350526 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */;
proxyType = 1;
remoteGlobalIDString = E5C155FFDDFCD74237E4D301D504CD59;
remoteInfo = SVProgressHUD;
};
B3BDC557D51B9B0E3D9C0C7BDED7FF6F /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */;
proxyType = 1;
remoteGlobalIDString = B006CA1FB9E74F505B0BC5CD2168B0BA;
remoteInfo = HUPhotoPicker;
};
DE2931CB4A9D219A88807CD989EBA434 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */;
proxyType = 1;
remoteGlobalIDString = 4772B77F4E0FA787DC9FD7562D377C5F;
remoteInfo = "HUPhotoPicker-HUPhotoPicker";
};
EB5B8CC38E68E7B676CB7C254E06C558 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */;
proxyType = 1;
remoteGlobalIDString = F61EABE2A50F74AE114AA3F4367121A8;
remoteInfo = HUPhotoBrowser;
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
00C800A6F02590F678225961616F0E14 /* SDWebImagePrefetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImagePrefetcher.h; path = SDWebImage/SDWebImagePrefetcher.h; sourceTree = "<group>"; };
02090B8A152D8EA57D43A1D41FC3FAE1 /* HUPHAuthorizationNotDeterminedView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HUPHAuthorizationNotDeterminedView.h; path = HUPhotoPicker/Classes/HUPHAuthorizationNotDeterminedView.h; sourceTree = "<group>"; };
0687350693844A2E9E522786088D90F3 /* SDWebImageCompat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCompat.h; path = SDWebImage/SDWebImageCompat.h; sourceTree = "<group>"; };
08214ABFFF911AC79EAD4722979DDB29 /* UIView+WebCacheOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCacheOperation.h"; path = "SDWebImage/UIView+WebCacheOperation.h"; sourceTree = "<group>"; };
0ACFB56952A75327CCF7A9D285F61319 /* UIImageView+HUWebImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "UIImageView+HUWebImage.m"; sourceTree = "<group>"; };
0AE18F7ECC383B6860F958FFE3E22296 /* UIImage+HUExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "UIImage+HUExtension.m"; sourceTree = "<group>"; };
0C2818BB53593BDAB01B9BE25C54FB07 /* Jurisdiction_icon@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "Jurisdiction_icon@3x.png"; path = "HUPhotoPicker/Assets/Jurisdiction_icon@3x.png"; sourceTree = "<group>"; };
0CECA8E62DF6B3D72EBDAB13B981D010 /* libHUPhotoBrowser.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libHUPhotoBrowser.a; path = libHUPhotoBrowser.a; sourceTree = BUILT_PRODUCTS_DIR; };
0D54E71FD9E8FE32D095B20904DE434C /* SVProgressHUD.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SVProgressHUD.xcconfig; sourceTree = "<group>"; };
0DA652A6053BD21B7B631581A9AE77F8 /* HUPhotoManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HUPhotoManager.m; path = HUPhotoPicker/Classes/HUPhotoManager.m; sourceTree = "<group>"; };
0F6B03278E85DE641CB5405289304121 /* libSVProgressHUD.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libSVProgressHUD.a; path = libSVProgressHUD.a; sourceTree = BUILT_PRODUCTS_DIR; };
10F59DBE0AF6AAF69E10F159B417661A /* HUPhotoAlbum.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HUPhotoAlbum.h; path = HUPhotoPicker/Classes/HUPhotoAlbum.h; sourceTree = "<group>"; };
1277B0BF2774C41E61B74F8F3F084D87 /* HUTakePhotoCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HUTakePhotoCell.h; path = HUPhotoPicker/Classes/HUTakePhotoCell.h; sourceTree = "<group>"; };
13320B73B1EEDEC7054B6BA67D32D4EB /* HUImageGridCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HUImageGridCell.m; path = HUPhotoPicker/Classes/HUImageGridCell.m; sourceTree = "<group>"; };
13917CA1D52B803DA4188D30BE4F189D /* Pods-HUPhotoBrowser DemoTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-HUPhotoBrowser DemoTests.release.xcconfig"; sourceTree = "<group>"; };
13B5E72269741E51831AA307A834D172 /* HUPhotoManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HUPhotoManager.h; path = HUPhotoPicker/Classes/HUPhotoManager.h; sourceTree = "<group>"; };
14E9CC31888031CF04ADADBFC41C548F /* Pods-HUPhotoBrowser DemoTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-HUPhotoBrowser DemoTests-acknowledgements.markdown"; sourceTree = "<group>"; };
17F3D3D171070259473E37C17EC3308E /* HUPhotoPicker.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = HUPhotoPicker.bundle; path = HUPhotoPicker.bundle; sourceTree = BUILT_PRODUCTS_DIR; };
17F5F8ED6AD15C8E85169BF85D772348 /* SDImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCache.h; path = SDWebImage/SDImageCache.h; sourceTree = "<group>"; };
183AA6FF36B86D6F3D84C9F33EC0E537 /* Pods-HUPhotoBrowser DemoTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-HUPhotoBrowser DemoTests-acknowledgements.plist"; sourceTree = "<group>"; };
19064ABD4D32F1FA7743601441F135D1 /* SDImageCacheConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCacheConfig.h; path = SDWebImage/SDImageCacheConfig.h; sourceTree = "<group>"; };
1A5EB8FFE503BA9B41DE8F099A20CC64 /* HUPhotoBrowser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HUPhotoBrowser.h; path = HUPhotoBrowser/HUPhotoBrowser.h; sourceTree = "<group>"; };
1B6A27FBC85A69196B8297F1235D2027 /* HUPhotoBrowserCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HUPhotoBrowserCell.h; path = HUPhotoBrowser/HUPhotoBrowserCell.h; sourceTree = "<group>"; };
1C51BE05478A10C56BD6FF53686494E7 /* SVProgressHUD.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SVProgressHUD.m; path = SVProgressHUD/SVProgressHUD.m; sourceTree = "<group>"; };
1D96800D9444348C9EF862C9797663E8 /* UIImage+HUExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UIImage+HUExtension.h"; sourceTree = "<group>"; };
1EB976DB4DE69AA197DACE8A0AE44DEA /* UIView+frame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+frame.h"; path = "HUPhotoBrowser/UIView+frame.h"; sourceTree = "<group>"; };
20FB595B908B4DA42B12C10B3B74A2FA /* UIImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+WebCache.m"; path = "SDWebImage/UIImageView+WebCache.m"; sourceTree = "<group>"; };
21F56FEF368B49D93D7E4F418AAE8296 /* NSImage+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSImage+WebCache.h"; path = "SDWebImage/NSImage+WebCache.h"; sourceTree = "<group>"; };
224779CFFFD95B16021CB8EA8C4F9BBD /* Pods-HUPhotoBrowser DemoTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-HUPhotoBrowser DemoTests-dummy.m"; sourceTree = "<group>"; };
286D66F5AAD3686AC8D9AB22677CBCE9 /* UIImageView+HighlightedWebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+HighlightedWebCache.h"; path = "SDWebImage/UIImageView+HighlightedWebCache.h"; sourceTree = "<group>"; };
293ACC9890E0C871FC279737AA8EF8D3 /* HUWebImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = HUWebImage.h; sourceTree = "<group>"; };
2A39260F4921A34460754C96BF086B62 /* Pods-HUPhotoBrowser Demo-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-HUPhotoBrowser Demo-dummy.m"; sourceTree = "<group>"; };
2A7056DF7B1C83091325D3DF07123CB6 /* Asset.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Asset.h; path = HUPhotoPicker/Classes/Asset.h; sourceTree = "<group>"; };
2B72FB7B35A719AFAD18FAA1C4F6EDAC /* SVProgressHUD-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SVProgressHUD-dummy.m"; sourceTree = "<group>"; };
2E14F497E11E651AC49123BA06F5ED79 /* HUAlbumCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HUAlbumCell.h; path = HUPhotoPicker/Classes/HUAlbumCell.h; sourceTree = "<group>"; };
2F476C600975412D143CA6797F9B48AF /* UIImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+WebCache.h"; path = "SDWebImage/UIImageView+WebCache.h"; sourceTree = "<group>"; };
33DFF64EE6E05602EBA5701E00859628 /* Pods-HUPhotoBrowser DemoTests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-HUPhotoBrowser DemoTests-frameworks.sh"; sourceTree = "<group>"; };
34B7D74B34C33201DFB7105711BABE76 /* UIView+WebCacheOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheOperation.m"; path = "SDWebImage/UIView+WebCacheOperation.m"; sourceTree = "<group>"; };
34F8305A2C6089188628736DDD2F370A /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/ImageIO.framework; sourceTree = DEVELOPER_DIR; };
3999B1A812D487DC85FA889ED46EED0C /* SDWebImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-prefix.pch"; sourceTree = "<group>"; };
3A7B323C6C7AA5954DD661A569FA77CD /* album_close_icon@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "album_close_icon@2x.png"; path = "HUPhotoPicker/Assets/album_close_icon@2x.png"; sourceTree = "<group>"; };
3AEF36E1AC343442B9AD72564C0B21A8 /* HUPhotoBrowser.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HUPhotoBrowser.xcconfig; sourceTree = "<group>"; };
3BFA6105989E1129CE256E52520269E1 /* SVProgressAnimatedView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SVProgressAnimatedView.m; path = SVProgressHUD/SVProgressAnimatedView.m; sourceTree = "<group>"; };
3C61601A866B0B6F3B1CC15879939A46 /* HUAlbumTableViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HUAlbumTableViewController.m; path = HUPhotoPicker/Classes/HUAlbumTableViewController.m; sourceTree = "<group>"; };
3CA2109BCE58B9B9827024FE7D6C2905 /* HUNavTitleView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HUNavTitleView.m; path = HUPhotoPicker/Classes/HUNavTitleView.m; sourceTree = "<group>"; };
3F0FBC46E4BB9737994EE2E35E6E07A4 /* SDWebImagePrefetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImagePrefetcher.m; path = SDWebImage/SDWebImagePrefetcher.m; sourceTree = "<group>"; };
441D9E0D8C2033CBCB8EBD66CB4EDC11 /* SDWebImageManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageManager.m; path = SDWebImage/SDWebImageManager.m; sourceTree = "<group>"; };
45587FF486C1EEDF876807B8E8CC935E /* SDWebImageDownloaderOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderOperation.m; path = SDWebImage/SDWebImageDownloaderOperation.m; sourceTree = "<group>"; };
49A6EFC2685278E2DF77BF2A0DDBE083 /* HUPHAuthorizationNotDeterminedViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HUPHAuthorizationNotDeterminedViewController.h; path = HUPhotoPicker/Classes/HUPHAuthorizationNotDeterminedViewController.h; sourceTree = "<group>"; };
4A8EC596D9BEBB2A682737B6979B9945 /* HUPhotoBrowserCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HUPhotoBrowserCell.m; path = HUPhotoBrowser/HUPhotoBrowserCell.m; sourceTree = "<group>"; };
4C6DFDC2D8A016511F4AED26F3544CF6 /* SDWebImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageManager.h; path = SDWebImage/SDWebImageManager.h; sourceTree = "<group>"; };
4C796604D26CF43514817953954C5AF9 /* UIView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCache.m"; path = "SDWebImage/UIView+WebCache.m"; sourceTree = "<group>"; };
4D9DC81E5EBE3E1913E938646E03C2E9 /* HUAlbumTableViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HUAlbumTableViewController.h; path = HUPhotoPicker/Classes/HUAlbumTableViewController.h; sourceTree = "<group>"; };
4E825E9268F7A21ED4A10CACA6DAC8C9 /* SDWebImageDecoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDecoder.m; path = SDWebImage/SDWebImageDecoder.m; sourceTree = "<group>"; };
4FF76196D9A0CB2559E6874B8EEF173B /* Pods-HUPhotoBrowser Demo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-HUPhotoBrowser Demo.debug.xcconfig"; sourceTree = "<group>"; };
51C9CC5C6680C06B24AEC9DF433CC87C /* HUAlbumCell.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; name = HUAlbumCell.xib; path = HUPhotoPicker/Assets/HUAlbumCell.xib; sourceTree = "<group>"; };
5440CAABC38EE84F75266A36CB50E346 /* SDWebImageDecoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDecoder.h; path = SDWebImage/SDWebImageDecoder.h; sourceTree = "<group>"; };
545C51AB7AB0CB14DF4ECCA613BAFEA5 /* SDWebImageCompat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCompat.m; path = SDWebImage/SDWebImageCompat.m; sourceTree = "<group>"; };
56232916A8D191E1DEB3601409A09124 /* HUPHAuthorizationNotDeterminedView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HUPHAuthorizationNotDeterminedView.m; path = HUPhotoPicker/Classes/HUPHAuthorizationNotDeterminedView.m; sourceTree = "<group>"; };
5DCC6D86420229BFAB1F056871A12607 /* SDWebImageDownloaderOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderOperation.h; path = SDWebImage/SDWebImageDownloaderOperation.h; sourceTree = "<group>"; };
5FBCA5CAA0922972DB941FA957456C36 /* UIView+frame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+frame.m"; path = "HUPhotoBrowser/UIView+frame.m"; sourceTree = "<group>"; };
5FFA0F53632825CF88AB2EB6B22A7F07 /* SDWebImageOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOperation.h; path = SDWebImage/SDWebImageOperation.h; sourceTree = "<group>"; };
61CE96D2977D382BDBEF6EB6C360CAA5 /* SDImageCacheConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheConfig.m; path = SDWebImage/SDImageCacheConfig.m; sourceTree = "<group>"; };
69AED5B69BC460F980416E86560D5348 /* HUImageGridCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HUImageGridCell.h; path = HUPhotoPicker/Classes/HUImageGridCell.h; sourceTree = "<group>"; };
69B7717C3661262547C2C6D471CC6BAC /* Pods-HUPhotoBrowser Demo-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-HUPhotoBrowser Demo-resources.sh"; sourceTree = "<group>"; };
6DC223C3C761C783185E1FFB1A7A05E3 /* UIView+HUConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+HUConstraint.h"; path = "HUPhotoPicker/Classes/UIView+HUConstraint.h"; sourceTree = "<group>"; };
6E8491134C958BC38C9F082D5CE0C36B /* HUImagePickerViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HUImagePickerViewController.h; path = HUPhotoPicker/Classes/HUImagePickerViewController.h; sourceTree = "<group>"; };
703F045B6E13F9E59046173B939701EC /* photo_button_selected@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "photo_button_selected@2x.png"; path = "HUPhotoPicker/Assets/photo_button_selected@2x.png"; sourceTree = "<group>"; };
73B08799CBB6E6C520DFDC31692B4B3A /* album_photograph_icon@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "album_photograph_icon@3x.png"; path = "HUPhotoPicker/Assets/album_photograph_icon@3x.png"; sourceTree = "<group>"; };
753A0AD8EE029D65DDC636A68F7A5D56 /* SVProgressHUD.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SVProgressHUD.h; path = SVProgressHUD/SVProgressHUD.h; sourceTree = "<group>"; };
77001B333D5BD6024B8AD5FA9543880D /* Pods-HUPhotoBrowser Demo-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-HUPhotoBrowser Demo-acknowledgements.plist"; sourceTree = "<group>"; };
7787CCB41A739DF35AC7AF65005F5384 /* SVIndefiniteAnimatedView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SVIndefiniteAnimatedView.h; path = SVProgressHUD/SVIndefiniteAnimatedView.h; sourceTree = "<group>"; };
78840C91637E1D69D68C079ABE539DF4 /* HUPhotoPicker.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HUPhotoPicker.xcconfig; sourceTree = "<group>"; };
7A7709F2BB2881894A4943D95A289521 /* libPods-HUPhotoBrowser DemoTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-HUPhotoBrowser DemoTests.a"; path = "libPods-HUPhotoBrowser DemoTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
7CE6CBF80A2939FE6F1C7C149A1C1F4A /* HUImageSelectModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HUImageSelectModel.h; path = HUPhotoPicker/Classes/HUImageSelectModel.h; sourceTree = "<group>"; };
7F8B57C69320D79163431A32CD7C2404 /* Pods-HUPhotoBrowser DemoTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-HUPhotoBrowser DemoTests.debug.xcconfig"; sourceTree = "<group>"; };
804666883EC6B1A30EE2C0C21974EA4E /* Photos.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Photos.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/Photos.framework; sourceTree = DEVELOPER_DIR; };
865ECDF17E5F581EC036DA88C8EA5EC6 /* SVProgressAnimatedView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SVProgressAnimatedView.h; path = SVProgressHUD/SVProgressAnimatedView.h; sourceTree = "<group>"; };
86EB8878AB1588D8FA0267B6BE6C0FCC /* libSDWebImage.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libSDWebImage.a; path = libSDWebImage.a; sourceTree = BUILT_PRODUCTS_DIR; };
895A080761ACCC7F75D47125CB036CDD /* Pods-HUPhotoBrowser Demo-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-HUPhotoBrowser Demo-acknowledgements.markdown"; sourceTree = "<group>"; };
8A9A3289CAC5E7F9A6A2E7A0833F5790 /* UIBarButtonItem+HUButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIBarButtonItem+HUButton.h"; path = "HUPhotoPicker/Classes/UIBarButtonItem+HUButton.h"; sourceTree = "<group>"; };
8AE15A73A5C43C841A105D61C78AC511 /* NSBundle+HUPicker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBundle+HUPicker.m"; path = "HUPhotoPicker/Classes/NSBundle+HUPicker.m"; sourceTree = "<group>"; };
8B38EF6EE351405BFF1A723C71A0CF97 /* UIImage+GIF.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+GIF.m"; path = "SDWebImage/UIImage+GIF.m"; sourceTree = "<group>"; };
90B6845A1227E66671DC5581A96EB9F6 /* SVProgressHUD.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = SVProgressHUD.bundle; path = SVProgressHUD/SVProgressHUD.bundle; sourceTree = "<group>"; };
9103C49F8D840C91E18ED85756AB0BBB /* HUToast.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HUToast.h; path = HUPhotoPicker/Classes/HUToast.h; sourceTree = "<group>"; };
91040B2B94B6447A1D4D9387C627B02A /* HUWebImageDownloadOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = HUWebImageDownloadOperation.h; sourceTree = "<group>"; };
919847A9F94E2FACD0E3E3CB08A71F90 /* NSImage+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSImage+WebCache.m"; path = "SDWebImage/NSImage+WebCache.m"; sourceTree = "<group>"; };
93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
94DDDEAEFD125C897C744D5C9F295F28 /* HUWebImageDownloadOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = HUWebImageDownloadOperation.m; sourceTree = "<group>"; };
94E349128851E2C8898702890C40F4F9 /* UIBarButtonItem+HUButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIBarButtonItem+HUButton.m"; path = "HUPhotoPicker/Classes/UIBarButtonItem+HUButton.m"; sourceTree = "<group>"; };
9A68BB2127299F79461E6F6B3AB52869 /* UIImage+MultiFormat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MultiFormat.m"; path = "SDWebImage/UIImage+MultiFormat.m"; sourceTree = "<group>"; };
9B2BFA65B10054FC241F1C3ABB96E68B /* SDWebImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloader.m; path = SDWebImage/SDWebImageDownloader.m; sourceTree = "<group>"; };
9B6C41B0E78CD3F337D9DA8131A22914 /* nav_back@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "nav_back@3x.png"; path = "HUPhotoPicker/Assets/nav_back@3x.png"; sourceTree = "<group>"; };
9B9BF87558582615F2810E72AC339206 /* UIImageView+HighlightedWebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+HighlightedWebCache.m"; path = "SDWebImage/UIImageView+HighlightedWebCache.m"; sourceTree = "<group>"; };
9BAD901633A161CB4C35C1A9466869C3 /* HUAlbumCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HUAlbumCell.m; path = HUPhotoPicker/Classes/HUAlbumCell.m; sourceTree = "<group>"; };
A2D3BF58C096E8B3557DBD41DD70D03B /* HUNavTitleView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HUNavTitleView.h; path = HUPhotoPicker/Classes/HUNavTitleView.h; sourceTree = "<group>"; };
A316B140C3B1474605CDE6512EA540FA /* album_open_icon@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "album_open_icon@3x.png"; path = "HUPhotoPicker/Assets/album_open_icon@3x.png"; sourceTree = "<group>"; };
A4D56D45B44D3173C51062AD8CE60193 /* album_open_icon@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "album_open_icon@2x.png"; path = "HUPhotoPicker/Assets/album_open_icon@2x.png"; sourceTree = "<group>"; };
A524D07B783D67E8F7BC7A33A47770AE /* HUPhotoBrowser-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "HUPhotoBrowser-dummy.m"; sourceTree = "<group>"; };
A686FEEDCC01B1622154D0E4BEB71DAA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
A6872A62128DF0B9C337DD8EB551B99F /* SVIndefiniteAnimatedView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SVIndefiniteAnimatedView.m; path = SVProgressHUD/SVIndefiniteAnimatedView.m; sourceTree = "<group>"; };
AEC8F5C50FA9C44CF017CDCDCBA68D75 /* SDWebImage.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.xcconfig; sourceTree = "<group>"; };
AF0D9B0557E593C2184912CC905AA5E1 /* UIView+WebCache.h */ = {isa = PBXFileReference; inclu
gitextract_ok1bowu5/ ├── .com.apple.timemachine.supported ├── .swift-version ├── Example/ │ ├── HUPhotoBrowser Demo/ │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── Base.lproj/ │ │ │ ├── LaunchScreen.xib │ │ │ └── Main.storyboard │ │ ├── Images.xcassets/ │ │ │ └── AppIcon.appiconset/ │ │ │ └── Contents.json │ │ ├── Info.plist │ │ ├── PhotoCell.h │ │ ├── PhotoCell.m │ │ ├── ViewController.h │ │ ├── ViewController.m │ │ └── main.m │ ├── HUPhotoBrowser Demo.xcodeproj/ │ │ ├── project.pbxproj │ │ ├── project.xcworkspace/ │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata/ │ │ │ └── HUPhotoBrowser Demo.xccheckout │ │ └── xcuserdata/ │ │ ├── huluobo.xcuserdatad/ │ │ │ └── xcschemes/ │ │ │ └── xcschememanagement.plist │ │ ├── jewelz.xcuserdatad/ │ │ │ └── xcschemes/ │ │ │ ├── HUPhotoBrowser Demo.xcscheme │ │ │ └── xcschememanagement.plist │ │ └── mac.xcuserdatad/ │ │ ├── xcdebugger/ │ │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes/ │ │ ├── HUPhotoBrowser Demo.xcscheme │ │ └── xcschememanagement.plist │ ├── HUPhotoBrowser Demo.xcworkspace/ │ │ ├── contents.xcworkspacedata │ │ ├── xcshareddata/ │ │ │ ├── HUPhotoBrowser Demo.xccheckout │ │ │ └── IDEWorkspaceChecks.plist │ │ └── xcuserdata/ │ │ ├── huluobo.xcuserdatad/ │ │ │ ├── UserInterfaceState.xcuserstate │ │ │ └── xcdebugger/ │ │ │ └── Breakpoints_v2.xcbkptlist │ │ └── jewelz.xcuserdatad/ │ │ └── UserInterfaceState.xcuserstate │ ├── HUPhotoBrowser DemoTests/ │ │ ├── HUPhotoBrowser_DemoTests.m │ │ └── Info.plist │ ├── Podfile │ └── Pods/ │ ├── HUPhotoPicker/ │ │ ├── HUPhotoPicker/ │ │ │ ├── Assets/ │ │ │ │ └── HUAlbumCell.xib │ │ │ └── Classes/ │ │ │ ├── Asset.h │ │ │ ├── HUAlbumCell.h │ │ │ ├── HUAlbumCell.m │ │ │ ├── HUAlbumTableViewController.h │ │ │ ├── HUAlbumTableViewController.m │ │ │ ├── HUImageGridCell.h │ │ │ ├── HUImageGridCell.m │ │ │ ├── HUImageGridViewController.h │ │ │ ├── HUImageGridViewController.m │ │ │ ├── HUImagePickerViewController.h │ │ │ ├── HUImagePickerViewController.m │ │ │ ├── HUImageSelectModel.h │ │ │ ├── HUImageSelectModel.m │ │ │ ├── HUNavTitleView.h │ │ │ ├── HUNavTitleView.m │ │ │ ├── HUPHAuthorizationNotDeterminedView.h │ │ │ ├── HUPHAuthorizationNotDeterminedView.m │ │ │ ├── HUPHAuthorizationNotDeterminedViewController.h │ │ │ ├── HUPHAuthorizationNotDeterminedViewController.m │ │ │ ├── HUPhotoAlbum.h │ │ │ ├── HUPhotoAlbum.m │ │ │ ├── HUPhotoManager.h │ │ │ ├── HUPhotoManager.m │ │ │ ├── HUPhotoPicker.h │ │ │ ├── HUTakePhotoCell.h │ │ │ ├── HUTakePhotoCell.m │ │ │ ├── HUToast.h │ │ │ ├── HUToast.m │ │ │ ├── NSBundle+HUPicker.h │ │ │ ├── NSBundle+HUPicker.m │ │ │ ├── UIBarButtonItem+HUButton.h │ │ │ ├── UIBarButtonItem+HUButton.m │ │ │ ├── UIView+HUConstraint.h │ │ │ └── UIView+HUConstraint.m │ │ ├── LICENSE │ │ └── README.md │ ├── Local Podspecs/ │ │ └── HUPhotoBrowser.podspec.json │ ├── Pods.xcodeproj/ │ │ ├── project.pbxproj │ │ └── xcuserdata/ │ │ ├── huluobo.xcuserdatad/ │ │ │ └── xcschemes/ │ │ │ ├── HUPhotoBrowser.xcscheme │ │ │ ├── HUPhotoPicker-HUPhotoPicker.xcscheme │ │ │ ├── HUPhotoPicker.xcscheme │ │ │ ├── Pods-HUPhotoBrowser Demo.xcscheme │ │ │ ├── Pods-HUPhotoBrowser DemoTests.xcscheme │ │ │ ├── SDWebImage.xcscheme │ │ │ ├── SVProgressHUD.xcscheme │ │ │ └── xcschememanagement.plist │ │ └── jewelz.xcuserdatad/ │ │ └── xcschemes/ │ │ ├── HUPhotoBrowser.xcscheme │ │ ├── HUPhotoPicker-HUPhotoPicker.xcscheme │ │ ├── HUPhotoPicker.xcscheme │ │ ├── Pods-HUPhotoBrowser Demo.xcscheme │ │ ├── Pods-HUPhotoBrowser DemoTests.xcscheme │ │ ├── SDWebImage.xcscheme │ │ └── xcschememanagement.plist │ ├── SDWebImage/ │ │ ├── LICENSE │ │ ├── README.md │ │ └── SDWebImage/ │ │ ├── NSData+ImageContentType.h │ │ ├── NSData+ImageContentType.m │ │ ├── NSImage+WebCache.h │ │ ├── NSImage+WebCache.m │ │ ├── SDImageCache.h │ │ ├── SDImageCache.m │ │ ├── SDImageCacheConfig.h │ │ ├── SDImageCacheConfig.m │ │ ├── SDWebImageCompat.h │ │ ├── SDWebImageCompat.m │ │ ├── SDWebImageDecoder.h │ │ ├── SDWebImageDecoder.m │ │ ├── SDWebImageDownloader.h │ │ ├── SDWebImageDownloader.m │ │ ├── SDWebImageDownloaderOperation.h │ │ ├── SDWebImageDownloaderOperation.m │ │ ├── SDWebImageManager.h │ │ ├── SDWebImageManager.m │ │ ├── SDWebImageOperation.h │ │ ├── SDWebImagePrefetcher.h │ │ ├── SDWebImagePrefetcher.m │ │ ├── UIButton+WebCache.h │ │ ├── UIButton+WebCache.m │ │ ├── UIImage+GIF.h │ │ ├── UIImage+GIF.m │ │ ├── UIImage+MultiFormat.h │ │ ├── UIImage+MultiFormat.m │ │ ├── UIImageView+HighlightedWebCache.h │ │ ├── UIImageView+HighlightedWebCache.m │ │ ├── UIImageView+WebCache.h │ │ ├── UIImageView+WebCache.m │ │ ├── UIView+WebCache.h │ │ ├── UIView+WebCache.m │ │ ├── UIView+WebCacheOperation.h │ │ └── UIView+WebCacheOperation.m │ ├── SVProgressHUD/ │ │ ├── LICENSE.txt │ │ ├── README.md │ │ └── SVProgressHUD/ │ │ ├── SVIndefiniteAnimatedView.h │ │ ├── SVIndefiniteAnimatedView.m │ │ ├── SVProgressAnimatedView.h │ │ ├── SVProgressAnimatedView.m │ │ ├── SVProgressHUD.h │ │ ├── SVProgressHUD.m │ │ ├── SVRadialGradientLayer.h │ │ └── SVRadialGradientLayer.m │ └── Target Support Files/ │ ├── HUPhotoBrowser/ │ │ ├── HUPhotoBrowser-dummy.m │ │ ├── HUPhotoBrowser-prefix.pch │ │ └── HUPhotoBrowser.xcconfig │ ├── HUPhotoPicker/ │ │ ├── HUPhotoPicker-dummy.m │ │ ├── HUPhotoPicker-prefix.pch │ │ ├── HUPhotoPicker.xcconfig │ │ └── ResourceBundle-HUPhotoPicker-Info.plist │ ├── Pods-HUPhotoBrowser Demo/ │ │ ├── Pods-HUPhotoBrowser Demo-acknowledgements.markdown │ │ ├── Pods-HUPhotoBrowser Demo-acknowledgements.plist │ │ ├── Pods-HUPhotoBrowser Demo-dummy.m │ │ ├── Pods-HUPhotoBrowser Demo-frameworks.sh │ │ ├── Pods-HUPhotoBrowser Demo-resources.sh │ │ ├── Pods-HUPhotoBrowser Demo.debug.xcconfig │ │ └── Pods-HUPhotoBrowser Demo.release.xcconfig │ ├── Pods-HUPhotoBrowser DemoTests/ │ │ ├── Pods-HUPhotoBrowser DemoTests-acknowledgements.markdown │ │ ├── Pods-HUPhotoBrowser DemoTests-acknowledgements.plist │ │ ├── Pods-HUPhotoBrowser DemoTests-dummy.m │ │ ├── Pods-HUPhotoBrowser DemoTests-frameworks.sh │ │ ├── Pods-HUPhotoBrowser DemoTests-resources.sh │ │ ├── Pods-HUPhotoBrowser DemoTests.debug.xcconfig │ │ └── Pods-HUPhotoBrowser DemoTests.release.xcconfig │ ├── SDWebImage/ │ │ ├── SDWebImage-dummy.m │ │ ├── SDWebImage-prefix.pch │ │ └── SDWebImage.xcconfig │ └── SVProgressHUD/ │ ├── SVProgressHUD-dummy.m │ ├── SVProgressHUD-prefix.pch │ └── SVProgressHUD.xcconfig ├── HUPhotoBrowser/ │ ├── HUPhotoBrowser.h │ ├── HUPhotoBrowser.m │ ├── HUPhotoBrowserCell.h │ ├── HUPhotoBrowserCell.m │ ├── HUWebImageDownloader/ │ │ ├── HUWebImage.h │ │ ├── HUWebImageDownloadOperation.h │ │ ├── HUWebImageDownloadOperation.m │ │ ├── HUWebImageDownloader.h │ │ ├── HUWebImageDownloader.m │ │ ├── UIImage+HUExtension.h │ │ ├── UIImage+HUExtension.m │ │ ├── UIImageView+HUWebImage.h │ │ └── UIImageView+HUWebImage.m │ ├── UIView+frame.h │ ├── UIView+frame.m │ └── hu_const.h ├── HUPhotoBrowser.a ├── HUPhotoBrowser.podspec ├── HUPhotoBrowser.xcodeproj/ │ ├── project.pbxproj │ ├── project.xcworkspace/ │ │ ├── contents.xcworkspacedata │ │ ├── xcshareddata/ │ │ │ └── HUPhotoBrowser.xccheckout │ │ └── xcuserdata/ │ │ └── jewelz.xcuserdatad/ │ │ └── UserInterfaceState.xcuserstate │ └── xcuserdata/ │ ├── jewelz.xcuserdatad/ │ │ └── xcschemes/ │ │ ├── HUPhotoBrowser.xcscheme │ │ └── xcschememanagement.plist │ └── mac.xcuserdatad/ │ ├── xcdebugger/ │ │ └── Breakpoints_v2.xcbkptlist │ └── xcschemes/ │ ├── HUPhotoBrowser.xcscheme │ └── xcschememanagement.plist ├── HUPhotoBrowserTests/ │ └── Info.plist ├── LICENSE └── README.md
SYMBOL INDEX (9 symbols across 5 files)
FILE: Example/Pods/SDWebImage/SDWebImage/SDImageCache.h
type SDImageCacheTypeNone (line 13) | typedef NS_ENUM(NSInteger, SDImageCacheType) {
FILE: Example/Pods/SDWebImage/SDWebImage/SDWebImageDownloader.h
type SDWebImageDownloaderFIFOExecutionOrder (line 58) | typedef NS_ENUM(NSInteger, SDWebImageDownloaderExecutionOrder) {
type NSDictionary (line 77) | typedef NSDictionary<NSString *, NSString *> SDHTTPHeadersDictionary;
type NSMutableDictionary (line 78) | typedef NSMutableDictionary<NSString *, NSString *> SDHTTPHeadersMutable...
type SDHTTPHeadersDictionary (line 80) | typedef SDHTTPHeadersDictionary * _Nullable (^SDWebImageDownloaderHeader...
FILE: Example/Pods/SDWebImage/SDWebImage/SDWebImageManager.h
type NSString (line 104) | typedef NSString * _Nullable (^SDWebImageCacheKeyFilterBlock)(NSURL * _N...
FILE: Example/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.h
type SVProgressHUDStyleLight (line 26) | typedef NS_ENUM(NSInteger, SVProgressHUDStyle) {
type SVProgressHUDAnimationTypeFlat (line 40) | typedef NS_ENUM(NSUInteger, SVProgressHUDAnimationType) {
FILE: HUPhotoBrowser/HUWebImageDownloader/HUWebImageDownloader.h
type HUWebImageOptionNone (line 11) | typedef NS_ENUM(NSInteger, HUWebImageOption) {
Condensed preview — 189 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (778K chars).
[
{
"path": ".com.apple.timemachine.supported",
"chars": 0,
"preview": ""
},
{
"path": ".swift-version",
"chars": 4,
"preview": "2.3\n"
},
{
"path": "Example/HUPhotoBrowser Demo/AppDelegate.h",
"chars": 281,
"preview": "//\n// AppDelegate.h\n// HUPhotoBrowser Demo\n//\n// Created by mac on 16/2/25.\n// Copyright (c) 2016年 hujewelz. All rig"
},
{
"path": "Example/HUPhotoBrowser Demo/AppDelegate.m",
"chars": 2035,
"preview": "//\n// AppDelegate.m\n// HUPhotoBrowser Demo\n//\n// Created by mac on 16/2/25.\n// Copyright (c) 2016年 hujewelz. All rig"
},
{
"path": "Example/HUPhotoBrowser Demo/Base.lproj/LaunchScreen.xib",
"chars": 3713,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" versi"
},
{
"path": "Example/HUPhotoBrowser Demo/Base.lproj/Main.storyboard",
"chars": 8572,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3"
},
{
"path": "Example/HUPhotoBrowser Demo/Images.xcassets/AppIcon.appiconset/Contents.json",
"chars": 585,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"iphone\",\n \"size\" : \"29x29\",\n \"scale\" : \"2x\"\n },\n {\n \"idiom\""
},
{
"path": "Example/HUPhotoBrowser Demo/Info.plist",
"chars": 1428,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "Example/HUPhotoBrowser Demo/PhotoCell.h",
"chars": 274,
"preview": "//\n// PhotoCell.h\n// HUPhotoBrowser Demo\n//\n// Created by mac on 16/2/25.\n// Copyright (c) 2016年 hujewelz. All right"
},
{
"path": "Example/HUPhotoBrowser Demo/PhotoCell.m",
"chars": 191,
"preview": "//\n// PhotoCell.m\n// HUPhotoBrowser Demo\n//\n// Created by mac on 16/2/25.\n// Copyright (c) 2016年 hujewelz. All right"
},
{
"path": "Example/HUPhotoBrowser Demo/ViewController.h",
"chars": 219,
"preview": "//\n// ViewController.h\n// HUPhotoBrowser Demo\n//\n// Created by mac on 16/2/25.\n// Copyright (c) 2016年 hujewelz. All "
},
{
"path": "Example/HUPhotoBrowser Demo/ViewController.m",
"chars": 4336,
"preview": "//\n// ViewController.m\n// HUPhotoBrowser Demo\n//\n// Created by mac on 16/2/25.\n// Copyright (c) 2016年 hujewelz. All "
},
{
"path": "Example/HUPhotoBrowser Demo/main.m",
"chars": 338,
"preview": "//\n// main.m\n// HUPhotoBrowser Demo\n//\n// Created by mac on 16/2/25.\n// Copyright (c) 2016年 hujewelz. All rights res"
},
{
"path": "Example/HUPhotoBrowser Demo.xcodeproj/project.pbxproj",
"chars": 28230,
"preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
},
{
"path": "Example/HUPhotoBrowser Demo.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
"chars": 164,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n version = \"1.0\">\n <FileRef\n location = \"self:HUPhotoBrowser "
},
{
"path": "Example/HUPhotoBrowser Demo.xcodeproj/project.xcworkspace/xcshareddata/HUPhotoBrowser Demo.xccheckout",
"chars": 1532,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "Example/HUPhotoBrowser Demo.xcodeproj/xcuserdata/huluobo.xcuserdatad/xcschemes/xcschememanagement.plist",
"chars": 342,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "Example/HUPhotoBrowser Demo.xcodeproj/xcuserdata/jewelz.xcuserdatad/xcschemes/HUPhotoBrowser Demo.xcscheme",
"chars": 4534,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"0730\"\n version = \"1.3\">\n <BuildAction\n "
},
{
"path": "Example/HUPhotoBrowser Demo.xcodeproj/xcuserdata/jewelz.xcuserdatad/xcschemes/xcschememanagement.plist",
"chars": 581,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "Example/HUPhotoBrowser Demo.xcodeproj/xcuserdata/mac.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist",
"chars": 795,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Bucket\n type = \"1\"\n version = \"2.0\">\n <Breakpoints>\n <BreakpointProxy"
},
{
"path": "Example/HUPhotoBrowser Demo.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/HUPhotoBrowser Demo.xcscheme",
"chars": 4440,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"0640\"\n version = \"1.3\">\n <BuildAction\n "
},
{
"path": "Example/HUPhotoBrowser Demo.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/xcschememanagement.plist",
"chars": 581,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "Example/HUPhotoBrowser Demo.xcworkspace/contents.xcworkspacedata",
"chars": 237,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n version = \"1.0\">\n <FileRef\n location = \"group:HUPhotoBrowser"
},
{
"path": "Example/HUPhotoBrowser Demo.xcworkspace/xcshareddata/HUPhotoBrowser Demo.xccheckout",
"chars": 1531,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "Example/HUPhotoBrowser Demo.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
"chars": 238,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "Example/HUPhotoBrowser Demo.xcworkspace/xcuserdata/huluobo.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist",
"chars": 91,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Bucket\n type = \"0\"\n version = \"2.0\">\n</Bucket>\n"
},
{
"path": "Example/HUPhotoBrowser DemoTests/HUPhotoBrowser_DemoTests.m",
"chars": 899,
"preview": "//\n// HUPhotoBrowser_DemoTests.m\n// HUPhotoBrowser DemoTests\n//\n// Created by mac on 16/2/25.\n// Copyright (c) 2016年"
},
{
"path": "Example/HUPhotoBrowser DemoTests/Info.plist",
"chars": 733,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "Example/Podfile",
"chars": 318,
"preview": "# Uncomment this line to define a global platform for your project\nplatform :ios, '8.0'\n# Uncomment this line if you're "
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Assets/HUAlbumCell.xib",
"chars": 5242,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVe"
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/Asset.h",
"chars": 448,
"preview": "//\n// Asset.h\n// HUPhotoPicker\n//\n// Created by jewelz on 2017/7/28.\n//\n\n#ifndef Asset_h\n#define Asset_h\n\n#import \"NS"
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUAlbumCell.h",
"chars": 432,
"preview": "//\n// BAAlbumCell.h\n// beautyAssistant\n//\n// Created by jewelz on 2017/6/26.\n// Copyright © 2017年 Service+. All righ"
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUAlbumCell.m",
"chars": 734,
"preview": "//\n// BAAlbumCell.m\n// beautyAssistant\n//\n// Created by jewelz on 2017/6/26.\n// Copyright © 2017年 Service+. All righ"
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUAlbumTableViewController.h",
"chars": 367,
"preview": "//\n// BAAlbumTableViewController.h\n// beautyAssistant\n//\n// Created by jewelz on 2017/6/22.\n// Copyright © 2017年 Ser"
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUAlbumTableViewController.m",
"chars": 7624,
"preview": "//\n// BAAlbumTableViewController.m\n// beautyAssistant\n//\n// Created by jewelz on 2017/6/22.\n// Copyright © 2017年 Ser"
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUImageGridCell.h",
"chars": 568,
"preview": "//\n// BAImageGridCell.h\n// beautyAssistant\n//\n// Created by jewelz on 2017/6/22.\n// Copyright © 2017年 Service+. All "
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUImageGridCell.m",
"chars": 3232,
"preview": "//\n// HUImageGridCell.m\n// beautyAssistant\n//\n// Created by jewelz on 2017/6/22.\n// Copyright © 2017年 Service+. All "
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUImageGridViewController.h",
"chars": 334,
"preview": "//\n// HUImageGridViewController.h\n// beautyAssistant\n//\n// Created by jewelz on 2017/6/22.\n// Copyright © 2017年 Serv"
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUImageGridViewController.m",
"chars": 19974,
"preview": "//\n// HUImageGridViewController.m\n// beautyAssistant\n//\n// Created by jewelz on 2017/6/22.\n// Copyright © 2017年 Serv"
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUImagePickerViewController.h",
"chars": 1205,
"preview": "//\n// HUImagePickerViewController.h\n// beautyAssistant\n//\n// Created by jewelz on 2017/6/22.\n// Copyright © 2017年 Se"
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUImagePickerViewController.m",
"chars": 2748,
"preview": "//\n// HUImagePickerViewController.m\n// beautyAssistant\n//\n// Created by jewelz on 2017/6/22.\n// Copyright © 2017年 Se"
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUImageSelectModel.h",
"chars": 437,
"preview": "//\n// BAImageSelectModel.h\n// beautyAssistant\n//\n// Created by jewelz on 2017/6/22.\n// Copyright © 2017年 Service+. A"
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUImageSelectModel.m",
"chars": 217,
"preview": "//\n// BAImageSelectModel.m\n// beautyAssistant\n//\n// Created by jewelz on 2017/6/22.\n// Copyright © 2017年 Service+. A"
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUNavTitleView.h",
"chars": 197,
"preview": "//\n// NavTitleView.h\n// HUPhotoPicker\n//\n// Created by jewelz on 2017/9/27.\n//\n\n#import <UIKit/UIKit.h>\n\n@interface H"
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUNavTitleView.m",
"chars": 763,
"preview": "//\n// NavTitleView.m\n// HUPhotoPicker\n//\n// Created by jewelz on 2017/9/27.\n//\n\n#import \"HUNavTitleView.h\"\n#import \"N"
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUPHAuthorizationNotDeterminedView.h",
"chars": 246,
"preview": "//\n// BAPHAuthorizationNotDeterminedView.h\n// beautyAssistant\n//\n// Created by jewelz on 2017/7/20.\n// Copyright © 2"
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUPHAuthorizationNotDeterminedView.m",
"chars": 2030,
"preview": "//\n// BAPHAuthorizationNotDeterminedView.m\n// beautyAssistant\n//\n// Created by jewelz on 2017/7/20.\n// Copyright © 2"
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUPHAuthorizationNotDeterminedViewController.h",
"chars": 276,
"preview": "//\n// BAPHAuthorizationNotDeterminedViewController.h\n// beautyAssistant\n//\n// Created by jewelz on 2017/7/20.\n// Cop"
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUPHAuthorizationNotDeterminedViewController.m",
"chars": 1375,
"preview": "//\n// HUPHAuthorizationNotDeterminedViewController.m\n// beautyAssistant\n//\n// Created by jewelz on 2017/7/20.\n// Cop"
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUPhotoAlbum.h",
"chars": 550,
"preview": "//\n// HUPhotoAlbum.h\n// Pods\n//\n// Created by jewelz on 2017/9/15.\n//\n//\n\n#import <Foundation/Foundation.h>\n\n@class P"
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUPhotoAlbum.m",
"chars": 644,
"preview": "//\n// HUPhotoAlbum.m\n// Pods\n//\n// Created by jewelz on 2017/9/15.\n//\n//\n\n#import \"HUPhotoAlbum.h\"\n#import <Photos/Ph"
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUPhotoManager.h",
"chars": 1050,
"preview": "//\n// HUPhotoHelper.h\n// Pods\n//\n// Created by jewelz on 2017/7/29.\n//\n//\n\n#import <Foundation/Foundation.h>\n\n@class "
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUPhotoManager.m",
"chars": 8178,
"preview": "//\n// HUPhotoHelper.m\n// Pods\n//\n// Created by jewelz on 2017/7/29.\n//\n//\n\n#import \"HUPhotoManager.h\"\n#import <Photos"
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUPhotoPicker.h",
"chars": 224,
"preview": "//\n// HUPhotoPicker.h\n// Pods\n//\n// Created by jewelz on 2017/7/28.\n//\n//\n\n#ifndef HUPhotoPicker_h\n#define HUPhotoPic"
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUTakePhotoCell.h",
"chars": 193,
"preview": "//\n// HUTakePhotoCell.h\n// Pods\n//\n// Created by jewelz on 2017/9/15.\n//\n//\n\n#import <UIKit/UIKit.h>\n\n@interface HUTa"
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUTakePhotoCell.m",
"chars": 917,
"preview": "//\n// HUTakePhotoCell.m\n// Pods\n//\n// Created by jewelz on 2017/9/15.\n//\n//\n\n#import \"HUTakePhotoCell.h\"\n#import \"UIV"
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUToast.h",
"chars": 192,
"preview": "//\n// Toast.h\n// Pods\n//\n// Created by jewelz on 2017/9/16.\n//\n//\n\n#import <UIKit/UIKit.h>\n\n@interface HUToast : UIVi"
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUToast.m",
"chars": 2287,
"preview": "//\n// Toast.m\n// Pods\n//\n// Created by jewelz on 2017/9/16.\n//\n//\n\n#import \"HUToast.h\"\n#import \"UIView+HUConstraint.h"
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/NSBundle+HUPicker.h",
"chars": 228,
"preview": "//\n// NSBundle+HUPicker.h\n// Pods\n//\n// Created by jewelz on 2017/7/28.\n//\n//\n\n#import <Foundation/Foundation.h>\n\n@in"
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/NSBundle+HUPicker.m",
"chars": 666,
"preview": "//\n// NSBundle+HUPicker.m\n// Pods\n//\n// Created by jewelz on 2017/7/28.\n//\n//\n\n#import \"NSBundle+HUPicker.h\"\n#import "
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/UIBarButtonItem+HUButton.h",
"chars": 248,
"preview": "//\n// UIBarButtonItem+HUButton.h\n// Pods\n//\n// Created by jewelz on 2017/7/29.\n//\n//\n\n#import <UIKit/UIKit.h>\n\n@inter"
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/UIBarButtonItem+HUButton.m",
"chars": 682,
"preview": "//\n// UIBarButtonItem+HUButton.m\n// Pods\n//\n// Created by jewelz on 2017/7/29.\n//\n//\n\n#import \"UIBarButtonItem+HUButt"
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/UIView+HUConstraint.h",
"chars": 451,
"preview": "//\n// UIView+Constraint.h\n// HUPhotoPicker\n//\n// Created by jewelz on 2017/7/28.\n//\n\n#import <UIKit/UIKit.h>\n\n@interf"
},
{
"path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/UIView+HUConstraint.m",
"chars": 1593,
"preview": "//\n// UIView+Constraint.m\n// HUPhotoPicker\n//\n// Created by jewelz on 2017/7/28.\n//\n\n#import \"UIView+HUConstraint.h\"\n"
},
{
"path": "Example/Pods/HUPhotoPicker/LICENSE",
"chars": 1066,
"preview": "MIT License\n\nCopyright (c) 2017 Jewelz Hu\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\n"
},
{
"path": "Example/Pods/HUPhotoPicker/README.md",
"chars": 956,
"preview": "# HUPhotoPicker\n\n[](https://travis-ci.or"
},
{
"path": "Example/Pods/Local Podspecs/HUPhotoBrowser.podspec.json",
"chars": 860,
"preview": "{\n \"name\": \"HUPhotoBrowser\",\n \"version\": \"1.3.0\",\n \"summary\": \"photo browser for ios, which can browse Photo library "
},
{
"path": "Example/Pods/Pods.xcodeproj/project.pbxproj",
"chars": 119351,
"preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
},
{
"path": "Example/Pods/Pods.xcodeproj/xcuserdata/huluobo.xcuserdatad/xcschemes/HUPhotoBrowser.xcscheme",
"chars": 2101,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"0700\"\n version = \"1.3\">\n <BuildAction\n "
},
{
"path": "Example/Pods/Pods.xcodeproj/xcuserdata/huluobo.xcuserdatad/xcschemes/HUPhotoPicker-HUPhotoPicker.xcscheme",
"chars": 2115,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"0700\"\n version = \"1.3\">\n <BuildAction\n "
},
{
"path": "Example/Pods/Pods.xcodeproj/xcuserdata/huluobo.xcuserdatad/xcschemes/HUPhotoPicker.xcscheme",
"chars": 2099,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"0700\"\n version = \"1.3\">\n <BuildAction\n "
},
{
"path": "Example/Pods/Pods.xcodeproj/xcuserdata/huluobo.xcuserdatad/xcschemes/Pods-HUPhotoBrowser Demo.xcscheme",
"chars": 2121,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"0700\"\n version = \"1.3\">\n <BuildAction\n "
},
{
"path": "Example/Pods/Pods.xcodeproj/xcuserdata/huluobo.xcuserdatad/xcschemes/Pods-HUPhotoBrowser DemoTests.xcscheme",
"chars": 2131,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"0700\"\n version = \"1.3\">\n <BuildAction\n "
},
{
"path": "Example/Pods/Pods.xcodeproj/xcuserdata/huluobo.xcuserdatad/xcschemes/SDWebImage.xcscheme",
"chars": 2093,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"0700\"\n version = \"1.3\">\n <BuildAction\n "
},
{
"path": "Example/Pods/Pods.xcodeproj/xcuserdata/huluobo.xcuserdatad/xcschemes/SVProgressHUD.xcscheme",
"chars": 2099,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"0700\"\n version = \"1.3\">\n <BuildAction\n "
},
{
"path": "Example/Pods/Pods.xcodeproj/xcuserdata/huluobo.xcuserdatad/xcschemes/xcschememanagement.plist",
"chars": 1282,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "Example/Pods/Pods.xcodeproj/xcuserdata/jewelz.xcuserdatad/xcschemes/HUPhotoBrowser.xcscheme",
"chars": 2101,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"0700\"\n version = \"1.3\">\n <BuildAction\n "
},
{
"path": "Example/Pods/Pods.xcodeproj/xcuserdata/jewelz.xcuserdatad/xcschemes/HUPhotoPicker-HUPhotoPicker.xcscheme",
"chars": 2115,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"0700\"\n version = \"1.3\">\n <BuildAction\n "
},
{
"path": "Example/Pods/Pods.xcodeproj/xcuserdata/jewelz.xcuserdatad/xcschemes/HUPhotoPicker.xcscheme",
"chars": 2099,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"0700\"\n version = \"1.3\">\n <BuildAction\n "
},
{
"path": "Example/Pods/Pods.xcodeproj/xcuserdata/jewelz.xcuserdatad/xcschemes/Pods-HUPhotoBrowser Demo.xcscheme",
"chars": 2121,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"0700\"\n version = \"1.3\">\n <BuildAction\n "
},
{
"path": "Example/Pods/Pods.xcodeproj/xcuserdata/jewelz.xcuserdatad/xcschemes/Pods-HUPhotoBrowser DemoTests.xcscheme",
"chars": 2131,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"0700\"\n version = \"1.3\">\n <BuildAction\n "
},
{
"path": "Example/Pods/Pods.xcodeproj/xcuserdata/jewelz.xcuserdatad/xcschemes/SDWebImage.xcscheme",
"chars": 2093,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"0700\"\n version = \"1.3\">\n <BuildAction\n "
},
{
"path": "Example/Pods/Pods.xcodeproj/xcuserdata/jewelz.xcuserdatad/xcschemes/xcschememanagement.plist",
"chars": 857,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "Example/Pods/SDWebImage/LICENSE",
"chars": 1087,
"preview": "Copyright (c) 2009-2017 Olivier Poitrey rs@dailymotion.com\n \nPermission is hereby granted, free of charge, to any person"
},
{
"path": "Example/Pods/SDWebImage/README.md",
"chars": 9065,
"preview": "<p align=\"center\" >\n <img src=\"SDWebImage_logo.png\" title=\"SDWebImage logo\" float=left>\n</p>\n\n\n[ Olivier Poitrey <rs@dailymotion.com>\n * (c) Fabrice Aneche\n *\n"
},
{
"path": "Example/Pods/SDWebImage/SDWebImage/NSData+ImageContentType.m",
"chars": 1274,
"preview": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n * (c) Fabrice Aneche\n *\n"
},
{
"path": "Example/Pods/SDWebImage/SDWebImage/NSImage+WebCache.h",
"chars": 412,
"preview": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyri"
},
{
"path": "Example/Pods/SDWebImage/SDWebImage/NSImage+WebCache.m",
"chars": 621,
"preview": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyri"
},
{
"path": "Example/Pods/SDWebImage/SDWebImage/SDImageCache.h",
"chars": 8968,
"preview": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyri"
},
{
"path": "Example/Pods/SDWebImage/SDWebImage/SDImageCache.m",
"chars": 23160,
"preview": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyri"
},
{
"path": "Example/Pods/SDWebImage/SDWebImage/SDImageCacheConfig.h",
"chars": 1083,
"preview": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyri"
},
{
"path": "Example/Pods/SDWebImage/SDWebImage/SDImageCacheConfig.m",
"chars": 655,
"preview": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyri"
},
{
"path": "Example/Pods/SDWebImage/SDWebImage/SDWebImageCompat.h",
"chars": 2843,
"preview": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n * (c) Jamie Pinkham\n *\n "
},
{
"path": "Example/Pods/SDWebImage/SDWebImage/SDWebImageCompat.m",
"chars": 2351,
"preview": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyri"
},
{
"path": "Example/Pods/SDWebImage/SDWebImage/SDWebImageDecoder.h",
"chars": 534,
"preview": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n * (c) james <https://git"
},
{
"path": "Example/Pods/SDWebImage/SDWebImage/SDWebImageDecoder.m",
"chars": 12037,
"preview": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n * (c) james <https://git"
},
{
"path": "Example/Pods/SDWebImage/SDWebImage/SDWebImageDownloader.h",
"chars": 9306,
"preview": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyri"
},
{
"path": "Example/Pods/SDWebImage/SDWebImage/SDWebImageDownloader.m",
"chars": 14374,
"preview": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyri"
},
{
"path": "Example/Pods/SDWebImage/SDWebImage/SDWebImageDownloaderOperation.h",
"chars": 4682,
"preview": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyri"
},
{
"path": "Example/Pods/SDWebImage/SDWebImage/SDWebImageDownloaderOperation.m",
"chars": 24239,
"preview": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyri"
},
{
"path": "Example/Pods/SDWebImage/SDWebImage/SDWebImageManager.h",
"chars": 10722,
"preview": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyri"
},
{
"path": "Example/Pods/SDWebImage/SDWebImage/SDWebImageManager.m",
"chars": 16094,
"preview": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyri"
},
{
"path": "Example/Pods/SDWebImage/SDWebImage/SDWebImageOperation.h",
"chars": 329,
"preview": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyri"
},
{
"path": "Example/Pods/SDWebImage/SDWebImage/SDWebImagePrefetcher.h",
"chars": 4185,
"preview": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyri"
},
{
"path": "Example/Pods/SDWebImage/SDWebImage/SDWebImagePrefetcher.m",
"chars": 5019,
"preview": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyri"
},
{
"path": "Example/Pods/SDWebImage/SDWebImage/UIButton+WebCache.h",
"chars": 11689,
"preview": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyri"
},
{
"path": "Example/Pods/SDWebImage/SDWebImage/UIButton+WebCache.m",
"chars": 7607,
"preview": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyri"
},
{
"path": "Example/Pods/SDWebImage/SDWebImage/UIImage+GIF.h",
"chars": 583,
"preview": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n * (c) Laurin Brandner\n *"
},
{
"path": "Example/Pods/SDWebImage/SDWebImage/UIImage+GIF.m",
"chars": 1692,
"preview": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n * (c) Laurin Brandner\n *"
},
{
"path": "Example/Pods/SDWebImage/SDWebImage/UIImage+MultiFormat.h",
"chars": 505,
"preview": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyri"
},
{
"path": "Example/Pods/SDWebImage/SDWebImage/UIImage+MultiFormat.m",
"chars": 4972,
"preview": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyri"
},
{
"path": "Example/Pods/SDWebImage/SDWebImage/UIImageView+HighlightedWebCache.h",
"chars": 4299,
"preview": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyri"
},
{
"path": "Example/Pods/SDWebImage/SDWebImage/UIImageView+HighlightedWebCache.m",
"chars": 2064,
"preview": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyri"
},
{
"path": "Example/Pods/SDWebImage/SDWebImage/UIImageView+WebCache.h",
"chars": 8730,
"preview": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyri"
},
{
"path": "Example/Pods/SDWebImage/SDWebImage/UIImageView+WebCache.m",
"chars": 5454,
"preview": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyri"
},
{
"path": "Example/Pods/SDWebImage/SDWebImage/UIView+WebCache.h",
"chars": 2899,
"preview": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyri"
},
{
"path": "Example/Pods/SDWebImage/SDWebImage/UIView+WebCache.m",
"chars": 7444,
"preview": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyri"
},
{
"path": "Example/Pods/SDWebImage/SDWebImage/UIView+WebCacheOperation.h",
"chars": 1044,
"preview": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyri"
},
{
"path": "Example/Pods/SDWebImage/SDWebImage/UIView+WebCacheOperation.m",
"chars": 2133,
"preview": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyri"
},
{
"path": "Example/Pods/SVProgressHUD/LICENSE.txt",
"chars": 1283,
"preview": "Copyright (c) 2011-2017 Sam Vermette, Tobias Tiemerding and contributors.\n\nPermission is hereby granted, free of charge,"
},
{
"path": "Example/Pods/SVProgressHUD/README.md",
"chars": 10936,
"preview": "# SVProgressHUD\n\n\n"
},
{
"path": "Example/Pods/SVProgressHUD/SVProgressHUD/SVIndefiniteAnimatedView.m",
"chars": 5333,
"preview": "//\n// SVIndefiniteAnimatedView.m\n// SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD\n//\n// Copyright (c)"
},
{
"path": "Example/Pods/SVProgressHUD/SVProgressHUD/SVProgressAnimatedView.h",
"chars": 445,
"preview": "//\n// SVProgressAnimatedView.h\n// SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD\n//\n// Copyright (c) 2"
},
{
"path": "Example/Pods/SVProgressHUD/SVProgressHUD/SVProgressAnimatedView.m",
"chars": 3105,
"preview": "//\n// SVProgressAnimatedView.m\n// SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD\n//\n// Copyright (c) 2"
},
{
"path": "Example/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.h",
"chars": 11289,
"preview": "//\n// SVProgressHUD.h\n// SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD\n//\n// Copyright (c) 2011-2017 "
},
{
"path": "Example/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.m",
"chars": 59718,
"preview": "//\n// SVProgressHUD.h\n// SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD\n//\n// Copyright (c) 2011-2017 "
},
{
"path": "Example/Pods/SVProgressHUD/SVProgressHUD/SVRadialGradientLayer.h",
"chars": 303,
"preview": "//\n// SVRadialGradientLayer.h\n// SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD\n//\n// Copyright (c) 20"
},
{
"path": "Example/Pods/SVProgressHUD/SVProgressHUD/SVRadialGradientLayer.m",
"chars": 909,
"preview": "//\n// SVRadialGradientLayer.m\n// SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD\n//\n// Copyright (c) 20"
},
{
"path": "Example/Pods/Target Support Files/HUPhotoBrowser/HUPhotoBrowser-dummy.m",
"chars": 132,
"preview": "#import <Foundation/Foundation.h>\n@interface PodsDummy_HUPhotoBrowser : NSObject\n@end\n@implementation PodsDummy_HUPhotoB"
},
{
"path": "Example/Pods/Target Support Files/HUPhotoBrowser/HUPhotoBrowser-prefix.pch",
"chars": 195,
"preview": "#ifdef __OBJC__\n#import <UIKit/UIKit.h>\n#else\n#ifndef FOUNDATION_EXPORT\n#if defined(__cplusplus)\n#define FOUNDATION_EXPO"
},
{
"path": "Example/Pods/Target Support Files/HUPhotoBrowser/HUPhotoBrowser.xcconfig",
"chars": 871,
"preview": "CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/HUPhotoBrowser\nGCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOA"
},
{
"path": "Example/Pods/Target Support Files/HUPhotoPicker/HUPhotoPicker-dummy.m",
"chars": 130,
"preview": "#import <Foundation/Foundation.h>\n@interface PodsDummy_HUPhotoPicker : NSObject\n@end\n@implementation PodsDummy_HUPhotoPi"
},
{
"path": "Example/Pods/Target Support Files/HUPhotoPicker/HUPhotoPicker-prefix.pch",
"chars": 195,
"preview": "#ifdef __OBJC__\n#import <UIKit/UIKit.h>\n#else\n#ifndef FOUNDATION_EXPORT\n#if defined(__cplusplus)\n#define FOUNDATION_EXPO"
},
{
"path": "Example/Pods/Target Support Files/HUPhotoPicker/HUPhotoPicker.xcconfig",
"chars": 768,
"preview": "CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/HUPhotoPicker\nGCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAP"
},
{
"path": "Example/Pods/Target Support Files/HUPhotoPicker/ResourceBundle-HUPhotoPicker-Info.plist",
"chars": 733,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "Example/Pods/Target Support Files/Pods-HUPhotoBrowser Demo/Pods-HUPhotoBrowser Demo-acknowledgements.markdown",
"chars": 4722,
"preview": "# Acknowledgements\nThis application makes use of the following third party libraries:\n\n## HUPhotoBrowser\n\nThe MIT Licens"
},
{
"path": "Example/Pods/Target Support Files/Pods-HUPhotoBrowser Demo/Pods-HUPhotoBrowser Demo-acknowledgements.plist",
"chars": 6198,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "Example/Pods/Target Support Files/Pods-HUPhotoBrowser Demo/Pods-HUPhotoBrowser Demo-dummy.m",
"chars": 152,
"preview": "#import <Foundation/Foundation.h>\n@interface PodsDummy_Pods_HUPhotoBrowser_Demo : NSObject\n@end\n@implementation PodsDumm"
},
{
"path": "Example/Pods/Target Support Files/Pods-HUPhotoBrowser Demo/Pods-HUPhotoBrowser Demo-frameworks.sh",
"chars": 4423,
"preview": "#!/bin/sh\nset -e\n\necho \"mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}\"\nmkdir -p \"${CONFIGURATION_BUILD_D"
},
{
"path": "Example/Pods/Target Support Files/Pods-HUPhotoBrowser Demo/Pods-HUPhotoBrowser Demo-resources.sh",
"chars": 5960,
"preview": "#!/bin/sh\nset -e\n\nmkdir -p \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\n\nRESOURCES_TO_COPY=${PODS_ROOT}/re"
},
{
"path": "Example/Pods/Target Support Files/Pods-HUPhotoBrowser Demo/Pods-HUPhotoBrowser Demo.debug.xcconfig",
"chars": 1189,
"preview": "GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1\nHEADER_SEARCH_PATHS = $(inherited) \"${PODS_ROOT}/Headers/Public\""
},
{
"path": "Example/Pods/Target Support Files/Pods-HUPhotoBrowser Demo/Pods-HUPhotoBrowser Demo.release.xcconfig",
"chars": 1189,
"preview": "GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1\nHEADER_SEARCH_PATHS = $(inherited) \"${PODS_ROOT}/Headers/Public\""
},
{
"path": "Example/Pods/Target Support Files/Pods-HUPhotoBrowser DemoTests/Pods-HUPhotoBrowser DemoTests-acknowledgements.markdown",
"chars": 133,
"preview": "# Acknowledgements\nThis application makes use of the following third party libraries:\nGenerated by CocoaPods - https://c"
},
{
"path": "Example/Pods/Target Support Files/Pods-HUPhotoBrowser DemoTests/Pods-HUPhotoBrowser DemoTests-acknowledgements.plist",
"chars": 805,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "Example/Pods/Target Support Files/Pods-HUPhotoBrowser DemoTests/Pods-HUPhotoBrowser DemoTests-dummy.m",
"chars": 162,
"preview": "#import <Foundation/Foundation.h>\n@interface PodsDummy_Pods_HUPhotoBrowser_DemoTests : NSObject\n@end\n@implementation Pod"
},
{
"path": "Example/Pods/Target Support Files/Pods-HUPhotoBrowser DemoTests/Pods-HUPhotoBrowser DemoTests-frameworks.sh",
"chars": 4423,
"preview": "#!/bin/sh\nset -e\n\necho \"mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}\"\nmkdir -p \"${CONFIGURATION_BUILD_D"
},
{
"path": "Example/Pods/Target Support Files/Pods-HUPhotoBrowser DemoTests/Pods-HUPhotoBrowser DemoTests-resources.sh",
"chars": 5528,
"preview": "#!/bin/sh\nset -e\n\nmkdir -p \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\n\nRESOURCES_TO_COPY=${PODS_ROOT}/re"
},
{
"path": "Example/Pods/Target Support Files/Pods-HUPhotoBrowser DemoTests/Pods-HUPhotoBrowser DemoTests.debug.xcconfig",
"chars": 790,
"preview": "GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1\nHEADER_SEARCH_PATHS = $(inherited) \"${PODS_ROOT}/Headers/Public\""
},
{
"path": "Example/Pods/Target Support Files/Pods-HUPhotoBrowser DemoTests/Pods-HUPhotoBrowser DemoTests.release.xcconfig",
"chars": 790,
"preview": "GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1\nHEADER_SEARCH_PATHS = $(inherited) \"${PODS_ROOT}/Headers/Public\""
},
{
"path": "Example/Pods/Target Support Files/SDWebImage/SDWebImage-dummy.m",
"chars": 124,
"preview": "#import <Foundation/Foundation.h>\n@interface PodsDummy_SDWebImage : NSObject\n@end\n@implementation PodsDummy_SDWebImage\n@"
},
{
"path": "Example/Pods/Target Support Files/SDWebImage/SDWebImage-prefix.pch",
"chars": 195,
"preview": "#ifdef __OBJC__\n#import <UIKit/UIKit.h>\n#else\n#ifndef FOUNDATION_EXPORT\n#if defined(__cplusplus)\n#define FOUNDATION_EXPO"
},
{
"path": "Example/Pods/Target Support Files/SDWebImage/SDWebImage.xcconfig",
"chars": 741,
"preview": "CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/SDWebImage\nGCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS"
},
{
"path": "Example/Pods/Target Support Files/SVProgressHUD/SVProgressHUD-dummy.m",
"chars": 130,
"preview": "#import <Foundation/Foundation.h>\n@interface PodsDummy_SVProgressHUD : NSObject\n@end\n@implementation PodsDummy_SVProgres"
},
{
"path": "Example/Pods/Target Support Files/SVProgressHUD/SVProgressHUD-prefix.pch",
"chars": 195,
"preview": "#ifdef __OBJC__\n#import <UIKit/UIKit.h>\n#else\n#ifndef FOUNDATION_EXPORT\n#if defined(__cplusplus)\n#define FOUNDATION_EXPO"
},
{
"path": "Example/Pods/Target Support Files/SVProgressHUD/SVProgressHUD.xcconfig",
"chars": 753,
"preview": "CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/SVProgressHUD\nGCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAP"
},
{
"path": "HUPhotoBrowser/HUPhotoBrowser.h",
"chars": 1788,
"preview": "\n//\n// HUPhotoBrowser.h\n// HUPhotoBrowser\n//\n// Created by mac on 16/2/24.\n// Copyright (c) 2016年 hujewelz. All righ"
},
{
"path": "HUPhotoBrowser/HUPhotoBrowser.m",
"chars": 14695,
"preview": "//\n// HUPhotoBrowser.m\n// HUPhotoBrowser\n//\n// Created by mac on 16/2/24.\n// Copyright (c) 2016年 jinhuadiqigan. All "
},
{
"path": "HUPhotoBrowser/HUPhotoBrowserCell.h",
"chars": 866,
"preview": "//\n// HUPhotoBrowserCell.h\n// HUPhotoBrowser\n//\n// Created by mac on 16/2/24.\n// Copyright (c) 2016年 hujewelz. All r"
},
{
"path": "HUPhotoBrowser/HUPhotoBrowserCell.m",
"chars": 5900,
"preview": "//\n// HUPhotoBrowserCell.m\n// HUPhotoBrowser\n//\n// Created by mac on 16/2/24.\n// Copyright (c) 2016年 jinhuadiqigan. "
},
{
"path": "HUPhotoBrowser/HUWebImageDownloader/HUWebImage.h",
"chars": 281,
"preview": "//\n// HUWebImage.h\n// HUPhotoBrowser\n//\n// Created by mac on 16/2/25.\n// Copyright (c) 2016年 hujewelz. All rights re"
},
{
"path": "HUPhotoBrowser/HUWebImageDownloader/HUWebImageDownloadOperation.h",
"chars": 446,
"preview": "//\n// HUWebImageDownloadOperation.h\n// Pods\n//\n// Created by mac on 16/4/19.\n//\n//\n\n#import <UIKit/UIKit.h>\n\ntypedef "
},
{
"path": "HUPhotoBrowser/HUWebImageDownloader/HUWebImageDownloadOperation.m",
"chars": 3653,
"preview": "//\n// HUWebImageDownloadOperation.m\n// Pods\n//\n// Created by mac on 16/4/19.\n//\n//\n\n#import \"HUWebImageDownloadOperat"
},
{
"path": "HUPhotoBrowser/HUWebImageDownloader/HUWebImageDownloader.h",
"chars": 1773,
"preview": "//\n// HUWebImageDownloader.h\n// HUPhotoBrowser\n//\n// Created by mac on 16/2/25.\n// Copyright (c) 2016年 hujewelz. All"
},
{
"path": "HUPhotoBrowser/HUWebImageDownloader/HUWebImageDownloader.m",
"chars": 8903,
"preview": "//\n// HUWebImageDownloader.m\n// HUPhotoBrowser\n//\n// Created by mac on 16/2/25.\n// Copyright (c) 2016年 hujewelz. All"
},
{
"path": "HUPhotoBrowser/HUWebImageDownloader/UIImage+HUExtension.h",
"chars": 252,
"preview": "//\n// UIImage+HUExtension.h\n// HUPhotoBrowser\n//\n// Created by mac on 16/2/25.\n// Copyright (c) 2016年 hujewelz. All "
},
{
"path": "HUPhotoBrowser/HUWebImageDownloader/UIImage+HUExtension.m",
"chars": 3494,
"preview": "//\n// UIImage+HUExtension.m\n// HUPhotoBrowser\n//\n// Created by mac on 16/2/25.\n// Copyright (c) 2016年 hujewelz. All "
},
{
"path": "HUPhotoBrowser/HUWebImageDownloader/UIImageView+HUWebImage.h",
"chars": 583,
"preview": "//\n// UIImageView+HUWebImage.h\n// HUPhotoBrowser\n//\n// Created by mac on 16/2/25.\n// Copyright (c) 2016年 hujewelz. A"
},
{
"path": "HUPhotoBrowser/HUWebImageDownloader/UIImageView+HUWebImage.m",
"chars": 3092,
"preview": "//\n// UIImageView+HUWebImage.m\n// HUPhotoBrowser\n//\n// Created by mac on 16/2/25.\n// Copyright (c) 2016年 hujewelz. A"
},
{
"path": "HUPhotoBrowser/UIView+frame.h",
"chars": 450,
"preview": "//\n// UIView+Extension.h\n// 微博\n//\n// Created by jewelz on 15/4/23.\n// Copyright (c) 2015年 yangtzeu. All rights reser"
},
{
"path": "HUPhotoBrowser/UIView+frame.m",
"chars": 1209,
"preview": "//\n// UIView+Extension.m\n// 微博\n//\n// Created by jewelz on 15/4/23.\n// Copyright (c) 2015年 yangtzeu. All rights reser"
},
{
"path": "HUPhotoBrowser/hu_const.h",
"chars": 694,
"preview": "//\n// const.h\n// HUPhotoBrowser\n//\n// Created by mac on 16/2/24.\n// Copyright (c) 2016年 jinhuadiqigan. All rights re"
},
{
"path": "HUPhotoBrowser.podspec",
"chars": 1194,
"preview": "#\n# Be sure to run `pod spec lint HUPhotoBrowser.podspec' to ensure this is a\n# valid spec and to remove all comments "
},
{
"path": "HUPhotoBrowser.xcodeproj/project.pbxproj",
"chars": 25695,
"preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
},
{
"path": "HUPhotoBrowser.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
"chars": 159,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n version = \"1.0\">\n <FileRef\n location = \"self:HUPhotoBrowser."
},
{
"path": "HUPhotoBrowser.xcodeproj/project.xcworkspace/xcshareddata/HUPhotoBrowser.xccheckout",
"chars": 1524,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "HUPhotoBrowser.xcodeproj/xcuserdata/jewelz.xcuserdatad/xcschemes/HUPhotoBrowser.xcscheme",
"chars": 3728,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"0730\"\n version = \"1.3\">\n <BuildAction\n "
},
{
"path": "HUPhotoBrowser.xcodeproj/xcuserdata/jewelz.xcuserdatad/xcschemes/xcschememanagement.plist",
"chars": 576,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "HUPhotoBrowser.xcodeproj/xcuserdata/mac.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist",
"chars": 91,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Bucket\n type = \"1\"\n version = \"2.0\">\n</Bucket>\n"
},
{
"path": "HUPhotoBrowser.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/HUPhotoBrowser.xcscheme",
"chars": 4334,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"0720\"\n version = \"1.3\">\n <BuildAction\n "
},
{
"path": "HUPhotoBrowser.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/xcschememanagement.plist",
"chars": 576,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "HUPhotoBrowserTests/Info.plist",
"chars": 733,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "LICENSE",
"chars": 1075,
"preview": "The MIT License (MIT)\n\nCopyright (c) 2016 Jewelz Hu\n\nPermission is hereby granted, free of charge, to any person obtaini"
},
{
"path": "README.md",
"chars": 2523,
"preview": "# HUPhotoBrowser\n[](https://raw.githubusercontent.co"
}
]
// ... and 4 more files (download for full content)
About this extraction
This page contains the full source code of the hujewelz/HUPhotoBrowser GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 189 files (709.1 KB), approximately 196.1k tokens, and a symbol index with 9 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.