This commit is contained in:
wu736139669
2015-04-02 13:49:37 +08:00
parent 869b50c9a0
commit edf091ccd5
200 changed files with 3142 additions and 4246 deletions
+202
View File
@@ -39,6 +39,33 @@
A9617A551ACC27860024AE4A /* SetUpViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = A9617A531ACC27860024AE4A /* SetUpViewController.xib */; };
A9617A581ACC2EBC0024AE4A /* mine-setting-icon-click@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A9617A561ACC2EBC0024AE4A /* mine-setting-icon-click@2x.png */; };
A9617A591ACC2EBC0024AE4A /* mine-setting-icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A9617A571ACC2EBC0024AE4A /* mine-setting-icon@2x.png */; };
A96862421ACCF0B400DDAA6B /* LICENCE.txt in Resources */ = {isa = PBXBuildFile; fileRef = A968622A1ACCF0B400DDAA6B /* LICENCE.txt */; };
A96862431ACCF0B400DDAA6B /* MWCaptionView.m in Sources */ = {isa = PBXBuildFile; fileRef = A968622E1ACCF0B400DDAA6B /* MWCaptionView.m */; };
A96862441ACCF0B400DDAA6B /* MWGridCell.m in Sources */ = {isa = PBXBuildFile; fileRef = A96862311ACCF0B400DDAA6B /* MWGridCell.m */; };
A96862451ACCF0B400DDAA6B /* MWGridViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A96862331ACCF0B400DDAA6B /* MWGridViewController.m */; };
A96862461ACCF0B400DDAA6B /* MWPhoto.m in Sources */ = {isa = PBXBuildFile; fileRef = A96862351ACCF0B400DDAA6B /* MWPhoto.m */; };
A96862471ACCF0B400DDAA6B /* MWPhotoBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = A96862371ACCF0B400DDAA6B /* MWPhotoBrowser.m */; };
A96862481ACCF0B400DDAA6B /* MWTapDetectingImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = A968623B1ACCF0B400DDAA6B /* MWTapDetectingImageView.m */; };
A96862491ACCF0B400DDAA6B /* MWTapDetectingView.m in Sources */ = {isa = PBXBuildFile; fileRef = A968623D1ACCF0B400DDAA6B /* MWTapDetectingView.m */; };
A968624A1ACCF0B400DDAA6B /* MWZoomingScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = A968623F1ACCF0B400DDAA6B /* MWZoomingScrollView.m */; };
A968624B1ACCF0B400DDAA6B /* MWPhotoBrowser.bundle in Resources */ = {isa = PBXBuildFile; fileRef = A96862401ACCF0B400DDAA6B /* MWPhotoBrowser.bundle */; };
A968624C1ACCF0B400DDAA6B /* README.md in Sources */ = {isa = PBXBuildFile; fileRef = A96862411ACCF0B400DDAA6B /* README.md */; };
A96862501ACCF12300DDAA6B /* DACircularProgressView.m in Sources */ = {isa = PBXBuildFile; fileRef = A968624F1ACCF12300DDAA6B /* DACircularProgressView.m */; };
A968626E1ACCF13300DDAA6B /* NSIndexPath+PSTCollectionViewAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = A96862531ACCF13300DDAA6B /* NSIndexPath+PSTCollectionViewAdditions.m */; };
A968626F1ACCF13300DDAA6B /* PSTCollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = A96862551ACCF13300DDAA6B /* PSTCollectionView.m */; };
A96862701ACCF13300DDAA6B /* PSTCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = A96862571ACCF13300DDAA6B /* PSTCollectionViewCell.m */; };
A96862711ACCF13300DDAA6B /* PSTCollectionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A968625A1ACCF13300DDAA6B /* PSTCollectionViewController.m */; };
A96862721ACCF13300DDAA6B /* PSTCollectionViewData.m in Sources */ = {isa = PBXBuildFile; fileRef = A968625C1ACCF13300DDAA6B /* PSTCollectionViewData.m */; };
A96862731ACCF13300DDAA6B /* PSTCollectionViewFlowLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = A968625E1ACCF13300DDAA6B /* PSTCollectionViewFlowLayout.m */; };
A96862741ACCF13300DDAA6B /* PSTCollectionViewItemKey.m in Sources */ = {isa = PBXBuildFile; fileRef = A96862601ACCF13300DDAA6B /* PSTCollectionViewItemKey.m */; };
A96862751ACCF13300DDAA6B /* PSTCollectionViewLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = A96862631ACCF13300DDAA6B /* PSTCollectionViewLayout.m */; };
A96862761ACCF13300DDAA6B /* PSTCollectionViewUpdateItem.m in Sources */ = {isa = PBXBuildFile; fileRef = A96862651ACCF13300DDAA6B /* PSTCollectionViewUpdateItem.m */; };
A96862771ACCF13300DDAA6B /* PSTGridLayoutInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = A96862671ACCF13300DDAA6B /* PSTGridLayoutInfo.m */; };
A96862781ACCF13300DDAA6B /* PSTGridLayoutItem.m in Sources */ = {isa = PBXBuildFile; fileRef = A96862691ACCF13300DDAA6B /* PSTGridLayoutItem.m */; };
A96862791ACCF13300DDAA6B /* PSTGridLayoutRow.m in Sources */ = {isa = PBXBuildFile; fileRef = A968626B1ACCF13300DDAA6B /* PSTGridLayoutRow.m */; };
A968627A1ACCF13300DDAA6B /* PSTGridLayoutSection.m in Sources */ = {isa = PBXBuildFile; fileRef = A968626D1ACCF13300DDAA6B /* PSTGridLayoutSection.m */; };
A968627C1ACCF3D200DDAA6B /* cellmorebtnnormalN@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A968627B1ACCF3D200DDAA6B /* cellmorebtnnormalN@2x.png */; };
A968627E1ACCF46E00DDAA6B /* cellmorebtnclickN@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A968627D1ACCF46E00DDAA6B /* cellmorebtnclickN@2x.png */; };
A97559A01ACB88FE004ADA42 /* AWordDefault.m in Sources */ = {isa = PBXBuildFile; fileRef = A975599F1ACB88FE004ADA42 /* AWordDefault.m */; };
A97559A31ACB8CE0004ADA42 /* AWordUser.m in Sources */ = {isa = PBXBuildFile; fileRef = A97559A21ACB8CE0004ADA42 /* AWordUser.m */; };
A97559A51ACB9748004ADA42 /* setup-head-default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A97559A41ACB9748004ADA42 /* setup-head-default@2x.png */; };
@@ -161,6 +188,60 @@
A9617A531ACC27860024AE4A /* SetUpViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SetUpViewController.xib; sourceTree = "<group>"; };
A9617A561ACC2EBC0024AE4A /* mine-setting-icon-click@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "mine-setting-icon-click@2x.png"; sourceTree = "<group>"; };
A9617A571ACC2EBC0024AE4A /* mine-setting-icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "mine-setting-icon@2x.png"; sourceTree = "<group>"; };
A968622A1ACCF0B400DDAA6B /* LICENCE.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENCE.txt; sourceTree = "<group>"; };
A968622D1ACCF0B400DDAA6B /* MWCaptionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWCaptionView.h; sourceTree = "<group>"; };
A968622E1ACCF0B400DDAA6B /* MWCaptionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWCaptionView.m; sourceTree = "<group>"; };
A968622F1ACCF0B400DDAA6B /* MWCommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWCommon.h; sourceTree = "<group>"; };
A96862301ACCF0B400DDAA6B /* MWGridCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWGridCell.h; sourceTree = "<group>"; };
A96862311ACCF0B400DDAA6B /* MWGridCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWGridCell.m; sourceTree = "<group>"; };
A96862321ACCF0B400DDAA6B /* MWGridViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWGridViewController.h; sourceTree = "<group>"; };
A96862331ACCF0B400DDAA6B /* MWGridViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWGridViewController.m; sourceTree = "<group>"; };
A96862341ACCF0B400DDAA6B /* MWPhoto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWPhoto.h; sourceTree = "<group>"; };
A96862351ACCF0B400DDAA6B /* MWPhoto.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWPhoto.m; sourceTree = "<group>"; };
A96862361ACCF0B400DDAA6B /* MWPhotoBrowser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWPhotoBrowser.h; sourceTree = "<group>"; };
A96862371ACCF0B400DDAA6B /* MWPhotoBrowser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWPhotoBrowser.m; sourceTree = "<group>"; };
A96862381ACCF0B400DDAA6B /* MWPhotoBrowserPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWPhotoBrowserPrivate.h; sourceTree = "<group>"; };
A96862391ACCF0B400DDAA6B /* MWPhotoProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWPhotoProtocol.h; sourceTree = "<group>"; };
A968623A1ACCF0B400DDAA6B /* MWTapDetectingImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWTapDetectingImageView.h; sourceTree = "<group>"; };
A968623B1ACCF0B400DDAA6B /* MWTapDetectingImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWTapDetectingImageView.m; sourceTree = "<group>"; };
A968623C1ACCF0B400DDAA6B /* MWTapDetectingView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWTapDetectingView.h; sourceTree = "<group>"; };
A968623D1ACCF0B400DDAA6B /* MWTapDetectingView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWTapDetectingView.m; sourceTree = "<group>"; };
A968623E1ACCF0B400DDAA6B /* MWZoomingScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWZoomingScrollView.h; sourceTree = "<group>"; };
A968623F1ACCF0B400DDAA6B /* MWZoomingScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWZoomingScrollView.m; sourceTree = "<group>"; };
A96862401ACCF0B400DDAA6B /* MWPhotoBrowser.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = MWPhotoBrowser.bundle; sourceTree = "<group>"; };
A96862411ACCF0B400DDAA6B /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
A968624E1ACCF12300DDAA6B /* DACircularProgressView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DACircularProgressView.h; sourceTree = "<group>"; };
A968624F1ACCF12300DDAA6B /* DACircularProgressView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DACircularProgressView.m; sourceTree = "<group>"; };
A96862521ACCF13300DDAA6B /* NSIndexPath+PSTCollectionViewAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSIndexPath+PSTCollectionViewAdditions.h"; sourceTree = "<group>"; };
A96862531ACCF13300DDAA6B /* NSIndexPath+PSTCollectionViewAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSIndexPath+PSTCollectionViewAdditions.m"; sourceTree = "<group>"; };
A96862541ACCF13300DDAA6B /* PSTCollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSTCollectionView.h; sourceTree = "<group>"; };
A96862551ACCF13300DDAA6B /* PSTCollectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSTCollectionView.m; sourceTree = "<group>"; };
A96862561ACCF13300DDAA6B /* PSTCollectionViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSTCollectionViewCell.h; sourceTree = "<group>"; };
A96862571ACCF13300DDAA6B /* PSTCollectionViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSTCollectionViewCell.m; sourceTree = "<group>"; };
A96862581ACCF13300DDAA6B /* PSTCollectionViewCommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSTCollectionViewCommon.h; sourceTree = "<group>"; };
A96862591ACCF13300DDAA6B /* PSTCollectionViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSTCollectionViewController.h; sourceTree = "<group>"; };
A968625A1ACCF13300DDAA6B /* PSTCollectionViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSTCollectionViewController.m; sourceTree = "<group>"; };
A968625B1ACCF13300DDAA6B /* PSTCollectionViewData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSTCollectionViewData.h; sourceTree = "<group>"; };
A968625C1ACCF13300DDAA6B /* PSTCollectionViewData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSTCollectionViewData.m; sourceTree = "<group>"; };
A968625D1ACCF13300DDAA6B /* PSTCollectionViewFlowLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSTCollectionViewFlowLayout.h; sourceTree = "<group>"; };
A968625E1ACCF13300DDAA6B /* PSTCollectionViewFlowLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSTCollectionViewFlowLayout.m; sourceTree = "<group>"; };
A968625F1ACCF13300DDAA6B /* PSTCollectionViewItemKey.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSTCollectionViewItemKey.h; sourceTree = "<group>"; };
A96862601ACCF13300DDAA6B /* PSTCollectionViewItemKey.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSTCollectionViewItemKey.m; sourceTree = "<group>"; };
A96862611ACCF13300DDAA6B /* PSTCollectionViewLayout+Internals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "PSTCollectionViewLayout+Internals.h"; sourceTree = "<group>"; };
A96862621ACCF13300DDAA6B /* PSTCollectionViewLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSTCollectionViewLayout.h; sourceTree = "<group>"; };
A96862631ACCF13300DDAA6B /* PSTCollectionViewLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSTCollectionViewLayout.m; sourceTree = "<group>"; };
A96862641ACCF13300DDAA6B /* PSTCollectionViewUpdateItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSTCollectionViewUpdateItem.h; sourceTree = "<group>"; };
A96862651ACCF13300DDAA6B /* PSTCollectionViewUpdateItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSTCollectionViewUpdateItem.m; sourceTree = "<group>"; };
A96862661ACCF13300DDAA6B /* PSTGridLayoutInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSTGridLayoutInfo.h; sourceTree = "<group>"; };
A96862671ACCF13300DDAA6B /* PSTGridLayoutInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSTGridLayoutInfo.m; sourceTree = "<group>"; };
A96862681ACCF13300DDAA6B /* PSTGridLayoutItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSTGridLayoutItem.h; sourceTree = "<group>"; };
A96862691ACCF13300DDAA6B /* PSTGridLayoutItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSTGridLayoutItem.m; sourceTree = "<group>"; };
A968626A1ACCF13300DDAA6B /* PSTGridLayoutRow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSTGridLayoutRow.h; sourceTree = "<group>"; };
A968626B1ACCF13300DDAA6B /* PSTGridLayoutRow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSTGridLayoutRow.m; sourceTree = "<group>"; };
A968626C1ACCF13300DDAA6B /* PSTGridLayoutSection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSTGridLayoutSection.h; sourceTree = "<group>"; };
A968626D1ACCF13300DDAA6B /* PSTGridLayoutSection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSTGridLayoutSection.m; sourceTree = "<group>"; };
A968627B1ACCF3D200DDAA6B /* cellmorebtnnormalN@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "cellmorebtnnormalN@2x.png"; sourceTree = "<group>"; };
A968627D1ACCF46E00DDAA6B /* cellmorebtnclickN@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "cellmorebtnclickN@2x.png"; sourceTree = "<group>"; };
A975599E1ACB88FE004ADA42 /* AWordDefault.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWordDefault.h; sourceTree = "<group>"; };
A975599F1ACB88FE004ADA42 /* AWordDefault.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWordDefault.m; sourceTree = "<group>"; };
A97559A11ACB8CE0004ADA42 /* AWordUser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWordUser.h; sourceTree = "<group>"; };
@@ -389,6 +470,95 @@
path = My;
sourceTree = "<group>";
};
A96862291ACCF0B400DDAA6B /* MWPhotoBrowser */ = {
isa = PBXGroup;
children = (
A968622A1ACCF0B400DDAA6B /* LICENCE.txt */,
A968622B1ACCF0B400DDAA6B /* MWPhotoBrowser */,
A96862411ACCF0B400DDAA6B /* README.md */,
);
path = MWPhotoBrowser;
sourceTree = "<group>";
};
A968622B1ACCF0B400DDAA6B /* MWPhotoBrowser */ = {
isa = PBXGroup;
children = (
A968622C1ACCF0B400DDAA6B /* Classes */,
A96862401ACCF0B400DDAA6B /* MWPhotoBrowser.bundle */,
);
path = MWPhotoBrowser;
sourceTree = "<group>";
};
A968622C1ACCF0B400DDAA6B /* Classes */ = {
isa = PBXGroup;
children = (
A968622D1ACCF0B400DDAA6B /* MWCaptionView.h */,
A968622E1ACCF0B400DDAA6B /* MWCaptionView.m */,
A968622F1ACCF0B400DDAA6B /* MWCommon.h */,
A96862301ACCF0B400DDAA6B /* MWGridCell.h */,
A96862311ACCF0B400DDAA6B /* MWGridCell.m */,
A96862321ACCF0B400DDAA6B /* MWGridViewController.h */,
A96862331ACCF0B400DDAA6B /* MWGridViewController.m */,
A96862341ACCF0B400DDAA6B /* MWPhoto.h */,
A96862351ACCF0B400DDAA6B /* MWPhoto.m */,
A96862361ACCF0B400DDAA6B /* MWPhotoBrowser.h */,
A96862371ACCF0B400DDAA6B /* MWPhotoBrowser.m */,
A96862381ACCF0B400DDAA6B /* MWPhotoBrowserPrivate.h */,
A96862391ACCF0B400DDAA6B /* MWPhotoProtocol.h */,
A968623A1ACCF0B400DDAA6B /* MWTapDetectingImageView.h */,
A968623B1ACCF0B400DDAA6B /* MWTapDetectingImageView.m */,
A968623C1ACCF0B400DDAA6B /* MWTapDetectingView.h */,
A968623D1ACCF0B400DDAA6B /* MWTapDetectingView.m */,
A968623E1ACCF0B400DDAA6B /* MWZoomingScrollView.h */,
A968623F1ACCF0B400DDAA6B /* MWZoomingScrollView.m */,
);
path = Classes;
sourceTree = "<group>";
};
A968624D1ACCF12300DDAA6B /* DACircularProgress */ = {
isa = PBXGroup;
children = (
A968624E1ACCF12300DDAA6B /* DACircularProgressView.h */,
A968624F1ACCF12300DDAA6B /* DACircularProgressView.m */,
);
path = DACircularProgress;
sourceTree = "<group>";
};
A96862511ACCF13300DDAA6B /* PSTCollectionView */ = {
isa = PBXGroup;
children = (
A96862521ACCF13300DDAA6B /* NSIndexPath+PSTCollectionViewAdditions.h */,
A96862531ACCF13300DDAA6B /* NSIndexPath+PSTCollectionViewAdditions.m */,
A96862541ACCF13300DDAA6B /* PSTCollectionView.h */,
A96862551ACCF13300DDAA6B /* PSTCollectionView.m */,
A96862561ACCF13300DDAA6B /* PSTCollectionViewCell.h */,
A96862571ACCF13300DDAA6B /* PSTCollectionViewCell.m */,
A96862581ACCF13300DDAA6B /* PSTCollectionViewCommon.h */,
A96862591ACCF13300DDAA6B /* PSTCollectionViewController.h */,
A968625A1ACCF13300DDAA6B /* PSTCollectionViewController.m */,
A968625B1ACCF13300DDAA6B /* PSTCollectionViewData.h */,
A968625C1ACCF13300DDAA6B /* PSTCollectionViewData.m */,
A968625D1ACCF13300DDAA6B /* PSTCollectionViewFlowLayout.h */,
A968625E1ACCF13300DDAA6B /* PSTCollectionViewFlowLayout.m */,
A968625F1ACCF13300DDAA6B /* PSTCollectionViewItemKey.h */,
A96862601ACCF13300DDAA6B /* PSTCollectionViewItemKey.m */,
A96862611ACCF13300DDAA6B /* PSTCollectionViewLayout+Internals.h */,
A96862621ACCF13300DDAA6B /* PSTCollectionViewLayout.h */,
A96862631ACCF13300DDAA6B /* PSTCollectionViewLayout.m */,
A96862641ACCF13300DDAA6B /* PSTCollectionViewUpdateItem.h */,
A96862651ACCF13300DDAA6B /* PSTCollectionViewUpdateItem.m */,
A96862661ACCF13300DDAA6B /* PSTGridLayoutInfo.h */,
A96862671ACCF13300DDAA6B /* PSTGridLayoutInfo.m */,
A96862681ACCF13300DDAA6B /* PSTGridLayoutItem.h */,
A96862691ACCF13300DDAA6B /* PSTGridLayoutItem.m */,
A968626A1ACCF13300DDAA6B /* PSTGridLayoutRow.h */,
A968626B1ACCF13300DDAA6B /* PSTGridLayoutRow.m */,
A968626C1ACCF13300DDAA6B /* PSTGridLayoutSection.h */,
A968626D1ACCF13300DDAA6B /* PSTGridLayoutSection.m */,
);
path = PSTCollectionView;
sourceTree = "<group>";
};
A97559AE1ACBC615004ADA42 /* Note */ = {
isa = PBXGroup;
children = (
@@ -512,6 +682,9 @@
A97C54D91AC9014D0038818A /* Vender */ = {
isa = PBXGroup;
children = (
A96862511ACCF13300DDAA6B /* PSTCollectionView */,
A968624D1ACCF12300DDAA6B /* DACircularProgress */,
A96862291ACCF0B400DDAA6B /* MWPhotoBrowser */,
A97559B41ACBD99E004ADA42 /* UIPlaceHolderTextView */,
A98F98461ACA29B5007C4594 /* UMSocial_Sdk_Extra_Frameworks */,
A9B4E39B1AC9908E00A1DBDF /* UMAnalytics_Sdk_3.4.6 */,
@@ -544,6 +717,8 @@
A97C54E21AC91FD70038818A /* Resource */ = {
isa = PBXGroup;
children = (
A968627D1ACCF46E00DDAA6B /* cellmorebtnclickN@2x.png */,
A968627B1ACCF3D200DDAA6B /* cellmorebtnnormalN@2x.png */,
A9617A561ACC2EBC0024AE4A /* mine-setting-icon-click@2x.png */,
A9617A571ACC2EBC0024AE4A /* mine-setting-icon@2x.png */,
A97559C61ACBF0BC004ADA42 /* btn_bad_clicked@2x.png */,
@@ -803,12 +978,14 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
A968624B1ACCF0B400DDAA6B /* MWPhotoBrowser.bundle in Resources */,
A93442001ACA919F00A6B233 /* tabbarVoiceClick@2x.png in Resources */,
A97C55001AC933AD0038818A /* UMSCommentDetailController.xib in Resources */,
A93441F21ACA916D00A6B233 /* tabbarQuotationClick@2x.png in Resources */,
A93442031ACA981D00A6B233 /* Default-568h@2x.png in Resources */,
A9FAD4321AC923FC007ADC10 /* MyViewController.xib in Resources */,
A93441FF1ACA919F00A6B233 /* tabbarVoice@2x.png in Resources */,
A968627E1ACCF46E00DDAA6B /* cellmorebtnclickN@2x.png in Resources */,
A93441FA1ACA919500A6B233 /* tabbarQuotation-dark@2x.png in Resources */,
A97559D01ACBF0BC004ADA42 /* btn_share_clicked@2x.png in Resources */,
A955109B1AC39E6A0006D16F /* Main.storyboard in Resources */,
@@ -819,6 +996,7 @@
A97559CF1ACBF0BC004ADA42 /* btn_good@2x.png in Resources */,
A97559CC1ACBF0BC004ADA42 /* btn_bad_clicked@2x.png in Resources */,
A97DBE461ACAE7B500705682 /* iconWeixin@2x.png in Resources */,
A96862421ACCF0B400DDAA6B /* LICENCE.txt in Resources */,
A97C55071AC933AD0038818A /* UMSShareListController.xib in Resources */,
A93441EE1ACA8C8F00A6B233 /* defaultUserIcon@2x.png in Resources */,
A97559AC1ACB9DF0004ADA42 /* navigationButtonRefresh@2x.png in Resources */,
@@ -827,6 +1005,7 @@
A97C55041AC933AD0038818A /* UMShareEditViewControlleriPad.xib in Resources */,
A98F98541ACA29B5007C4594 /* TencentOpenApi_IOS_Bundle.bundle in Resources */,
A9617A591ACC2EBC0024AE4A /* mine-setting-icon@2x.png in Resources */,
A968627C1ACCF3D200DDAA6B /* cellmorebtnnormalN@2x.png in Resources */,
A95510A01AC39E6A0006D16F /* LaunchScreen.xib in Resources */,
A93442041ACA981D00A6B233 /* Default@2x.png in Resources */,
A97DBE401ACAE29E00705682 /* Icon@2x.png in Resources */,
@@ -917,30 +1096,53 @@
A97559A01ACB88FE004ADA42 /* AWordDefault.m in Sources */,
A97C54D31AC8F10F0038818A /* XiaoYuAPIClient.m in Sources */,
A97559C41ACBEE99004ADA42 /* NoteTableViewCell.m in Sources */,
A96862481ACCF0B400DDAA6B /* MWTapDetectingImageView.m in Sources */,
A9FAD4311AC923FC007ADC10 /* MyViewController.m in Sources */,
A97559BF1ACBE6C6004ADA42 /* NotePublishViewModel.m in Sources */,
A96862781ACCF13300DDAA6B /* PSTGridLayoutItem.m in Sources */,
A97559B21ACBC683004ADA42 /* NotePublishViewController.m in Sources */,
A97C54DD1AC901980038818A /* MBProgressHUD+Util.m in Sources */,
A96862721ACCF13300DDAA6B /* PSTCollectionViewData.m in Sources */,
A97DBE331ACAE10800705682 /* LoginViewController.m in Sources */,
A97559A31ACB8CE0004ADA42 /* AWordUser.m in Sources */,
A95510981AC39E6A0006D16F /* ViewController.m in Sources */,
A98F986B1ACA2FA9007C4594 /* BaseRefreshViewController.m in Sources */,
A96862471ACCF0B400DDAA6B /* MWPhotoBrowser.m in Sources */,
A9617A541ACC27860024AE4A /* SetUpViewController.m in Sources */,
A97C54D21AC8F10F0038818A /* AFgzipResponseSerializer.m in Sources */,
A9FAD4221AC922A5007ADC10 /* MainViewController.m in Sources */,
A96862761ACCF13300DDAA6B /* PSTCollectionViewUpdateItem.m in Sources */,
A968626E1ACCF13300DDAA6B /* NSIndexPath+PSTCollectionViewAdditions.m in Sources */,
A9FAD42C1AC923E2007ADC10 /* MessageViewController.m in Sources */,
A968627A1ACCF13300DDAA6B /* PSTGridLayoutSection.m in Sources */,
A96862771ACCF13300DDAA6B /* PSTGridLayoutInfo.m in Sources */,
A96862751ACCF13300DDAA6B /* PSTCollectionViewLayout.m in Sources */,
A96862791ACCF13300DDAA6B /* PSTGridLayoutRow.m in Sources */,
A97C54CD1AC8F10F0038818A /* BaseViewModel.m in Sources */,
A9617A4F1ACC0D0F0024AE4A /* NoteViewModel.m in Sources */,
A96862461ACCF0B400DDAA6B /* MWPhoto.m in Sources */,
A968624A1ACCF0B400DDAA6B /* MWZoomingScrollView.m in Sources */,
A97C54CF1AC8F10F0038818A /* NSString+HXAddtions.m in Sources */,
A96862501ACCF12300DDAA6B /* DACircularProgressView.m in Sources */,
A95510951AC39E6A0006D16F /* AppDelegate.m in Sources */,
A97C54D11AC8F10F0038818A /* RequireEngine.m in Sources */,
A96862731ACCF13300DDAA6B /* PSTCollectionViewFlowLayout.m in Sources */,
A96862441ACCF0B400DDAA6B /* MWGridCell.m in Sources */,
A96862741ACCF13300DDAA6B /* PSTCollectionViewItemKey.m in Sources */,
A96862451ACCF0B400DDAA6B /* MWGridViewController.m in Sources */,
A97C54D01AC8F10F0038818A /* PropertyEntity.m in Sources */,
A93441DE1ACA311700A6B233 /* Ash_UIUtil.m in Sources */,
A968624C1ACCF0B400DDAA6B /* README.md in Sources */,
A96862701ACCF13300DDAA6B /* PSTCollectionViewCell.m in Sources */,
A97559B71ACBD99E004ADA42 /* UIPlaceHolderTextView.m in Sources */,
A97C54D41AC8F10F0038818A /* XMFishBaseCode.m in Sources */,
A97C54E11AC91DA10038818A /* CommonUtil.m in Sources */,
A96862491ACCF0B400DDAA6B /* MWTapDetectingView.m in Sources */,
A968626F1ACCF13300DDAA6B /* PSTCollectionView.m in Sources */,
A9FAD4351AC925AC007ADC10 /* LoginViewModel.m in Sources */,
A95510921AC39E6A0006D16F /* main.m in Sources */,
A96862711ACCF13300DDAA6B /* PSTCollectionViewController.m in Sources */,
A96862431ACCF0B400DDAA6B /* MWCaptionView.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -10,14 +10,14 @@
<string>Ash_AWord</string>
<key>IDESourceControlProjectOriginsDictionary</key>
<dict>
<key>C2124BD0C46D10FF81834A1B3449A80D6B860D76</key>
<key>B459B20E6BFCBAF9E5514A0B814271AD85A6C13B</key>
<string>https://github.com/wu736139669/Ash_First.git</string>
</dict>
<key>IDESourceControlProjectPath</key>
<string>Ash_AWord.xcworkspace</string>
<key>IDESourceControlProjectRelativeInstallPathDictionary</key>
<dict>
<key>C2124BD0C46D10FF81834A1B3449A80D6B860D76</key>
<key>B459B20E6BFCBAF9E5514A0B814271AD85A6C13B</key>
<string>..</string>
</dict>
<key>IDESourceControlProjectURL</key>
@@ -25,14 +25,14 @@
<key>IDESourceControlProjectVersion</key>
<integer>111</integer>
<key>IDESourceControlProjectWCCIdentifier</key>
<string>C2124BD0C46D10FF81834A1B3449A80D6B860D76</string>
<string>B459B20E6BFCBAF9E5514A0B814271AD85A6C13B</string>
<key>IDESourceControlProjectWCConfigurations</key>
<array>
<dict>
<key>IDESourceControlRepositoryExtensionIdentifierKey</key>
<string>public.vcs.git</string>
<key>IDESourceControlWCCIdentifierKey</key>
<string>C2124BD0C46D10FF81834A1B3449A80D6B860D76</string>
<string>B459B20E6BFCBAF9E5514A0B814271AD85A6C13B</string>
<key>IDESourceControlWCCName</key>
<string>Ash_AWord</string>
</dict>
@@ -307,5 +307,37 @@
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Ash_AWord/Vender/MWPhotoBrowser/MWPhotoBrowser/Classes/MWPhotoBrowser.m"
timestampString = "449640296.454354"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "1455"
endingLineNumber = "1455"
landmarkName = "-actionButtonPressed:"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Ash_AWord/ViewControllers/My/SetUpViewController.m"
timestampString = "449641045.879342"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "80"
endingLineNumber = "80"
landmarkName = "-tableView:cellForRowAtIndexPath:"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
</Breakpoints>
</Bucket>
+9 -9
View File
@@ -4,29 +4,27 @@
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>OneWord</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIconFiles</key>
<array>
<string>Icon@2x</string>
<string>Icon</string>
</array>
<key>CFBundleIdentifier</key>
<string>ash.$(PRODUCT_NAME:rfc1034identifier)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundleDisplayName</key>
<string>OneWord</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>CFBundleIconFiles</key>
<array>
<string>Icon@2x</string>
<string>Icon</string>
</array>
<key>CFBundleURLTypes</key>
<array>
<dict>
@@ -54,6 +52,8 @@
</array>
</dict>
</array>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 54 KiB

@@ -185,7 +185,9 @@
_nextButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:[NSString stringWithFormat:arrowPathFormat, @"Right"]] style:UIBarButtonItemStylePlain target:self action:@selector(gotoNextPage)];
}
if (self.displayActionButton) {
_actionButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(actionButtonPressed:)];
// _actionButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(actionButtonPressed:)];
// _actionButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@""] style:UIBarButtonItemStyleDone target:self action:@selector(actionButtonPressed:)];
_actionButton = [Ash_UIUtil rightBarButtonItemWithTarget:self action:@selector(actionButtonPressed:) image:[UIImage imageNamed:@"cellmorebtnnormalN"] highlightedImage:[UIImage imageNamed:@"cellmorebtnclickN"]];
}
// Update
@@ -11,10 +11,7 @@
#import "PSTCollectionViewItemKey.h"
#import <objc/runtime.h>
#if TARGET_IPHONE_SIMULATOR
#import <dlfcn.h>
#endif
#import <tgmath.h>
@interface PSTCollectionViewLayout (Internal)
@property (nonatomic, unsafe_unretained) PSTCollectionView *collectionView;
@@ -114,7 +111,7 @@ CGFloat PSTSimulatorAnimationDragCoefficient(void);
unsigned int doneFirstLayout : 1;
}_collectionViewFlags;
CGPoint _lastLayoutOffset;
char filler[232]; // [HACK] Our class needs to be larger than Apple's class for the superclass change to work.
char filler[200]; // [HACK] Our class needs to be larger than Apple's class for the superclass change to work.
}
@property (nonatomic, strong) PSTCollectionViewData *collectionViewData;
@property (nonatomic, strong, readonly) PSTCollectionViewExt *extVars;
@@ -275,10 +272,8 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
- (void)setFrame:(CGRect)frame {
if (!CGRectEqualToRect(frame, self.frame)) {
CGRect bounds = (CGRect){.origin=self.contentOffset, .size=frame.size};
BOOL shouldInvalidate = [self.collectionViewLayout shouldInvalidateLayoutForBoundsChange:bounds];
[super setFrame:frame];
if (shouldInvalidate) {
if ([self.collectionViewLayout shouldInvalidateLayoutForBoundsChange:self.bounds]) {
[self invalidateLayout];
_collectionViewFlags.fadeCellsForBoundsChange = YES;
}
@@ -287,9 +282,8 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
- (void)setBounds:(CGRect)bounds {
if (!CGRectEqualToRect(bounds, self.bounds)) {
BOOL shouldInvalidate = [self.collectionViewLayout shouldInvalidateLayoutForBoundsChange:bounds];
[super setBounds:bounds];
if (shouldInvalidate) {
if ([self.collectionViewLayout shouldInvalidateLayoutForBoundsChange:bounds]) {
[self invalidateLayout];
_collectionViewFlags.fadeCellsForBoundsChange = YES;
}
@@ -617,8 +611,18 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
}
- (NSIndexPath *)indexPathForItemAtPoint:(CGPoint)point {
PSTCollectionViewLayoutAttributes *attributes = [[self.collectionViewLayout layoutAttributesForElementsInRect:CGRectMake(point.x, point.y, 1, 1)] lastObject];
return attributes.indexPath;
__block NSIndexPath *indexPath = nil;
[_allVisibleViewsDict enumerateKeysAndObjectsWithOptions:kNilOptions usingBlock:^(id key, id obj, BOOL *stop) {
PSTCollectionViewItemKey *itemKey = (PSTCollectionViewItemKey *)key;
if (itemKey.type == PSTCollectionViewItemTypeCell) {
PSTCollectionViewCell *cell = (PSTCollectionViewCell *)obj;
if (CGRectContainsPoint(cell.frame, point) && cell.userInteractionEnabled) {
indexPath = itemKey.indexPath;
*stop = YES;
}
}
}];
return indexPath;
}
- (NSIndexPath *)indexPathForCell:(PSTCollectionViewCell *)cell {
@@ -984,8 +988,8 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
// First delete all items
NSMutableArray *paths = [NSMutableArray new];
[sections enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop) {
for (int i = 0; i < [self numberOfItemsInSection:(NSInteger)idx]; ++i) {
[paths addObject:[NSIndexPath indexPathForItem:i inSection:(NSInteger)idx]];
for (int i = 0; i < [self numberOfItemsInSection:idx]; ++i) {
[paths addObject:[NSIndexPath indexPathForItem:i inSection:idx]];
}
}];
[self deleteItemsAtIndexPaths:paths];
@@ -1083,9 +1087,6 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
else {
layout.collectionView = self;
_layout.collectionView = nil;
_layout = layout;
_collectionViewData = [[PSTCollectionViewData alloc] initWithCollectionView:self layout:layout];
[_collectionViewData prepareToLoadData];
@@ -1285,6 +1286,9 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
applyNewLayoutBlock();
freeUnusedViews();
}
_layout.collectionView = nil;
_layout = layout;
}
}
@@ -1300,22 +1304,22 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
self.extVars.collectionViewDelegate = delegate;
// Managing the Selected Cells
_collectionViewFlags.delegateShouldSelectItemAtIndexPath = (unsigned int)[self.delegate respondsToSelector:@selector(collectionView:shouldSelectItemAtIndexPath:)];
_collectionViewFlags.delegateDidSelectItemAtIndexPath = (unsigned int)[self.delegate respondsToSelector:@selector(collectionView:didSelectItemAtIndexPath:)];
_collectionViewFlags.delegateShouldDeselectItemAtIndexPath = (unsigned int)[self.delegate respondsToSelector:@selector(collectionView:shouldDeselectItemAtIndexPath:)];
_collectionViewFlags.delegateDidDeselectItemAtIndexPath = (unsigned int)[self.delegate respondsToSelector:@selector(collectionView:didDeselectItemAtIndexPath:)];
_collectionViewFlags.delegateShouldSelectItemAtIndexPath = [self.delegate respondsToSelector:@selector(collectionView:shouldSelectItemAtIndexPath:)];
_collectionViewFlags.delegateDidSelectItemAtIndexPath = [self.delegate respondsToSelector:@selector(collectionView:didSelectItemAtIndexPath:)];
_collectionViewFlags.delegateShouldDeselectItemAtIndexPath = [self.delegate respondsToSelector:@selector(collectionView:shouldDeselectItemAtIndexPath:)];
_collectionViewFlags.delegateDidDeselectItemAtIndexPath = [self.delegate respondsToSelector:@selector(collectionView:didDeselectItemAtIndexPath:)];
// Managing Cell Highlighting
_collectionViewFlags.delegateShouldHighlightItemAtIndexPath = (unsigned int)[self.delegate respondsToSelector:@selector(collectionView:shouldHighlightItemAtIndexPath:)];
_collectionViewFlags.delegateDidHighlightItemAtIndexPath = (unsigned int)[self.delegate respondsToSelector:@selector(collectionView:didHighlightItemAtIndexPath:)];
_collectionViewFlags.delegateDidUnhighlightItemAtIndexPath = (unsigned int)[self.delegate respondsToSelector:@selector(collectionView:didUnhighlightItemAtIndexPath:)];
_collectionViewFlags.delegateShouldHighlightItemAtIndexPath = [self.delegate respondsToSelector:@selector(collectionView:shouldHighlightItemAtIndexPath:)];
_collectionViewFlags.delegateDidHighlightItemAtIndexPath = [self.delegate respondsToSelector:@selector(collectionView:didHighlightItemAtIndexPath:)];
_collectionViewFlags.delegateDidUnhighlightItemAtIndexPath = [self.delegate respondsToSelector:@selector(collectionView:didUnhighlightItemAtIndexPath:)];
// Tracking the Removal of Views
_collectionViewFlags.delegateDidEndDisplayingCell = (unsigned int)[self.delegate respondsToSelector:@selector(collectionView:didEndDisplayingCell:forItemAtIndexPath:)];
_collectionViewFlags.delegateDidEndDisplayingSupplementaryView = (unsigned int)[self.delegate respondsToSelector:@selector(collectionView:didEndDisplayingSupplementaryView:forElementOfKind:atIndexPath:)];
_collectionViewFlags.delegateDidEndDisplayingCell = [self.delegate respondsToSelector:@selector(collectionView:didEndDisplayingCell:forItemAtIndexPath:)];
_collectionViewFlags.delegateDidEndDisplayingSupplementaryView = [self.delegate respondsToSelector:@selector(collectionView:didEndDisplayingSupplementaryView:forElementOfKind:atIndexPath:)];
// Managing Actions for Cells
_collectionViewFlags.delegateSupportsMenus = (unsigned int)[self.delegate respondsToSelector:@selector(collectionView:shouldShowMenuForItemAtIndexPath:)];
_collectionViewFlags.delegateSupportsMenus = [self.delegate respondsToSelector:@selector(collectionView:shouldShowMenuForItemAtIndexPath:)];
// These aren't present in the flags which is a little strange. Not adding them because that will mess with byte alignment which will affect cross compatibility.
// The flag names are guesses and are there for documentation purposes.
@@ -1329,10 +1333,10 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
_dataSource = dataSource;
// Getting Item and Section Metrics
_collectionViewFlags.dataSourceNumberOfSections = (unsigned int)[_dataSource respondsToSelector:@selector(numberOfSectionsInCollectionView:)];
_collectionViewFlags.dataSourceNumberOfSections = [_dataSource respondsToSelector:@selector(numberOfSectionsInCollectionView:)];
// Getting Views for Items
_collectionViewFlags.dataSourceViewForSupplementaryElement = (unsigned int)[_dataSource respondsToSelector:@selector(collectionView:viewForSupplementaryElementOfKind:atIndexPath:)];
_collectionViewFlags.dataSourceViewForSupplementaryElement = [_dataSource respondsToSelector:@selector(collectionView:viewForSupplementaryElementOfKind:atIndexPath:)];
}
}
@@ -1341,7 +1345,7 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
}
- (void)setAllowsSelection:(BOOL)allowsSelection {
_collectionViewFlags.allowsSelection = (unsigned int)allowsSelection;
_collectionViewFlags.allowsSelection = allowsSelection;
}
- (BOOL)allowsMultipleSelection {
@@ -1349,7 +1353,7 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
}
- (void)setAllowsMultipleSelection:(BOOL)allowsMultipleSelection {
_collectionViewFlags.allowsMultipleSelection = (unsigned int)allowsMultipleSelection;
_collectionViewFlags.allowsMultipleSelection = allowsMultipleSelection;
// Deselect all objects if allows multiple selection is false
if (!allowsMultipleSelection && _indexPathsForSelectedItems.count) {
@@ -1723,10 +1727,10 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
NSArray *oldToNewIndexMap = _update[@"oldToNewIndexMap"];
NSUInteger newGlobalIndex = NSNotFound;
if (NSNotFound != oldGlobalIndex && oldGlobalIndex < oldToNewIndexMap.count) {
newGlobalIndex = [oldToNewIndexMap[oldGlobalIndex] unsignedIntegerValue];
newGlobalIndex = [oldToNewIndexMap[oldGlobalIndex] intValue];
}
NSIndexPath *newIndexPath = newGlobalIndex == NSNotFound ? nil : [_update[@"newModel"] indexPathForItemAtGlobalIndex:(int)newGlobalIndex];
NSIndexPath *oldIndexPath = oldGlobalIndex == NSNotFound ? nil : [_update[@"oldModel"] indexPathForItemAtGlobalIndex:(int)oldGlobalIndex];
NSIndexPath *newIndexPath = newGlobalIndex == NSNotFound ? nil : [_update[@"newModel"] indexPathForItemAtGlobalIndex:newGlobalIndex];
NSIndexPath *oldIndexPath = oldGlobalIndex == NSNotFound ? nil : [_update[@"oldModel"] indexPathForItemAtGlobalIndex:oldGlobalIndex];
if (newIndexPath) {
PSTCollectionViewLayoutAttributes *startAttrs = nil;
@@ -1779,9 +1783,6 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
}
}
//In here I think it doesn't need the animation but the transaction, it would cause some issue of display.
//I resolve the bug when user insert the new sections, the cell will display with a blink animation at the first operation.
//But I don't know why the next operation wouldn't reproduction in the pre version.
_allVisibleViewsDict = newAllVisibleView;
for (NSDictionary *animation in animations) {
@@ -1790,10 +1791,27 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
[view applyLayoutAttributes:attr];
};
[UIView animateWithDuration:.3 animations:^{
_collectionViewFlags.updatingLayout = YES;
[CATransaction begin];
[CATransaction setAnimationDuration:0];
[CATransaction setAnimationDuration:.3];
// You might wonder why we use CATransaction to handle animation completion
// here instead of using the completion: parameter of UIView's animateWithDuration:.
// The problem is that animateWithDuration: calls this completion block
// when other animations are finished. This means that the block is called
// after the user releases his finger and the scroll view has finished scrolling.
// This can be a large delay, which causes the layout of the cells to be greatly
// delayed, and thus, be unrendered. I assume that was done for performance
// purposes but it completely breaks our layout logic here.
// To get the completion block called immediately after the animation actually
// finishes, I switched to use CATransaction.
// The only thing I'm not sure about - _completed_ flag. I don't know where to get it
// in terms of CATransaction's API, so I use animateWithDuration's completion block
// to call _updateCompletionHandler with that flag.
// Ideally, _updateCompletionHandler should be called along with the other logic in
// CATransaction's completionHandler but I simply don't know where to get that flag.
[CATransaction setCompletionBlock:^{
// Iterate through all the views that we are going to remove.
[viewsToRemove enumerateKeysAndObjectsUsingBlock:^(NSNumber *keyObj, NSArray *views, BOOL *stop) {
@@ -1801,21 +1819,14 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
for (PSTCollectionReusableView *view in views) {
if (type == PSTCollectionViewItemTypeCell) {
[self reuseCell:(PSTCollectionViewCell *)view];
} else if (type == PSTCollectionViewItemTypeSupplementaryView) {
}else if (type == PSTCollectionViewItemTypeSupplementaryView) {
[self reuseSupplementaryView:view];
} else if (type == PSTCollectionViewItemTypeDecorationView) {
}else if (type == PSTCollectionViewItemTypeDecorationView) {
[self reuseDecorationView:view];
}
}
}];
_collectionViewFlags.updatingLayout = NO;
//In here I think when the block is called, the flag is YES. So the _updateCopletionHandler's paramer is YES.
if (_updateCompletionHandler) {
_updateCompletionHandler(YES);
_updateCompletionHandler = nil;
}
}];
for (NSDictionary *animation in animations) {
@@ -1824,6 +1835,13 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
[view applyLayoutAttributes:attrs];
}
[CATransaction commit];
} completion:^(BOOL finished) {
if (_updateCompletionHandler) {
_updateCompletionHandler(finished);
_updateCompletionHandler = nil;
}
}];
[_layout finalizeCollectionViewUpdates];
}
@@ -2013,12 +2031,12 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
#if !defined NS_BLOCK_ASSERTIONS
for (NSNumber *sectionKey in [operations keyEnumerator]) {
NSInteger section = [sectionKey integerValue];
NSInteger section = [sectionKey intValue];
NSInteger insertedCount = [operations[sectionKey][@"inserted"] integerValue];
NSInteger deletedCount = [operations[sectionKey][@"deleted"] integerValue];
NSInteger movedInCount = [operations[sectionKey][@"movedIn"] integerValue];
NSInteger movedOutCount = [operations[sectionKey][@"movedOut"] integerValue];
NSInteger insertedCount = [operations[sectionKey][@"inserted"] intValue];
NSInteger deletedCount = [operations[sectionKey][@"deleted"] intValue];
NSInteger movedInCount = [operations[sectionKey][@"movedIn"] intValue];
NSInteger movedOutCount = [operations[sectionKey][@"movedOut"] intValue];
NSAssert([oldCollectionViewData numberOfItemsInSection:section] + insertedCount - deletedCount + movedInCount - movedOutCount ==
[_collectionViewData numberOfItemsInSection:section],
@@ -2059,33 +2077,33 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
// section updates are ignored anyway in animation code. If not commented, mixing rows and section deletion causes crash in else below
// [newModel removeObjectAtIndex:updateItem.indexPathBeforeUpdate.section];
}else {
[(NSMutableArray *)newModel[(NSUInteger)updateItem.indexPathBeforeUpdate.section]
removeObjectAtIndex:(NSUInteger)updateItem.indexPathBeforeUpdate.item];
[(NSMutableArray *)newModel[updateItem.indexPathBeforeUpdate.section]
removeObjectAtIndex:updateItem.indexPathBeforeUpdate.item];
}
}
break;
case PSTCollectionUpdateActionInsert: {
if (updateItem.isSectionOperation) {
[newModel insertObject:[[NSMutableArray alloc] init]
atIndex:(NSUInteger)updateItem.indexPathAfterUpdate.section];
atIndex:updateItem.indexPathAfterUpdate.section];
}else {
[(NSMutableArray *)newModel[(NSUInteger)updateItem.indexPathAfterUpdate.section]
[(NSMutableArray *)newModel[updateItem.indexPathAfterUpdate.section]
insertObject:@(NSNotFound)
atIndex:(NSUInteger)updateItem.indexPathAfterUpdate.item];
atIndex:updateItem.indexPathAfterUpdate.item];
}
}
break;
case PSTCollectionUpdateActionMove: {
if (updateItem.isSectionOperation) {
id section = newModel[(NSUInteger)updateItem.indexPathBeforeUpdate.section];
[newModel insertObject:section atIndex:(NSUInteger)updateItem.indexPathAfterUpdate.section];
id section = newModel[updateItem.indexPathBeforeUpdate.section];
[newModel insertObject:section atIndex:updateItem.indexPathAfterUpdate.section];
}
else {
id object = @([oldCollectionViewData globalIndexForItemAtIndexPath:updateItem.indexPathBeforeUpdate]);
[newModel[(NSUInteger)updateItem.indexPathBeforeUpdate.section] removeObject:object];
[newModel[(NSUInteger)updateItem.indexPathAfterUpdate.section] insertObject:object
atIndex:(NSUInteger)updateItem.indexPathAfterUpdate.item];
[newModel[updateItem.indexPathBeforeUpdate.section] removeObject:object];
[newModel[updateItem.indexPathAfterUpdate.section] insertObject:object
atIndex:updateItem.indexPathAfterUpdate.item];
}
}
break;
@@ -2093,8 +2111,8 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
}
}
NSMutableArray *oldToNewMap = [NSMutableArray arrayWithCapacity:(NSUInteger)[oldCollectionViewData numberOfItems]];
NSMutableArray *newToOldMap = [NSMutableArray arrayWithCapacity:(NSUInteger)[_collectionViewData numberOfItems]];
NSMutableArray *oldToNewMap = [NSMutableArray arrayWithCapacity:[oldCollectionViewData numberOfItems]];
NSMutableArray *newToOldMap = [NSMutableArray arrayWithCapacity:[_collectionViewData numberOfItems]];
for (NSInteger i = 0; i < [oldCollectionViewData numberOfItems]; i++)
[oldToNewMap addObject:@(NSNotFound)];
@@ -2105,9 +2123,9 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
for (NSUInteger i = 0; i < newModel.count; i++) {
NSMutableArray *section = newModel[i];
for (NSUInteger j = 0; j < section.count; j++) {
NSUInteger newGlobalIndex = [_collectionViewData globalIndexForItemAtIndexPath:[NSIndexPath indexPathForItem:(NSInteger)j inSection:(NSInteger)i]];
NSInteger newGlobalIndex = [_collectionViewData globalIndexForItemAtIndexPath:[NSIndexPath indexPathForItem:j inSection:i]];
if ([section[j] integerValue] != NSNotFound)
oldToNewMap[[section[j] unsignedIntegerValue]] = @(newGlobalIndex);
oldToNewMap[[section[j] intValue]] = @(newGlobalIndex);
if (newGlobalIndex != NSNotFound)
newToOldMap[newGlobalIndex] = section[j];
}
@@ -2151,7 +2169,7 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
NSMutableArray *updateActions = [self arrayForUpdateAction:updateAction];
[sections enumerateIndexesUsingBlock:^(NSUInteger section, BOOL *stop) {
PSTCollectionViewUpdateItem *updateItem = [[PSTCollectionViewUpdateItem alloc] initWithAction:updateAction forIndexPath:[NSIndexPath indexPathForItem:NSNotFound inSection:(NSInteger)section]];
PSTCollectionViewUpdateItem *updateItem = [[PSTCollectionViewUpdateItem alloc] initWithAction:updateAction forIndexPath:[NSIndexPath indexPathForItem:NSNotFound inSection:section]];
[updateActions addObject:updateItem];
}];
@@ -2208,50 +2226,31 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
@implementation PSUICollectionViewLayoutAttributes_ @end
@implementation PSUICollectionViewController_ @end
static void PSTRegisterClasses() {
NSDictionary *map = @{
@"UICollectionView": PSUICollectionView_.class,
@"UICollectionViewCell": PSUICollectionViewCell_.class,
@"UICollectionReusableView": PSUICollectionReusableView_.class,
@"UICollectionViewLayout": PSUICollectionViewLayout_.class,
@"UICollectionViewFlowLayout": PSUICollectionViewFlowLayout_.class,
@"UICollectionViewLayoutAttributes": PSUICollectionViewLayoutAttributes_.class,
@"UICollectionViewController": PSUICollectionViewController_.class
};
static BOOL PSTRegisterClass(NSString *UIClassName, Class PSTClass) {
NSCParameterAssert(UIClassName && PSTClass);
// Ensure that superclass replacement is all-or-nothing for the PSUI*_ types. Either use exclusively
// UICollectionView*, or exclusively PSTCollectionView*.
__block BOOL canOverwrite = YES;
[map enumerateKeysAndObjectsUsingBlock:^(NSString* UIClassName, id PSTClass, BOOL *stop) {
Class UIClass = NSClassFromString(UIClassName);
if (UIClass) {
// Class size need to be the same for class_setSuperclass to work.
// If the UIKit class is smaller then our subclass, ivars won't clash, so there's no issue.
long sizeDifference = (long)class_getInstanceSize(UIClass) - class_getInstanceSize(PSTClass);
long sizeDifference = class_getInstanceSize(UIClass) - class_getInstanceSize(PSTClass);
if (sizeDifference > 0) {
canOverwrite = NO;
NSLog(@"Warning! ivar size mismatch in %@ of %tu bytes - can't change the superclass.", PSTClass, sizeDifference);
}
NSLog(@"Warning! ivar size mismatch in %@ - can't change the superclass.", PSTClass);
return NO;
} else {
canOverwrite = NO;
// We're most likely on iOS5, the requested UIKit class doesn't exist, so we create it dynamically.
if ((UIClass = objc_allocateClassPair(PSTClass, UIClassName.UTF8String, 0))) {
objc_registerClassPair(UIClass);
}
}
}];
if (canOverwrite) {
// All UICollectionView types were found and appropriately sized, so it is safe to replace the super-class.
[map enumerateKeysAndObjectsUsingBlock:^(NSString* UIClassName, id PSTClass, BOOL *stop) {
Class UIClass = NSClassFromString(UIClassName);
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
// class_setSuperclass is deprecated, but still exists and works on iOS6/7.
class_setSuperclass(PSTClass, UIClass);
#pragma clang diagnostic pop
}];
}
} else {
// We're most likely on iOS5, the requested UIKit class doesn't exist, so we create it dynamically.
if ((UIClass = objc_allocateClassPair(PSTClass, UIClassName.UTF8String, 0))) {
objc_registerClassPair(UIClass);
}
}
return YES;
}
// Create subclasses that pose as UICollectionView et al, if not available at runtime.
@@ -2260,7 +2259,13 @@ __attribute__((constructor)) static void PSTCreateUICollectionViewClasses(void)
@autoreleasepool {
// Change superclass at runtime. This allows seamless switching from PST* to UI* at runtime.
PSTRegisterClasses();
PSTRegisterClass(@"UICollectionView", PSUICollectionView_.class);
PSTRegisterClass(@"UICollectionViewCell", PSUICollectionViewCell_.class);
PSTRegisterClass(@"UICollectionReusableView", PSUICollectionReusableView_.class);
PSTRegisterClass(@"UICollectionViewLayout", PSUICollectionViewLayout_.class);
PSTRegisterClass(@"UICollectionViewFlowLayout", PSUICollectionViewFlowLayout_.class);
PSTRegisterClass(@"UICollectionViewLayoutAttributes", PSUICollectionViewLayoutAttributes_.class);
PSTRegisterClass(@"UICollectionViewController", PSUICollectionViewController_.class);
// add PSUI classes at runtime to make Interface Builder sane
// (IB doesn't allow adding the PSUICollectionView_ types but doesn't complain on unknown classes)
@@ -76,7 +76,7 @@
}
- (void)setInUpdateAnimation:(BOOL)inUpdateAnimation {
_reusableViewFlags.inUpdateAnimation = (unsigned int)inUpdateAnimation;
_reusableViewFlags.inUpdateAnimation = inUpdateAnimation;
}
@end
@@ -149,14 +149,14 @@
// Selection highlights underlying contents
- (void)setSelected:(BOOL)selected {
_collectionCellFlags.selected = (unsigned int)selected;
_collectionCellFlags.selected = selected;
self.accessibilityTraits = selected ? UIAccessibilityTraitSelected : UIAccessibilityTraitNone;
[self updateBackgroundView:selected];
}
// Cell highlighting only highlights the cell itself
- (void)setHighlighted:(BOOL)highlighted {
_collectionCellFlags.highlighted = (unsigned int)highlighted;
_collectionCellFlags.highlighted = highlighted;
[self updateBackgroundView:highlighted];
}
@@ -123,7 +123,7 @@
#pragma mark - Properties
- (void)setClearsSelectionOnViewWillAppear:(BOOL)clearsSelectionOnViewWillAppear {
_collectionViewControllerFlags.clearsSelectionOnViewWillAppear = (unsigned int)clearsSelectionOnViewWillAppear;
_collectionViewControllerFlags.clearsSelectionOnViewWillAppear = clearsSelectionOnViewWillAppear;
}
- (BOOL)clearsSelectionOnViewWillAppear {
@@ -171,7 +171,7 @@
}
- (void)setLayoutIsPrepared:(BOOL)layoutIsPrepared {
_collectionViewDataFlags.layoutIsPrepared = (unsigned int)layoutIsPrepared;
_collectionViewDataFlags.layoutIsPrepared = layoutIsPrepared;
}
///////////////////////////////////////////////////////////////////////////////////////////
@@ -208,9 +208,9 @@
}
// allocate space
if (!_sectionItemCounts) {
_sectionItemCounts = malloc((size_t)_numSections * sizeof(NSInteger));
_sectionItemCounts = malloc(_numSections * sizeof(NSInteger));
}else {
_sectionItemCounts = realloc(_sectionItemCounts, (size_t)_numSections * sizeof(NSInteger));
_sectionItemCounts = realloc(_sectionItemCounts, _numSections * sizeof(NSInteger));
}
// query cells per section
@@ -24,6 +24,7 @@ typedef NS_ENUM(NSInteger, PSTCollectionViewScrollDirection) {
- (CGFloat)collectionView:(PSTCollectionView *)collectionView layout:(PSTCollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section;
- (CGSize)collectionView:(PSTCollectionView *)collectionView layout:(PSTCollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section;
- (CGSize)collectionView:(PSTCollectionView *)collectionView layout:(PSTCollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section;
- (PSTCollectionViewLayoutAttributes *)layoutAttributesForSupplementaryViewOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath;
@end
@@ -145,7 +145,7 @@ static char kPSTCachedItemRectsKey;
normalizedHeaderFrame.origin.x += section.frame.origin.x;
normalizedHeaderFrame.origin.y += section.frame.origin.y;
if (!CGRectIsEmpty(normalizedHeaderFrame) && CGRectIntersectsRect(normalizedHeaderFrame, rect)) {
PSTCollectionViewLayoutAttributes *layoutAttributes = [[self.class layoutAttributesClass] layoutAttributesForSupplementaryViewOfKind:PSTCollectionElementKindSectionHeader withIndexPath:[NSIndexPath indexPathForItem:0 inSection:(NSInteger)sectionIndex]];
PSTCollectionViewLayoutAttributes *layoutAttributes = [[self.class layoutAttributesClass] layoutAttributesForSupplementaryViewOfKind:PSTCollectionElementKindSectionHeader withIndexPath:[NSIndexPath indexPathForItem:0 inSection:sectionIndex]];
layoutAttributes.frame = normalizedHeaderFrame;
[layoutAttributesArray addObject:layoutAttributes];
}
@@ -158,10 +158,8 @@ static char kPSTCachedItemRectsKey;
for (PSTGridLayoutRow *row in section.rows) {
CGRect normalizedRowFrame = row.rowFrame;
normalizedRowFrame.origin.x += section.frame.origin.x;
normalizedRowFrame.origin.y += section.frame.origin.y;
if (CGRectIntersectsRect(normalizedRowFrame, rect)) {
// TODO be more fine-grained for items
@@ -170,30 +168,25 @@ static char kPSTCachedItemRectsKey;
NSUInteger sectionItemIndex;
CGRect itemFrame;
if (row.fixedItemSize) {
itemFrame = [itemRects[(NSUInteger)itemIndex] CGRectValue];
sectionItemIndex = (NSUInteger)(row.index * section.itemsByRowCount + itemIndex);
itemFrame = [itemRects[itemIndex] CGRectValue];
sectionItemIndex = row.index * section.itemsByRowCount + itemIndex;
}else {
PSTGridLayoutItem *item = row.items[(NSUInteger)itemIndex];
PSTGridLayoutItem *item = row.items[itemIndex];
sectionItemIndex = [section.items indexOfObjectIdenticalTo:item];
itemFrame = item.itemFrame;
}
CGRect normalisedItemFrame = CGRectMake(normalizedRowFrame.origin.x + itemFrame.origin.x, normalizedRowFrame.origin.y + itemFrame.origin.y, itemFrame.size.width, itemFrame.size.height);
if (CGRectIntersectsRect(normalisedItemFrame, rect)) {
layoutAttributes = [[self.class layoutAttributesClass] layoutAttributesForCellWithIndexPath:[NSIndexPath indexPathForItem:(NSInteger)sectionItemIndex inSection:(NSInteger)sectionIndex]];
layoutAttributes.frame = normalisedItemFrame;
layoutAttributes = [[self.class layoutAttributesClass] layoutAttributesForCellWithIndexPath:[NSIndexPath indexPathForItem:sectionItemIndex inSection:sectionIndex]];
layoutAttributes.frame = CGRectMake(normalizedRowFrame.origin.x + itemFrame.origin.x, normalizedRowFrame.origin.y + itemFrame.origin.y, itemFrame.size.width, itemFrame.size.height);
[layoutAttributesArray addObject:layoutAttributes];
}
}
}
}
CGRect normalizedFooterFrame = section.footerFrame;
normalizedFooterFrame.origin.x += section.frame.origin.x;
normalizedFooterFrame.origin.y += section.frame.origin.y;
if (!CGRectIsEmpty(normalizedFooterFrame) && CGRectIntersectsRect(normalizedFooterFrame, rect)) {
PSTCollectionViewLayoutAttributes *layoutAttributes = [[self.class layoutAttributesClass] layoutAttributesForSupplementaryViewOfKind:PSTCollectionElementKindSectionFooter withIndexPath:[NSIndexPath indexPathForItem:0 inSection:(NSInteger)sectionIndex]];
PSTCollectionViewLayoutAttributes *layoutAttributes = [[self.class layoutAttributesClass] layoutAttributesForSupplementaryViewOfKind:PSTCollectionElementKindSectionFooter withIndexPath:[NSIndexPath indexPathForItem:0 inSection:sectionIndex]];
layoutAttributes.frame = normalizedFooterFrame;
[layoutAttributesArray addObject:layoutAttributes];
}
@@ -205,17 +198,17 @@ static char kPSTCachedItemRectsKey;
- (PSTCollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath {
if (!_data) [self prepareLayout];
PSTGridLayoutSection *section = _data.sections[(NSUInteger)indexPath.section];
PSTGridLayoutSection *section = _data.sections[indexPath.section];
PSTGridLayoutRow *row = nil;
CGRect itemFrame = CGRectZero;
if (section.fixedItemSize && section.itemsByRowCount > 0 && indexPath.item / section.itemsByRowCount < (NSInteger)section.rows.count) {
row = section.rows[(NSUInteger)(indexPath.item / section.itemsByRowCount)];
NSUInteger itemIndex = (NSUInteger)(indexPath.item % section.itemsByRowCount);
if (section.fixedItemSize && indexPath.item / section.itemsByRowCount < (NSInteger)section.rows.count) {
row = section.rows[indexPath.item / section.itemsByRowCount];
NSUInteger itemIndex = indexPath.item % section.itemsByRowCount;
NSArray *itemRects = [row itemRects];
itemFrame = [itemRects[itemIndex] CGRectValue];
}else if (indexPath.item < (NSInteger)section.items.count) {
PSTGridLayoutItem *item = section.items[(NSUInteger)indexPath.item];
PSTGridLayoutItem *item = section.items[indexPath.item];
row = item.rowObject;
itemFrame = item.itemFrame;
}
@@ -234,7 +227,7 @@ static char kPSTCachedItemRectsKey;
- (PSTCollectionViewLayoutAttributes *)layoutAttributesForSupplementaryViewOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath {
if (!_data) [self prepareLayout];
NSUInteger sectionIndex = (NSUInteger)indexPath.section;
NSUInteger sectionIndex = indexPath.section;
PSTCollectionViewLayoutAttributes *layoutAttributes = nil;
if (sectionIndex < _data.sections.count) {
@@ -252,7 +245,7 @@ static char kPSTCachedItemRectsKey;
normalizedFrame.origin.x += section.frame.origin.x;
normalizedFrame.origin.y += section.frame.origin.y;
layoutAttributes = [[self.class layoutAttributesClass] layoutAttributesForSupplementaryViewOfKind:kind withIndexPath:[NSIndexPath indexPathForItem:0 inSection:(NSInteger)sectionIndex]];
layoutAttributes = [[self.class layoutAttributesClass] layoutAttributesForSupplementaryViewOfKind:kind withIndexPath:[NSIndexPath indexPathForItem:0 inSection:sectionIndex]];
layoutAttributes.frame = normalizedFrame;
}
}
@@ -330,8 +323,8 @@ static char kPSTCachedItemRectsKey;
BOOL implementsHeaderReferenceDelegate = [flowDataSource respondsToSelector:@selector(collectionView:layout:referenceSizeForHeaderInSection:)];
BOOL implementsFooterReferenceDelegate = [flowDataSource respondsToSelector:@selector(collectionView:layout:referenceSizeForFooterInSection:)];
NSInteger numberOfSections = [self.collectionView numberOfSections];
for (NSInteger section = 0; section < numberOfSections; section++) {
NSUInteger numberOfSections = [self.collectionView numberOfSections];
for (NSUInteger section = 0; section < numberOfSections; section++) {
PSTGridLayoutSection *layoutSection = [_data addSection];
layoutSection.verticalInterstice = _data.horizontal ? self.minimumInteritemSpacing : self.minimumLineSpacing;
layoutSection.horizontalInterstice = !_data.horizontal ? self.minimumInteritemSpacing : self.minimumLineSpacing;
@@ -376,12 +369,12 @@ static char kPSTCachedItemRectsKey;
}
layoutSection.footerDimension = _data.horizontal ? footerReferenceSize.width : footerReferenceSize.height;
NSInteger numberOfItems = [self.collectionView numberOfItemsInSection:section];
NSUInteger numberOfItems = [self.collectionView numberOfItemsInSection:section];
// if delegate implements size delegate, query it for all items
if (implementsSizeDelegate) {
for (NSInteger item = 0; item < numberOfItems; item++) {
NSIndexPath *indexPath = [NSIndexPath indexPathForItem:item inSection:(NSInteger)section];
for (NSUInteger item = 0; item < numberOfItems; item++) {
NSIndexPath *indexPath = [NSIndexPath indexPathForItem:item inSection:section];
CGSize itemSize = implementsSizeDelegate ? [flowDataSource collectionView:self.collectionView layout:self sizeForItemAtIndexPath:indexPath] : self.itemSize;
PSTGridLayoutItem *layoutItem = [layoutSection addItem];
@@ -406,11 +399,11 @@ static char kPSTCachedItemRectsKey;
if (_data.horizontal) {
sectionFrame.origin.x += contentSize.width;
contentSize.width += section.frame.size.width + section.frame.origin.x;
contentSize.height = MAX(contentSize.height, sectionFrame.size.height + section.frame.origin.y + section.sectionMargins.top + section.sectionMargins.bottom);
contentSize.height = fmax(contentSize.height, sectionFrame.size.height + section.frame.origin.y + section.sectionMargins.top + section.sectionMargins.bottom);
}else {
sectionFrame.origin.y += contentSize.height;
contentSize.height += sectionFrame.size.height + section.frame.origin.y;
contentSize.width = MAX(contentSize.width, sectionFrame.size.width + section.frame.origin.x + section.sectionMargins.left + section.sectionMargins.right);
contentSize.width = fmax(contentSize.width, sectionFrame.size.width + section.frame.origin.x + section.sectionMargins.left + section.sectionMargins.right);
}
section.frame = sectionFrame;
}
@@ -8,7 +8,6 @@
#import "PSTCollectionView.h"
#import "PSTCollectionViewItemKey.h"
#import "PSTCollectionViewData.h"
#import <objc/runtime.h>
@interface PSTCollectionView ()
@@ -126,18 +125,14 @@
return self.representedElementCategory == PSTCollectionViewItemTypeCell;
}
- (void) updateFrame {
_frame = (CGRect){{_center.x - _size.width / 2, _center.y - _size.height / 2}, _size};
}
- (void)setSize:(CGSize)size {
_size = size;
[self updateFrame];
_frame = (CGRect){_frame.origin, _size};
}
- (void)setCenter:(CGPoint)center {
_center = center;
[self updateFrame];
_frame = (CGRect){{_center.x - _frame.size.width / 2, _center.y - _frame.size.height / 2}, _frame.size};
}
- (void)setFrame:(CGRect)frame {
@@ -301,7 +296,7 @@
PSTCollectionViewLayoutAttributes *attr = [view.layoutAttributes copy];
if (attr) {
if (attr.isCell) {
NSUInteger index = [update[@"oldModel"] globalIndexForItemAtIndexPath:[attr indexPath]];
NSInteger index = [update[@"oldModel"] globalIndexForItemAtIndexPath:[attr indexPath]];
if (index != NSNotFound) {
[attr setIndexPath:[attr indexPath]];
}
@@ -316,9 +311,9 @@
for (PSTCollectionViewLayoutAttributes *attr in [collectionViewData layoutAttributesForElementsInRect:bounds]) {
if (attr.isCell) {
NSInteger index = (NSInteger)[collectionViewData globalIndexForItemAtIndexPath:attr.indexPath];
NSInteger index = [collectionViewData globalIndexForItemAtIndexPath:attr.indexPath];
index = [update[@"newToOldIndexMap"][(NSUInteger)index] integerValue];
index = [update[@"newToOldIndexMap"][index] intValue];
if (index != NSNotFound) {
PSTCollectionViewLayoutAttributes *finalAttrs = [attr copy];
[finalAttrs setIndexPath:[update[@"oldModel"] indexPathForItemAtGlobalIndex:index]];
@@ -333,12 +328,12 @@
if ([updateItem isSectionOperation]) {
if (action == PSTCollectionUpdateActionReload) {
[_deletedSectionsSet addIndex:(NSUInteger)[[updateItem indexPathBeforeUpdate] section]];
[_insertedSectionsSet addIndex:(NSUInteger)[updateItem indexPathAfterUpdate].section];
[_deletedSectionsSet addIndex:[[updateItem indexPathBeforeUpdate] section]];
[_insertedSectionsSet addIndex:[updateItem indexPathAfterUpdate].section];
}
else {
NSMutableIndexSet *indexSet = action == PSTCollectionUpdateActionInsert ? _insertedSectionsSet : _deletedSectionsSet;
[indexSet addIndex:(NSUInteger)[updateItem indexPath].section];
[indexSet addIndex:[updateItem indexPath].section];
}
}
else {
@@ -370,7 +365,7 @@
- (PSTCollectionViewLayoutAttributes *)initialLayoutAttributesForAppearingItemAtIndexPath:(NSIndexPath *)itemIndexPath {
PSTCollectionViewLayoutAttributes *attrs = _initialAnimationLayoutAttributesDict[[PSTCollectionViewItemKey collectionItemKeyForCellWithIndexPath:itemIndexPath]];
if ([_insertedSectionsSet containsIndex:(NSUInteger)[itemIndexPath section]]) {
if ([_insertedSectionsSet containsIndex:[itemIndexPath section]]) {
attrs = [attrs copy];
[attrs setAlpha:0];
}
@@ -380,7 +375,7 @@
- (PSTCollectionViewLayoutAttributes *)finalLayoutAttributesForDisappearingItemAtIndexPath:(NSIndexPath *)itemIndexPath {
PSTCollectionViewLayoutAttributes *attrs = _finalAnimationLayoutAttributesDict[[PSTCollectionViewItemKey collectionItemKeyForCellWithIndexPath:itemIndexPath]];
if ([_deletedSectionsSet containsIndex:(NSUInteger)[itemIndexPath section]]) {
if ([_deletedSectionsSet containsIndex:[itemIndexPath section]]) {
attrs = [attrs copy];
[attrs setAlpha:0];
}
@@ -391,7 +386,7 @@
- (PSTCollectionViewLayoutAttributes *)initialLayoutAttributesForInsertedSupplementaryElementOfKind:(NSString *)elementKind atIndexPath:(NSIndexPath *)elementIndexPath {
PSTCollectionViewLayoutAttributes *attrs = _initialAnimationLayoutAttributesDict[[PSTCollectionViewItemKey collectionItemKeyForCellWithIndexPath:elementIndexPath]];
if ([_insertedSectionsSet containsIndex:(NSUInteger)[elementIndexPath section]]) {
if ([_insertedSectionsSet containsIndex:[elementIndexPath section]]) {
attrs = [attrs copy];
[attrs setAlpha:0];
}
@@ -50,12 +50,12 @@
}
- (CGRect)frameForItemAtIndexPath:(NSIndexPath *)indexPath {
PSTGridLayoutSection *section = self.sections[(NSUInteger)indexPath.section];
PSTGridLayoutSection *section = self.sections[indexPath.section];
CGRect itemFrame;
if (section.fixedItemSize) {
itemFrame = (CGRect){.size=section.itemSize};
}else {
itemFrame = [section.items[(NSUInteger)indexPath.item] itemFrame];
itemFrame = [section.items[indexPath.item] itemFrame];
}
return itemFrame;
}
@@ -73,7 +73,7 @@
// UICollectionView is smart and lays out items like they would have been placed on a full row
// So we need to calculate the "usedItemCount" with using the last item as a reference size.
// This allows us to correctly justify-place the items in the grid.
NSInteger usedItemCount = 0;
NSUInteger usedItemCount = 0;
NSInteger itemIndex = 0;
CGFloat spacing = isHorizontal ? self.section.verticalInterstice : self.section.horizontalInterstice;
// the last row should justify as if it is filled with more (invisible) items so that the whole
@@ -82,7 +82,7 @@
CGFloat nextItemSize;
// first we need to find the size (width/height) of the next item to fit
if (!self.fixedItemSize) {
PSTGridLayoutItem *item = self.items[(NSUInteger)MIN(itemIndex, self.itemCount - 1)];
PSTGridLayoutItem *item = self.items[MIN(itemIndex, self.itemCount - 1)];
nextItemSize = isHorizontal ? item.itemFrame.size.height : item.itemFrame.size.width;
}else {
nextItemSize = isHorizontal ? self.section.itemSize.height : self.section.itemSize.width;
@@ -128,7 +128,7 @@
for (itemIndex = 0; itemIndex < self.itemCount; itemIndex++) {
PSTGridLayoutItem *item = nil;
if (!self.fixedItemSize) {
item = self.items[(NSUInteger)itemIndex];
item = self.items[itemIndex];
itemFrame = [item itemFrame];
}
// depending on horizontal/vertical for an item size (height/width),
@@ -186,7 +186,7 @@
if (self.fixedItemSize) {
return _itemCount;
}else {
return (NSInteger)self.items.count;
return self.items.count;
}
}
@@ -85,7 +85,7 @@
BOOL finishCycle = itemIndex >= self.itemsCount;
// TODO: fast path could even remove row creation and just calculate on the fly
PSTGridLayoutItem *item = nil;
if (!finishCycle) item = self.fixedItemSize ? nil : self.items[(NSUInteger)itemIndex];
if (!finishCycle) item = self.fixedItemSize ? nil : self.items[itemIndex];
CGSize itemSize = self.fixedItemSize ? self.itemSize : item.itemFrame.size;
CGFloat itemDimension = self.layoutInfo.horizontal ? itemSize.height : itemSize.width;
@@ -105,12 +105,12 @@
if (self.layoutInfo.horizontal) {
row.rowFrame = CGRectMake(sectionSize.width, self.sectionMargins.top, row.rowSize.width, row.rowSize.height);
sectionSize.height = MAX(row.rowSize.height, sectionSize.height);
sectionSize.height = fmax(row.rowSize.height, sectionSize.height);
sectionSize.width += row.rowSize.width + (finishCycle ? 0 : self.horizontalInterstice);
}else {
row.rowFrame = CGRectMake(self.sectionMargins.left, sectionSize.height, row.rowSize.width, row.rowSize.height);
sectionSize.height += row.rowSize.height + (finishCycle ? 0 : self.verticalInterstice);
sectionSize.width = MAX(row.rowSize.width, sectionSize.width);
sectionSize.width = fmax(row.rowSize.width, sectionSize.width);
}
}
// add new rows until the section is fully laid out
@@ -204,7 +204,7 @@
}
- (NSInteger)itemsCount {
return self.fixedItemSize ? _itemsCount : (NSInteger)self.items.count;
return self.fixedItemSize ? _itemsCount : self.items.count;
}
@end
@@ -93,7 +93,7 @@
</objects>
<resources>
<image name="camera-close-select.png" width="31" height="31"/>
<image name="first-login-icon.png" width="152" height="152"/>
<image name="first-login-icon.png" width="114" height="114"/>
<image name="first-login-qq.png" width="24" height="24"/>
<image name="first-login-sina.png" width="22" height="22"/>
</resources>
@@ -58,7 +58,7 @@
[button setBackgroundColor:[UIColor redColor]];
button.layer.cornerRadius = 5.0;
button.layer.masksToBounds = YES;
button.frame = CGRectMake(20, 25, kScreenWidth-40, 50);
button.frame = CGRectMake(20, 25, kScreenWidth-40, 40);
[view addSubview:button];
return view;
}
@@ -67,7 +67,7 @@
static NSString* cellIdentifier = @"cell";
UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:cellIdentifier];
}
switch (indexPath.row) {
case 0:
+1 -1
View File
@@ -20,7 +20,7 @@
@property (weak, nonatomic) IBOutlet UIButton *shareBtn;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *contentHeight;
@property (weak, nonatomic) IBOutlet UIButton *imageBtnClick;
- (IBAction)imageBtnClick:(id)sender;
- (IBAction)goodBtnClick:(id)sender;
+46 -2
View File
@@ -8,12 +8,19 @@
#import "NoteTableViewCell.h"
#import "NoteViewModel.h"
#import "AppDelegate.h"
#import "MWPhotoBrowser.h"
@interface NoteTableViewCell()<MWPhotoBrowserDelegate>
@end
@implementation NoteTableViewCell
{
Text_Image* _text_image;
}
- (void)awakeFromNib {
// Initialization code
_contentLabel.font = [UIFont appFontOfSize:14.0];
_contentTextView.font = [UIFont appFontOfSize:14.0];
_contentTextView.scrollEnabled = NO;
_timeLabel.font = [UIFont appFontOfSize:14.0];
_avatar.layer.cornerRadius = _avatar.frame.size.width/2;
@@ -40,6 +47,7 @@
}
-(void)setText_Image:(Text_Image *)text_image
{
_text_image = text_image;
CGSize imageSize = _contentImgView.frame.size;
UIGraphicsBeginImageContextWithOptions(imageSize, 0, [UIScreen mainScreen].scale);
[[UIColor colorWithWhite:0.6 alpha:0.5] set];
@@ -54,7 +62,7 @@
CGSize size = CGSizeMake(300*[Ash_UIUtil currentScreenSizeRate],MAXFLOAT);
CGRect labelRect = [text_image.content boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName:font} context:nil];
_contentHeight.constant = labelRect.size.height+10;
_contentHeight.constant = labelRect.size.height+25;
_contentTextView.text = text_image.content;
[_contentImgView sd_setImageWithURL:text_image.imageUrl placeholderImage:pressedColorImg];
@@ -75,4 +83,40 @@
}
return imageHeight+labelRect.size.height+95;
}
- (IBAction)imageBtnClick:(id)sender {
MWPhotoBrowser *pBrowser = [[MWPhotoBrowser alloc]initWithDelegate:self];
//是否显示分享按钮
pBrowser.displayActionButton = YES;
//左右分页切换
pBrowser.displayNavArrows = YES;
//是否显示选择按钮
pBrowser.displaySelectionButtons = NO;
//是否显示条件控制控件
pBrowser.alwaysShowControls = YES;
//是否全屏
pBrowser.zoomPhotosToFill = YES;
//允许使用网络查看所有图片
pBrowser.enableGrid = YES;
//是否第一张
pBrowser.startOnGrid = YES;
pBrowser.enableSwipeToDismiss = YES;
[pBrowser showNextPhotoAnimated:YES];
[pBrowser showPreviousPhotoAnimated:YES];
[pBrowser setCurrentPhotoIndex:0];
[[AppDelegate visibleViewController].navigationController pushViewController:pBrowser animated:YES];
}
#pragma mark - MWPhotoBrowserDelegate
-(NSUInteger)numberOfPhotosInPhotoBrowser:(MWPhotoBrowser *)photoBrowser
{
return 1;
}
-(id<MWPhoto>)photoBrowser:(MWPhotoBrowser *)photoBrowser photoAtIndex:(NSUInteger)index
{
MWPhoto *photo = [[MWPhoto alloc]initWithURL:_text_image.imageUrl];
return photo;
}
@end
+6 -4
View File
@@ -89,7 +89,7 @@
</connections>
</button>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="p9l-PS-2tC">
<rect key="frame" x="8" y="69" width="304" height="112"/>
<rect key="frame" x="8" y="61" width="304" height="120"/>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" " textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="kO5-Uc-AhU">
<rect key="frame" x="112" y="12" width="200" height="21"/>
@@ -111,10 +111,13 @@
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
</textView>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="kWq-q0-MPl">
<rect key="frame" x="8" y="69" width="304" height="112"/>
<rect key="frame" x="8" y="61" width="304" height="120"/>
<state key="normal">
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<connections>
<action selector="imageBtnClick:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="Fbt-xq-94q"/>
</connections>
</button>
</subviews>
<constraints>
@@ -136,7 +139,7 @@
<constraint firstItem="kWq-q0-MPl" firstAttribute="height" secondItem="p9l-PS-2tC" secondAttribute="height" id="Zgr-1g-SIR"/>
<constraint firstItem="kWq-q0-MPl" firstAttribute="centerX" secondItem="p9l-PS-2tC" secondAttribute="centerX" id="b9R-Qn-j79"/>
<constraint firstAttribute="trailingMargin" secondItem="2Rh-LI-LRT" secondAttribute="trailing" constant="4" id="ble-e8-Va3"/>
<constraint firstItem="p9l-PS-2tC" firstAttribute="top" secondItem="2Rh-LI-LRT" secondAttribute="bottom" constant="8" id="dUD-nk-z5D"/>
<constraint firstItem="p9l-PS-2tC" firstAttribute="top" secondItem="2Rh-LI-LRT" secondAttribute="bottom" id="dUD-nk-z5D"/>
<constraint firstItem="kO5-Uc-AhU" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="topMargin" constant="4" id="fRB-tZ-fsb"/>
<constraint firstItem="kWq-q0-MPl" firstAttribute="width" secondItem="p9l-PS-2tC" secondAttribute="width" id="g4i-cb-kjD"/>
<constraint firstItem="p9l-PS-2tC" firstAttribute="trailing" secondItem="H2p-sc-9uM" secondAttribute="trailingMargin" id="hsb-xb-XRe"/>
@@ -157,7 +160,6 @@
<outlet property="contentImgView" destination="p9l-PS-2tC" id="gjB-iJ-KAX"/>
<outlet property="contentTextView" destination="2Rh-LI-LRT" id="w5j-ni-kam"/>
<outlet property="goodBtn" destination="xeW-Yw-x4V" id="0LE-Gu-6C1"/>
<outlet property="imageBtnClick" destination="kWq-q0-MPl" id="Gga-2K-Ksh"/>
<outlet property="shareBtn" destination="DAR-mT-RbS" id="fGW-sh-aV3"/>
<outlet property="timeLabel" destination="kO5-Uc-AhU" id="jky-Wu-oYB"/>
<outlet property="userName" destination="Zq3-YP-dwB" id="Ggo-yh-zdb"/>
+1 -1
View File
@@ -11,4 +11,4 @@ pod 'Godzippa'
pod 'EGOCache'
pod 'SecureUDID'
pod 'MJRefresh'
pod 'MWPhotoBrowser'
#pod 'MWPhotoBrowser'
-11
View File
@@ -20,7 +20,6 @@ PODS:
- AFNetworking/UIKit (2.5.2):
- AFNetworking/NSURLConnection
- AFNetworking/NSURLSession
- DACircularProgress (2.2.0)
- DTCoreText (1.6.15):
- DTFoundation/Core (~> 1.7.5)
- DTFoundation/DTAnimatedGIF (~> 1.7.5)
@@ -39,12 +38,6 @@ PODS:
- Mantle/extobjc (1.5.4)
- MBProgressHUD (0.9.1)
- MJRefresh (1.4.3)
- MWPhotoBrowser (1.4.1):
- DACircularProgress
- MBProgressHUD (~> 0.8)
- PSTCollectionView (~> 1.2)
- SDWebImage (~> 3.7)
- PSTCollectionView (1.2.3)
- Reachability (3.2)
- SBJson (4.0.1)
- SDWebImage (3.7.2):
@@ -61,7 +54,6 @@ DEPENDENCIES:
- Mantle
- MBProgressHUD
- MJRefresh
- MWPhotoBrowser
- Reachability
- SBJson
- SDWebImage
@@ -70,7 +62,6 @@ DEPENDENCIES:
SPEC CHECKSUMS:
AFNetworking: fefbce9660acb17f48ae0011292d4da0f457bf36
DACircularProgress: 0f92b77239d5f3c612fc66185e2998391ac8e054
DTCoreText: 13ce06e63204a3b47c9db974e3d9be982bb0b1ed
DTFoundation: 1d28080c20c3da041706545363f8238ab53a6204
EGOCache: e7bdb2bf15a2ad23bf6c67c664c9fc3694652482
@@ -78,8 +69,6 @@ SPEC CHECKSUMS:
Mantle: 60acd0cd363e27d945bda0a6b8e90577112d28f3
MBProgressHUD: c47f2c166c126cf2ce36498d80f33e754d4e93ad
MJRefresh: 6eb09aefa9622f0908fdf42d63c2070478c04c42
MWPhotoBrowser: 2531e682860d62b8a7ba8659de02eb9040e431e5
PSTCollectionView: 6749df92885353521f55279a7ce2b293762e2be4
Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96
SBJson: 68f16f446bd6047dc3dd1ec4919a468c2cd7fedd
SDWebImage: 71b7cdc1d1721d6a82ed62889030225f2c249e29
-23
View File
@@ -1,23 +0,0 @@
# License
## MIT License
Copyright (c) 2013 Daniel Amitay (http://danielamitay.com)
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.
-77
View File
@@ -1,77 +0,0 @@
## DACircularProgress
`DACircularProgress` is a `UIView` subclass with circular `UIProgressView` properties.
It was originally built to be an imitation of Facebook's photo progress indicator.
View the included example project for a demonstration.
![Screenshot](https://github.com/danielamitay/DACircularProgress/raw/master/screenshot.png)
## Installation
To use `DACircularProgress`:
- Copy over the `DACircularProgress` folder to your project folder.
- Make sure that your project includes `<QuartzCore.framework>`.
- `#import "DACircularProgressView.h"`
### Example Code
```objective-c
self.progressView = [[DACircularProgressView alloc] initWithFrame:CGRectMake(140.0f, 30.0f, 40.0f, 40.0f)];
self.progressView.roundedCorners = YES;
self.progressView.trackTintColor = [UIColor clearColor];
[self.view addSubview:self.progressView];
```
- You can also use Interface Builder by adding a `UIView` element and setting its class to `DACircularProgress`
## Notes
### Compatibility
iOS5.0+
### Automatic Reference Counting (ARC) support
`DACircularProgress` was made with ARC enabled by default.
## Contact
- [Personal website](http://danielamitay.com)
- [GitHub](http://github.com/danielamitay)
- [Twitter](http://twitter.com/danielamitay)
- [LinkedIn](http://www.linkedin.com/in/danielamitay)
- [Email](hello@danielamitay.com)
If you use/enjoy `DACircularProgress`, let me know!
## Credits
`DACircularProgress` is brought to you by [Daniel Amitay](http://www.amitay.us) and [contributors to the project](https://github.com/danielamitay/DACircularProgress/contributors). A special thanks to [Cédric Luthi](https://github.com/0xced) for a significant amount of changes. If you have feature suggestions or bug reports, feel free to help out by sending pull requests or by [creating new issues](https://github.com/danielamitay/DACircularProgress/issues/new).
## License
### MIT License
Copyright (c) 2013 Daniel Amitay (http://danielamitay.com)
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.
@@ -1 +0,0 @@
../../../DACircularProgress/DACircularProgress/DACircularProgressView.h
-1
View File
@@ -1 +0,0 @@
../../../MWPhotoBrowser/MWPhotoBrowser/Classes/MWCaptionView.h
-1
View File
@@ -1 +0,0 @@
../../../MWPhotoBrowser/MWPhotoBrowser/Classes/MWCommon.h
-1
View File
@@ -1 +0,0 @@
../../../MWPhotoBrowser/MWPhotoBrowser/Classes/MWGridCell.h
@@ -1 +0,0 @@
../../../MWPhotoBrowser/MWPhotoBrowser/Classes/MWGridViewController.h
-1
View File
@@ -1 +0,0 @@
../../../MWPhotoBrowser/MWPhotoBrowser/Classes/MWPhoto.h
-1
View File
@@ -1 +0,0 @@
../../../MWPhotoBrowser/MWPhotoBrowser/Classes/MWPhotoBrowser.h

Some files were not shown because too many files have changed in this diff Show More