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 */; }; 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 */; }; 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 */; }; 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 */; }; A97559A01ACB88FE004ADA42 /* AWordDefault.m in Sources */ = {isa = PBXBuildFile; fileRef = A975599F1ACB88FE004ADA42 /* AWordDefault.m */; };
A97559A31ACB8CE0004ADA42 /* AWordUser.m in Sources */ = {isa = PBXBuildFile; fileRef = A97559A21ACB8CE0004ADA42 /* AWordUser.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 */; }; 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>"; }; 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>"; }; 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>"; }; 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>"; }; 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>"; }; 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>"; }; A97559A11ACB8CE0004ADA42 /* AWordUser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWordUser.h; sourceTree = "<group>"; };
@@ -389,6 +470,95 @@
path = My; path = My;
sourceTree = "<group>"; 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 */ = { A97559AE1ACBC615004ADA42 /* Note */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
@@ -512,6 +682,9 @@
A97C54D91AC9014D0038818A /* Vender */ = { A97C54D91AC9014D0038818A /* Vender */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
A96862511ACCF13300DDAA6B /* PSTCollectionView */,
A968624D1ACCF12300DDAA6B /* DACircularProgress */,
A96862291ACCF0B400DDAA6B /* MWPhotoBrowser */,
A97559B41ACBD99E004ADA42 /* UIPlaceHolderTextView */, A97559B41ACBD99E004ADA42 /* UIPlaceHolderTextView */,
A98F98461ACA29B5007C4594 /* UMSocial_Sdk_Extra_Frameworks */, A98F98461ACA29B5007C4594 /* UMSocial_Sdk_Extra_Frameworks */,
A9B4E39B1AC9908E00A1DBDF /* UMAnalytics_Sdk_3.4.6 */, A9B4E39B1AC9908E00A1DBDF /* UMAnalytics_Sdk_3.4.6 */,
@@ -544,6 +717,8 @@
A97C54E21AC91FD70038818A /* Resource */ = { A97C54E21AC91FD70038818A /* Resource */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
A968627D1ACCF46E00DDAA6B /* cellmorebtnclickN@2x.png */,
A968627B1ACCF3D200DDAA6B /* cellmorebtnnormalN@2x.png */,
A9617A561ACC2EBC0024AE4A /* mine-setting-icon-click@2x.png */, A9617A561ACC2EBC0024AE4A /* mine-setting-icon-click@2x.png */,
A9617A571ACC2EBC0024AE4A /* mine-setting-icon@2x.png */, A9617A571ACC2EBC0024AE4A /* mine-setting-icon@2x.png */,
A97559C61ACBF0BC004ADA42 /* btn_bad_clicked@2x.png */, A97559C61ACBF0BC004ADA42 /* btn_bad_clicked@2x.png */,
@@ -803,12 +978,14 @@
isa = PBXResourcesBuildPhase; isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
A968624B1ACCF0B400DDAA6B /* MWPhotoBrowser.bundle in Resources */,
A93442001ACA919F00A6B233 /* tabbarVoiceClick@2x.png in Resources */, A93442001ACA919F00A6B233 /* tabbarVoiceClick@2x.png in Resources */,
A97C55001AC933AD0038818A /* UMSCommentDetailController.xib in Resources */, A97C55001AC933AD0038818A /* UMSCommentDetailController.xib in Resources */,
A93441F21ACA916D00A6B233 /* tabbarQuotationClick@2x.png in Resources */, A93441F21ACA916D00A6B233 /* tabbarQuotationClick@2x.png in Resources */,
A93442031ACA981D00A6B233 /* Default-568h@2x.png in Resources */, A93442031ACA981D00A6B233 /* Default-568h@2x.png in Resources */,
A9FAD4321AC923FC007ADC10 /* MyViewController.xib in Resources */, A9FAD4321AC923FC007ADC10 /* MyViewController.xib in Resources */,
A93441FF1ACA919F00A6B233 /* tabbarVoice@2x.png in Resources */, A93441FF1ACA919F00A6B233 /* tabbarVoice@2x.png in Resources */,
A968627E1ACCF46E00DDAA6B /* cellmorebtnclickN@2x.png in Resources */,
A93441FA1ACA919500A6B233 /* tabbarQuotation-dark@2x.png in Resources */, A93441FA1ACA919500A6B233 /* tabbarQuotation-dark@2x.png in Resources */,
A97559D01ACBF0BC004ADA42 /* btn_share_clicked@2x.png in Resources */, A97559D01ACBF0BC004ADA42 /* btn_share_clicked@2x.png in Resources */,
A955109B1AC39E6A0006D16F /* Main.storyboard in Resources */, A955109B1AC39E6A0006D16F /* Main.storyboard in Resources */,
@@ -819,6 +996,7 @@
A97559CF1ACBF0BC004ADA42 /* btn_good@2x.png in Resources */, A97559CF1ACBF0BC004ADA42 /* btn_good@2x.png in Resources */,
A97559CC1ACBF0BC004ADA42 /* btn_bad_clicked@2x.png in Resources */, A97559CC1ACBF0BC004ADA42 /* btn_bad_clicked@2x.png in Resources */,
A97DBE461ACAE7B500705682 /* iconWeixin@2x.png in Resources */, A97DBE461ACAE7B500705682 /* iconWeixin@2x.png in Resources */,
A96862421ACCF0B400DDAA6B /* LICENCE.txt in Resources */,
A97C55071AC933AD0038818A /* UMSShareListController.xib in Resources */, A97C55071AC933AD0038818A /* UMSShareListController.xib in Resources */,
A93441EE1ACA8C8F00A6B233 /* defaultUserIcon@2x.png in Resources */, A93441EE1ACA8C8F00A6B233 /* defaultUserIcon@2x.png in Resources */,
A97559AC1ACB9DF0004ADA42 /* navigationButtonRefresh@2x.png in Resources */, A97559AC1ACB9DF0004ADA42 /* navigationButtonRefresh@2x.png in Resources */,
@@ -827,6 +1005,7 @@
A97C55041AC933AD0038818A /* UMShareEditViewControlleriPad.xib in Resources */, A97C55041AC933AD0038818A /* UMShareEditViewControlleriPad.xib in Resources */,
A98F98541ACA29B5007C4594 /* TencentOpenApi_IOS_Bundle.bundle in Resources */, A98F98541ACA29B5007C4594 /* TencentOpenApi_IOS_Bundle.bundle in Resources */,
A9617A591ACC2EBC0024AE4A /* mine-setting-icon@2x.png in Resources */, A9617A591ACC2EBC0024AE4A /* mine-setting-icon@2x.png in Resources */,
A968627C1ACCF3D200DDAA6B /* cellmorebtnnormalN@2x.png in Resources */,
A95510A01AC39E6A0006D16F /* LaunchScreen.xib in Resources */, A95510A01AC39E6A0006D16F /* LaunchScreen.xib in Resources */,
A93442041ACA981D00A6B233 /* Default@2x.png in Resources */, A93442041ACA981D00A6B233 /* Default@2x.png in Resources */,
A97DBE401ACAE29E00705682 /* Icon@2x.png in Resources */, A97DBE401ACAE29E00705682 /* Icon@2x.png in Resources */,
@@ -917,30 +1096,53 @@
A97559A01ACB88FE004ADA42 /* AWordDefault.m in Sources */, A97559A01ACB88FE004ADA42 /* AWordDefault.m in Sources */,
A97C54D31AC8F10F0038818A /* XiaoYuAPIClient.m in Sources */, A97C54D31AC8F10F0038818A /* XiaoYuAPIClient.m in Sources */,
A97559C41ACBEE99004ADA42 /* NoteTableViewCell.m in Sources */, A97559C41ACBEE99004ADA42 /* NoteTableViewCell.m in Sources */,
A96862481ACCF0B400DDAA6B /* MWTapDetectingImageView.m in Sources */,
A9FAD4311AC923FC007ADC10 /* MyViewController.m in Sources */, A9FAD4311AC923FC007ADC10 /* MyViewController.m in Sources */,
A97559BF1ACBE6C6004ADA42 /* NotePublishViewModel.m in Sources */, A97559BF1ACBE6C6004ADA42 /* NotePublishViewModel.m in Sources */,
A96862781ACCF13300DDAA6B /* PSTGridLayoutItem.m in Sources */,
A97559B21ACBC683004ADA42 /* NotePublishViewController.m in Sources */, A97559B21ACBC683004ADA42 /* NotePublishViewController.m in Sources */,
A97C54DD1AC901980038818A /* MBProgressHUD+Util.m in Sources */, A97C54DD1AC901980038818A /* MBProgressHUD+Util.m in Sources */,
A96862721ACCF13300DDAA6B /* PSTCollectionViewData.m in Sources */,
A97DBE331ACAE10800705682 /* LoginViewController.m in Sources */, A97DBE331ACAE10800705682 /* LoginViewController.m in Sources */,
A97559A31ACB8CE0004ADA42 /* AWordUser.m in Sources */, A97559A31ACB8CE0004ADA42 /* AWordUser.m in Sources */,
A95510981AC39E6A0006D16F /* ViewController.m in Sources */, A95510981AC39E6A0006D16F /* ViewController.m in Sources */,
A98F986B1ACA2FA9007C4594 /* BaseRefreshViewController.m in Sources */, A98F986B1ACA2FA9007C4594 /* BaseRefreshViewController.m in Sources */,
A96862471ACCF0B400DDAA6B /* MWPhotoBrowser.m in Sources */,
A9617A541ACC27860024AE4A /* SetUpViewController.m in Sources */, A9617A541ACC27860024AE4A /* SetUpViewController.m in Sources */,
A97C54D21AC8F10F0038818A /* AFgzipResponseSerializer.m in Sources */, A97C54D21AC8F10F0038818A /* AFgzipResponseSerializer.m in Sources */,
A9FAD4221AC922A5007ADC10 /* MainViewController.m in Sources */, A9FAD4221AC922A5007ADC10 /* MainViewController.m in Sources */,
A96862761ACCF13300DDAA6B /* PSTCollectionViewUpdateItem.m in Sources */,
A968626E1ACCF13300DDAA6B /* NSIndexPath+PSTCollectionViewAdditions.m in Sources */,
A9FAD42C1AC923E2007ADC10 /* MessageViewController.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 */, A97C54CD1AC8F10F0038818A /* BaseViewModel.m in Sources */,
A9617A4F1ACC0D0F0024AE4A /* NoteViewModel.m in Sources */, A9617A4F1ACC0D0F0024AE4A /* NoteViewModel.m in Sources */,
A96862461ACCF0B400DDAA6B /* MWPhoto.m in Sources */,
A968624A1ACCF0B400DDAA6B /* MWZoomingScrollView.m in Sources */,
A97C54CF1AC8F10F0038818A /* NSString+HXAddtions.m in Sources */, A97C54CF1AC8F10F0038818A /* NSString+HXAddtions.m in Sources */,
A96862501ACCF12300DDAA6B /* DACircularProgressView.m in Sources */,
A95510951AC39E6A0006D16F /* AppDelegate.m in Sources */, A95510951AC39E6A0006D16F /* AppDelegate.m in Sources */,
A97C54D11AC8F10F0038818A /* RequireEngine.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 */, A97C54D01AC8F10F0038818A /* PropertyEntity.m in Sources */,
A93441DE1ACA311700A6B233 /* Ash_UIUtil.m in Sources */, A93441DE1ACA311700A6B233 /* Ash_UIUtil.m in Sources */,
A968624C1ACCF0B400DDAA6B /* README.md in Sources */,
A96862701ACCF13300DDAA6B /* PSTCollectionViewCell.m in Sources */,
A97559B71ACBD99E004ADA42 /* UIPlaceHolderTextView.m in Sources */, A97559B71ACBD99E004ADA42 /* UIPlaceHolderTextView.m in Sources */,
A97C54D41AC8F10F0038818A /* XMFishBaseCode.m in Sources */, A97C54D41AC8F10F0038818A /* XMFishBaseCode.m in Sources */,
A97C54E11AC91DA10038818A /* CommonUtil.m in Sources */, A97C54E11AC91DA10038818A /* CommonUtil.m in Sources */,
A96862491ACCF0B400DDAA6B /* MWTapDetectingView.m in Sources */,
A968626F1ACCF13300DDAA6B /* PSTCollectionView.m in Sources */,
A9FAD4351AC925AC007ADC10 /* LoginViewModel.m in Sources */, A9FAD4351AC925AC007ADC10 /* LoginViewModel.m in Sources */,
A95510921AC39E6A0006D16F /* main.m in Sources */, A95510921AC39E6A0006D16F /* main.m in Sources */,
A96862711ACCF13300DDAA6B /* PSTCollectionViewController.m in Sources */,
A96862431ACCF0B400DDAA6B /* MWCaptionView.m in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -10,14 +10,14 @@
<string>Ash_AWord</string> <string>Ash_AWord</string>
<key>IDESourceControlProjectOriginsDictionary</key> <key>IDESourceControlProjectOriginsDictionary</key>
<dict> <dict>
<key>C2124BD0C46D10FF81834A1B3449A80D6B860D76</key> <key>B459B20E6BFCBAF9E5514A0B814271AD85A6C13B</key>
<string>https://github.com/wu736139669/Ash_First.git</string> <string>https://github.com/wu736139669/Ash_First.git</string>
</dict> </dict>
<key>IDESourceControlProjectPath</key> <key>IDESourceControlProjectPath</key>
<string>Ash_AWord.xcworkspace</string> <string>Ash_AWord.xcworkspace</string>
<key>IDESourceControlProjectRelativeInstallPathDictionary</key> <key>IDESourceControlProjectRelativeInstallPathDictionary</key>
<dict> <dict>
<key>C2124BD0C46D10FF81834A1B3449A80D6B860D76</key> <key>B459B20E6BFCBAF9E5514A0B814271AD85A6C13B</key>
<string>..</string> <string>..</string>
</dict> </dict>
<key>IDESourceControlProjectURL</key> <key>IDESourceControlProjectURL</key>
@@ -25,14 +25,14 @@
<key>IDESourceControlProjectVersion</key> <key>IDESourceControlProjectVersion</key>
<integer>111</integer> <integer>111</integer>
<key>IDESourceControlProjectWCCIdentifier</key> <key>IDESourceControlProjectWCCIdentifier</key>
<string>C2124BD0C46D10FF81834A1B3449A80D6B860D76</string> <string>B459B20E6BFCBAF9E5514A0B814271AD85A6C13B</string>
<key>IDESourceControlProjectWCConfigurations</key> <key>IDESourceControlProjectWCConfigurations</key>
<array> <array>
<dict> <dict>
<key>IDESourceControlRepositoryExtensionIdentifierKey</key> <key>IDESourceControlRepositoryExtensionIdentifierKey</key>
<string>public.vcs.git</string> <string>public.vcs.git</string>
<key>IDESourceControlWCCIdentifierKey</key> <key>IDESourceControlWCCIdentifierKey</key>
<string>C2124BD0C46D10FF81834A1B3449A80D6B860D76</string> <string>B459B20E6BFCBAF9E5514A0B814271AD85A6C13B</string>
<key>IDESourceControlWCCName</key> <key>IDESourceControlWCCName</key>
<string>Ash_AWord</string> <string>Ash_AWord</string>
</dict> </dict>
@@ -307,5 +307,37 @@
landmarkType = "5"> landmarkType = "5">
</BreakpointContent> </BreakpointContent>
</BreakpointProxy> </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> </Breakpoints>
</Bucket> </Bucket>
+9 -9
View File
@@ -4,29 +4,27 @@
<dict> <dict>
<key>CFBundleDevelopmentRegion</key> <key>CFBundleDevelopmentRegion</key>
<string>en</string> <string>en</string>
<key>CFBundleDisplayName</key>
<string>OneWord</string>
<key>CFBundleExecutable</key> <key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string> <string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIconFiles</key>
<array>
<string>Icon@2x</string>
<string>Icon</string>
</array>
<key>CFBundleIdentifier</key> <key>CFBundleIdentifier</key>
<string>ash.$(PRODUCT_NAME:rfc1034identifier)</string> <string>ash.$(PRODUCT_NAME:rfc1034identifier)</string>
<key>CFBundleInfoDictionaryVersion</key> <key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string> <string>6.0</string>
<key>CFBundleName</key> <key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string> <string>$(PRODUCT_NAME)</string>
<key>CFBundleDisplayName</key>
<string>OneWord</string>
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>APPL</string> <string>APPL</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>1.0</string> <string>1.0</string>
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>CFBundleIconFiles</key>
<array>
<string>Icon@2x</string>
<string>Icon</string>
</array>
<key>CFBundleURLTypes</key> <key>CFBundleURLTypes</key>
<array> <array>
<dict> <dict>
@@ -54,6 +52,8 @@
</array> </array>
</dict> </dict>
</array> </array>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key> <key>LSRequiresIPhoneOS</key>
<true/> <true/>
<key>UILaunchStoryboardName</key> <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)]; _nextButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:[NSString stringWithFormat:arrowPathFormat, @"Right"]] style:UIBarButtonItemStylePlain target:self action:@selector(gotoNextPage)];
} }
if (self.displayActionButton) { 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 // Update
@@ -11,10 +11,7 @@
#import "PSTCollectionViewItemKey.h" #import "PSTCollectionViewItemKey.h"
#import <objc/runtime.h> #import <objc/runtime.h>
#if TARGET_IPHONE_SIMULATOR
#import <dlfcn.h> #import <dlfcn.h>
#endif
#import <tgmath.h>
@interface PSTCollectionViewLayout (Internal) @interface PSTCollectionViewLayout (Internal)
@property (nonatomic, unsafe_unretained) PSTCollectionView *collectionView; @property (nonatomic, unsafe_unretained) PSTCollectionView *collectionView;
@@ -114,7 +111,7 @@ CGFloat PSTSimulatorAnimationDragCoefficient(void);
unsigned int doneFirstLayout : 1; unsigned int doneFirstLayout : 1;
}_collectionViewFlags; }_collectionViewFlags;
CGPoint _lastLayoutOffset; 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) PSTCollectionViewData *collectionViewData;
@property (nonatomic, strong, readonly) PSTCollectionViewExt *extVars; @property (nonatomic, strong, readonly) PSTCollectionViewExt *extVars;
@@ -275,10 +272,8 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
- (void)setFrame:(CGRect)frame { - (void)setFrame:(CGRect)frame {
if (!CGRectEqualToRect(frame, self.frame)) { if (!CGRectEqualToRect(frame, self.frame)) {
CGRect bounds = (CGRect){.origin=self.contentOffset, .size=frame.size};
BOOL shouldInvalidate = [self.collectionViewLayout shouldInvalidateLayoutForBoundsChange:bounds];
[super setFrame:frame]; [super setFrame:frame];
if (shouldInvalidate) { if ([self.collectionViewLayout shouldInvalidateLayoutForBoundsChange:self.bounds]) {
[self invalidateLayout]; [self invalidateLayout];
_collectionViewFlags.fadeCellsForBoundsChange = YES; _collectionViewFlags.fadeCellsForBoundsChange = YES;
} }
@@ -287,9 +282,8 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
- (void)setBounds:(CGRect)bounds { - (void)setBounds:(CGRect)bounds {
if (!CGRectEqualToRect(bounds, self.bounds)) { if (!CGRectEqualToRect(bounds, self.bounds)) {
BOOL shouldInvalidate = [self.collectionViewLayout shouldInvalidateLayoutForBoundsChange:bounds];
[super setBounds:bounds]; [super setBounds:bounds];
if (shouldInvalidate) { if ([self.collectionViewLayout shouldInvalidateLayoutForBoundsChange:bounds]) {
[self invalidateLayout]; [self invalidateLayout];
_collectionViewFlags.fadeCellsForBoundsChange = YES; _collectionViewFlags.fadeCellsForBoundsChange = YES;
} }
@@ -617,8 +611,18 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
} }
- (NSIndexPath *)indexPathForItemAtPoint:(CGPoint)point { - (NSIndexPath *)indexPathForItemAtPoint:(CGPoint)point {
PSTCollectionViewLayoutAttributes *attributes = [[self.collectionViewLayout layoutAttributesForElementsInRect:CGRectMake(point.x, point.y, 1, 1)] lastObject]; __block NSIndexPath *indexPath = nil;
return attributes.indexPath; [_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 { - (NSIndexPath *)indexPathForCell:(PSTCollectionViewCell *)cell {
@@ -984,8 +988,8 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
// First delete all items // First delete all items
NSMutableArray *paths = [NSMutableArray new]; NSMutableArray *paths = [NSMutableArray new];
[sections enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop) { [sections enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop) {
for (int i = 0; i < [self numberOfItemsInSection:(NSInteger)idx]; ++i) { for (int i = 0; i < [self numberOfItemsInSection:idx]; ++i) {
[paths addObject:[NSIndexPath indexPathForItem:i inSection:(NSInteger)idx]]; [paths addObject:[NSIndexPath indexPathForItem:i inSection:idx]];
} }
}]; }];
[self deleteItemsAtIndexPaths:paths]; [self deleteItemsAtIndexPaths:paths];
@@ -1083,9 +1087,6 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
else { else {
layout.collectionView = self; layout.collectionView = self;
_layout.collectionView = nil;
_layout = layout;
_collectionViewData = [[PSTCollectionViewData alloc] initWithCollectionView:self layout:layout]; _collectionViewData = [[PSTCollectionViewData alloc] initWithCollectionView:self layout:layout];
[_collectionViewData prepareToLoadData]; [_collectionViewData prepareToLoadData];
@@ -1285,6 +1286,9 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
applyNewLayoutBlock(); applyNewLayoutBlock();
freeUnusedViews(); freeUnusedViews();
} }
_layout.collectionView = nil;
_layout = layout;
} }
} }
@@ -1300,22 +1304,22 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
self.extVars.collectionViewDelegate = delegate; self.extVars.collectionViewDelegate = delegate;
// Managing the Selected Cells // Managing the Selected Cells
_collectionViewFlags.delegateShouldSelectItemAtIndexPath = (unsigned int)[self.delegate respondsToSelector:@selector(collectionView:shouldSelectItemAtIndexPath:)]; _collectionViewFlags.delegateShouldSelectItemAtIndexPath = [self.delegate respondsToSelector:@selector(collectionView:shouldSelectItemAtIndexPath:)];
_collectionViewFlags.delegateDidSelectItemAtIndexPath = (unsigned int)[self.delegate respondsToSelector:@selector(collectionView:didSelectItemAtIndexPath:)]; _collectionViewFlags.delegateDidSelectItemAtIndexPath = [self.delegate respondsToSelector:@selector(collectionView:didSelectItemAtIndexPath:)];
_collectionViewFlags.delegateShouldDeselectItemAtIndexPath = (unsigned int)[self.delegate respondsToSelector:@selector(collectionView:shouldDeselectItemAtIndexPath:)]; _collectionViewFlags.delegateShouldDeselectItemAtIndexPath = [self.delegate respondsToSelector:@selector(collectionView:shouldDeselectItemAtIndexPath:)];
_collectionViewFlags.delegateDidDeselectItemAtIndexPath = (unsigned int)[self.delegate respondsToSelector:@selector(collectionView:didDeselectItemAtIndexPath:)]; _collectionViewFlags.delegateDidDeselectItemAtIndexPath = [self.delegate respondsToSelector:@selector(collectionView:didDeselectItemAtIndexPath:)];
// Managing Cell Highlighting // Managing Cell Highlighting
_collectionViewFlags.delegateShouldHighlightItemAtIndexPath = (unsigned int)[self.delegate respondsToSelector:@selector(collectionView:shouldHighlightItemAtIndexPath:)]; _collectionViewFlags.delegateShouldHighlightItemAtIndexPath = [self.delegate respondsToSelector:@selector(collectionView:shouldHighlightItemAtIndexPath:)];
_collectionViewFlags.delegateDidHighlightItemAtIndexPath = (unsigned int)[self.delegate respondsToSelector:@selector(collectionView:didHighlightItemAtIndexPath:)]; _collectionViewFlags.delegateDidHighlightItemAtIndexPath = [self.delegate respondsToSelector:@selector(collectionView:didHighlightItemAtIndexPath:)];
_collectionViewFlags.delegateDidUnhighlightItemAtIndexPath = (unsigned int)[self.delegate respondsToSelector:@selector(collectionView:didUnhighlightItemAtIndexPath:)]; _collectionViewFlags.delegateDidUnhighlightItemAtIndexPath = [self.delegate respondsToSelector:@selector(collectionView:didUnhighlightItemAtIndexPath:)];
// Tracking the Removal of Views // Tracking the Removal of Views
_collectionViewFlags.delegateDidEndDisplayingCell = (unsigned int)[self.delegate respondsToSelector:@selector(collectionView:didEndDisplayingCell:forItemAtIndexPath:)]; _collectionViewFlags.delegateDidEndDisplayingCell = [self.delegate respondsToSelector:@selector(collectionView:didEndDisplayingCell:forItemAtIndexPath:)];
_collectionViewFlags.delegateDidEndDisplayingSupplementaryView = (unsigned int)[self.delegate respondsToSelector:@selector(collectionView:didEndDisplayingSupplementaryView:forElementOfKind:atIndexPath:)]; _collectionViewFlags.delegateDidEndDisplayingSupplementaryView = [self.delegate respondsToSelector:@selector(collectionView:didEndDisplayingSupplementaryView:forElementOfKind:atIndexPath:)];
// Managing Actions for Cells // 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. // 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. // The flag names are guesses and are there for documentation purposes.
@@ -1329,10 +1333,10 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
_dataSource = dataSource; _dataSource = dataSource;
// Getting Item and Section Metrics // Getting Item and Section Metrics
_collectionViewFlags.dataSourceNumberOfSections = (unsigned int)[_dataSource respondsToSelector:@selector(numberOfSectionsInCollectionView:)]; _collectionViewFlags.dataSourceNumberOfSections = [_dataSource respondsToSelector:@selector(numberOfSectionsInCollectionView:)];
// Getting Views for Items // 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 { - (void)setAllowsSelection:(BOOL)allowsSelection {
_collectionViewFlags.allowsSelection = (unsigned int)allowsSelection; _collectionViewFlags.allowsSelection = allowsSelection;
} }
- (BOOL)allowsMultipleSelection { - (BOOL)allowsMultipleSelection {
@@ -1349,7 +1353,7 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
} }
- (void)setAllowsMultipleSelection:(BOOL)allowsMultipleSelection { - (void)setAllowsMultipleSelection:(BOOL)allowsMultipleSelection {
_collectionViewFlags.allowsMultipleSelection = (unsigned int)allowsMultipleSelection; _collectionViewFlags.allowsMultipleSelection = allowsMultipleSelection;
// Deselect all objects if allows multiple selection is false // Deselect all objects if allows multiple selection is false
if (!allowsMultipleSelection && _indexPathsForSelectedItems.count) { if (!allowsMultipleSelection && _indexPathsForSelectedItems.count) {
@@ -1723,10 +1727,10 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
NSArray *oldToNewIndexMap = _update[@"oldToNewIndexMap"]; NSArray *oldToNewIndexMap = _update[@"oldToNewIndexMap"];
NSUInteger newGlobalIndex = NSNotFound; NSUInteger newGlobalIndex = NSNotFound;
if (NSNotFound != oldGlobalIndex && oldGlobalIndex < oldToNewIndexMap.count) { 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 *newIndexPath = newGlobalIndex == NSNotFound ? nil : [_update[@"newModel"] indexPathForItemAtGlobalIndex:newGlobalIndex];
NSIndexPath *oldIndexPath = oldGlobalIndex == NSNotFound ? nil : [_update[@"oldModel"] indexPathForItemAtGlobalIndex:(int)oldGlobalIndex]; NSIndexPath *oldIndexPath = oldGlobalIndex == NSNotFound ? nil : [_update[@"oldModel"] indexPathForItemAtGlobalIndex:oldGlobalIndex];
if (newIndexPath) { if (newIndexPath) {
PSTCollectionViewLayoutAttributes *startAttrs = nil; 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; _allVisibleViewsDict = newAllVisibleView;
for (NSDictionary *animation in animations) { for (NSDictionary *animation in animations) {
@@ -1790,10 +1791,27 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
[view applyLayoutAttributes:attr]; [view applyLayoutAttributes:attr];
}; };
[UIView animateWithDuration:.3 animations:^{
_collectionViewFlags.updatingLayout = YES; _collectionViewFlags.updatingLayout = YES;
[CATransaction begin]; [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:^{ [CATransaction setCompletionBlock:^{
// Iterate through all the views that we are going to remove. // Iterate through all the views that we are going to remove.
[viewsToRemove enumerateKeysAndObjectsUsingBlock:^(NSNumber *keyObj, NSArray *views, BOOL *stop) { [viewsToRemove enumerateKeysAndObjectsUsingBlock:^(NSNumber *keyObj, NSArray *views, BOOL *stop) {
@@ -1808,14 +1826,7 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
} }
} }
}]; }];
_collectionViewFlags.updatingLayout = NO; _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) { for (NSDictionary *animation in animations) {
@@ -1824,6 +1835,13 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
[view applyLayoutAttributes:attrs]; [view applyLayoutAttributes:attrs];
} }
[CATransaction commit]; [CATransaction commit];
} completion:^(BOOL finished) {
if (_updateCompletionHandler) {
_updateCompletionHandler(finished);
_updateCompletionHandler = nil;
}
}];
[_layout finalizeCollectionViewUpdates]; [_layout finalizeCollectionViewUpdates];
} }
@@ -2013,12 +2031,12 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
#if !defined NS_BLOCK_ASSERTIONS #if !defined NS_BLOCK_ASSERTIONS
for (NSNumber *sectionKey in [operations keyEnumerator]) { for (NSNumber *sectionKey in [operations keyEnumerator]) {
NSInteger section = [sectionKey integerValue]; NSInteger section = [sectionKey intValue];
NSInteger insertedCount = [operations[sectionKey][@"inserted"] integerValue]; NSInteger insertedCount = [operations[sectionKey][@"inserted"] intValue];
NSInteger deletedCount = [operations[sectionKey][@"deleted"] integerValue]; NSInteger deletedCount = [operations[sectionKey][@"deleted"] intValue];
NSInteger movedInCount = [operations[sectionKey][@"movedIn"] integerValue]; NSInteger movedInCount = [operations[sectionKey][@"movedIn"] intValue];
NSInteger movedOutCount = [operations[sectionKey][@"movedOut"] integerValue]; NSInteger movedOutCount = [operations[sectionKey][@"movedOut"] intValue];
NSAssert([oldCollectionViewData numberOfItemsInSection:section] + insertedCount - deletedCount + movedInCount - movedOutCount == NSAssert([oldCollectionViewData numberOfItemsInSection:section] + insertedCount - deletedCount + movedInCount - movedOutCount ==
[_collectionViewData numberOfItemsInSection:section], [_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 // 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]; // [newModel removeObjectAtIndex:updateItem.indexPathBeforeUpdate.section];
}else { }else {
[(NSMutableArray *)newModel[(NSUInteger)updateItem.indexPathBeforeUpdate.section] [(NSMutableArray *)newModel[updateItem.indexPathBeforeUpdate.section]
removeObjectAtIndex:(NSUInteger)updateItem.indexPathBeforeUpdate.item]; removeObjectAtIndex:updateItem.indexPathBeforeUpdate.item];
} }
} }
break; break;
case PSTCollectionUpdateActionInsert: { case PSTCollectionUpdateActionInsert: {
if (updateItem.isSectionOperation) { if (updateItem.isSectionOperation) {
[newModel insertObject:[[NSMutableArray alloc] init] [newModel insertObject:[[NSMutableArray alloc] init]
atIndex:(NSUInteger)updateItem.indexPathAfterUpdate.section]; atIndex:updateItem.indexPathAfterUpdate.section];
}else { }else {
[(NSMutableArray *)newModel[(NSUInteger)updateItem.indexPathAfterUpdate.section] [(NSMutableArray *)newModel[updateItem.indexPathAfterUpdate.section]
insertObject:@(NSNotFound) insertObject:@(NSNotFound)
atIndex:(NSUInteger)updateItem.indexPathAfterUpdate.item]; atIndex:updateItem.indexPathAfterUpdate.item];
} }
} }
break; break;
case PSTCollectionUpdateActionMove: { case PSTCollectionUpdateActionMove: {
if (updateItem.isSectionOperation) { if (updateItem.isSectionOperation) {
id section = newModel[(NSUInteger)updateItem.indexPathBeforeUpdate.section]; id section = newModel[updateItem.indexPathBeforeUpdate.section];
[newModel insertObject:section atIndex:(NSUInteger)updateItem.indexPathAfterUpdate.section]; [newModel insertObject:section atIndex:updateItem.indexPathAfterUpdate.section];
} }
else { else {
id object = @([oldCollectionViewData globalIndexForItemAtIndexPath:updateItem.indexPathBeforeUpdate]); id object = @([oldCollectionViewData globalIndexForItemAtIndexPath:updateItem.indexPathBeforeUpdate]);
[newModel[(NSUInteger)updateItem.indexPathBeforeUpdate.section] removeObject:object]; [newModel[updateItem.indexPathBeforeUpdate.section] removeObject:object];
[newModel[(NSUInteger)updateItem.indexPathAfterUpdate.section] insertObject:object [newModel[updateItem.indexPathAfterUpdate.section] insertObject:object
atIndex:(NSUInteger)updateItem.indexPathAfterUpdate.item]; atIndex:updateItem.indexPathAfterUpdate.item];
} }
} }
break; break;
@@ -2093,8 +2111,8 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
} }
} }
NSMutableArray *oldToNewMap = [NSMutableArray arrayWithCapacity:(NSUInteger)[oldCollectionViewData numberOfItems]]; NSMutableArray *oldToNewMap = [NSMutableArray arrayWithCapacity:[oldCollectionViewData numberOfItems]];
NSMutableArray *newToOldMap = [NSMutableArray arrayWithCapacity:(NSUInteger)[_collectionViewData numberOfItems]]; NSMutableArray *newToOldMap = [NSMutableArray arrayWithCapacity:[_collectionViewData numberOfItems]];
for (NSInteger i = 0; i < [oldCollectionViewData numberOfItems]; i++) for (NSInteger i = 0; i < [oldCollectionViewData numberOfItems]; i++)
[oldToNewMap addObject:@(NSNotFound)]; [oldToNewMap addObject:@(NSNotFound)];
@@ -2105,9 +2123,9 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
for (NSUInteger i = 0; i < newModel.count; i++) { for (NSUInteger i = 0; i < newModel.count; i++) {
NSMutableArray *section = newModel[i]; NSMutableArray *section = newModel[i];
for (NSUInteger j = 0; j < section.count; j++) { 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) if ([section[j] integerValue] != NSNotFound)
oldToNewMap[[section[j] unsignedIntegerValue]] = @(newGlobalIndex); oldToNewMap[[section[j] intValue]] = @(newGlobalIndex);
if (newGlobalIndex != NSNotFound) if (newGlobalIndex != NSNotFound)
newToOldMap[newGlobalIndex] = section[j]; newToOldMap[newGlobalIndex] = section[j];
} }
@@ -2151,7 +2169,7 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
NSMutableArray *updateActions = [self arrayForUpdateAction:updateAction]; NSMutableArray *updateActions = [self arrayForUpdateAction:updateAction];
[sections enumerateIndexesUsingBlock:^(NSUInteger section, BOOL *stop) { [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]; [updateActions addObject:updateItem];
}]; }];
@@ -2208,50 +2226,31 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
@implementation PSUICollectionViewLayoutAttributes_ @end @implementation PSUICollectionViewLayoutAttributes_ @end
@implementation PSUICollectionViewController_ @end @implementation PSUICollectionViewController_ @end
static void PSTRegisterClasses() { static BOOL PSTRegisterClass(NSString *UIClassName, Class PSTClass) {
NSDictionary *map = @{ NSCParameterAssert(UIClassName && PSTClass);
@"UICollectionView": PSUICollectionView_.class,
@"UICollectionViewCell": PSUICollectionViewCell_.class,
@"UICollectionReusableView": PSUICollectionReusableView_.class,
@"UICollectionViewLayout": PSUICollectionViewLayout_.class,
@"UICollectionViewFlowLayout": PSUICollectionViewFlowLayout_.class,
@"UICollectionViewLayoutAttributes": PSUICollectionViewLayoutAttributes_.class,
@"UICollectionViewController": PSUICollectionViewController_.class
};
// 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); Class UIClass = NSClassFromString(UIClassName);
if (UIClass) { if (UIClass) {
// Class size need to be the same for class_setSuperclass to work. // 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. // 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) { if (sizeDifference > 0) {
canOverwrite = NO; NSLog(@"Warning! ivar size mismatch in %@ - can't change the superclass.", PSTClass);
NSLog(@"Warning! ivar size mismatch in %@ of %tu bytes - can't change the superclass.", PSTClass, sizeDifference); return NO;
}
} else { } 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 push
#pragma clang diagnostic ignored "-Wdeprecated-declarations" #pragma clang diagnostic ignored "-Wdeprecated-declarations"
// class_setSuperclass is deprecated, but still exists and works on iOS6/7. // class_setSuperclass is deprecated, but still exists and works on iOS6/7.
class_setSuperclass(PSTClass, UIClass); class_setSuperclass(PSTClass, UIClass);
#pragma clang diagnostic pop #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. // Create subclasses that pose as UICollectionView et al, if not available at runtime.
@@ -2260,7 +2259,13 @@ __attribute__((constructor)) static void PSTCreateUICollectionViewClasses(void)
@autoreleasepool { @autoreleasepool {
// Change superclass at runtime. This allows seamless switching from PST* to UI* at runtime. // 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 // 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) // (IB doesn't allow adding the PSUICollectionView_ types but doesn't complain on unknown classes)
@@ -76,7 +76,7 @@
} }
- (void)setInUpdateAnimation:(BOOL)inUpdateAnimation { - (void)setInUpdateAnimation:(BOOL)inUpdateAnimation {
_reusableViewFlags.inUpdateAnimation = (unsigned int)inUpdateAnimation; _reusableViewFlags.inUpdateAnimation = inUpdateAnimation;
} }
@end @end
@@ -149,14 +149,14 @@
// Selection highlights underlying contents // Selection highlights underlying contents
- (void)setSelected:(BOOL)selected { - (void)setSelected:(BOOL)selected {
_collectionCellFlags.selected = (unsigned int)selected; _collectionCellFlags.selected = selected;
self.accessibilityTraits = selected ? UIAccessibilityTraitSelected : UIAccessibilityTraitNone; self.accessibilityTraits = selected ? UIAccessibilityTraitSelected : UIAccessibilityTraitNone;
[self updateBackgroundView:selected]; [self updateBackgroundView:selected];
} }
// Cell highlighting only highlights the cell itself // Cell highlighting only highlights the cell itself
- (void)setHighlighted:(BOOL)highlighted { - (void)setHighlighted:(BOOL)highlighted {
_collectionCellFlags.highlighted = (unsigned int)highlighted; _collectionCellFlags.highlighted = highlighted;
[self updateBackgroundView:highlighted]; [self updateBackgroundView:highlighted];
} }
@@ -123,7 +123,7 @@
#pragma mark - Properties #pragma mark - Properties
- (void)setClearsSelectionOnViewWillAppear:(BOOL)clearsSelectionOnViewWillAppear { - (void)setClearsSelectionOnViewWillAppear:(BOOL)clearsSelectionOnViewWillAppear {
_collectionViewControllerFlags.clearsSelectionOnViewWillAppear = (unsigned int)clearsSelectionOnViewWillAppear; _collectionViewControllerFlags.clearsSelectionOnViewWillAppear = clearsSelectionOnViewWillAppear;
} }
- (BOOL)clearsSelectionOnViewWillAppear { - (BOOL)clearsSelectionOnViewWillAppear {
@@ -171,7 +171,7 @@
} }
- (void)setLayoutIsPrepared:(BOOL)layoutIsPrepared { - (void)setLayoutIsPrepared:(BOOL)layoutIsPrepared {
_collectionViewDataFlags.layoutIsPrepared = (unsigned int)layoutIsPrepared; _collectionViewDataFlags.layoutIsPrepared = layoutIsPrepared;
} }
/////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////
@@ -208,9 +208,9 @@
} }
// allocate space // allocate space
if (!_sectionItemCounts) { if (!_sectionItemCounts) {
_sectionItemCounts = malloc((size_t)_numSections * sizeof(NSInteger)); _sectionItemCounts = malloc(_numSections * sizeof(NSInteger));
}else { }else {
_sectionItemCounts = realloc(_sectionItemCounts, (size_t)_numSections * sizeof(NSInteger)); _sectionItemCounts = realloc(_sectionItemCounts, _numSections * sizeof(NSInteger));
} }
// query cells per section // query cells per section
@@ -24,6 +24,7 @@ typedef NS_ENUM(NSInteger, PSTCollectionViewScrollDirection) {
- (CGFloat)collectionView:(PSTCollectionView *)collectionView layout:(PSTCollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section; - (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 referenceSizeForHeaderInSection:(NSInteger)section;
- (CGSize)collectionView:(PSTCollectionView *)collectionView layout:(PSTCollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section; - (CGSize)collectionView:(PSTCollectionView *)collectionView layout:(PSTCollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section;
- (PSTCollectionViewLayoutAttributes *)layoutAttributesForSupplementaryViewOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath;
@end @end
@@ -145,7 +145,7 @@ static char kPSTCachedItemRectsKey;
normalizedHeaderFrame.origin.x += section.frame.origin.x; normalizedHeaderFrame.origin.x += section.frame.origin.x;
normalizedHeaderFrame.origin.y += section.frame.origin.y; normalizedHeaderFrame.origin.y += section.frame.origin.y;
if (!CGRectIsEmpty(normalizedHeaderFrame) && CGRectIntersectsRect(normalizedHeaderFrame, rect)) { 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; layoutAttributes.frame = normalizedHeaderFrame;
[layoutAttributesArray addObject:layoutAttributes]; [layoutAttributesArray addObject:layoutAttributes];
} }
@@ -158,10 +158,8 @@ static char kPSTCachedItemRectsKey;
for (PSTGridLayoutRow *row in section.rows) { for (PSTGridLayoutRow *row in section.rows) {
CGRect normalizedRowFrame = row.rowFrame; CGRect normalizedRowFrame = row.rowFrame;
normalizedRowFrame.origin.x += section.frame.origin.x; normalizedRowFrame.origin.x += section.frame.origin.x;
normalizedRowFrame.origin.y += section.frame.origin.y; normalizedRowFrame.origin.y += section.frame.origin.y;
if (CGRectIntersectsRect(normalizedRowFrame, rect)) { if (CGRectIntersectsRect(normalizedRowFrame, rect)) {
// TODO be more fine-grained for items // TODO be more fine-grained for items
@@ -170,30 +168,25 @@ static char kPSTCachedItemRectsKey;
NSUInteger sectionItemIndex; NSUInteger sectionItemIndex;
CGRect itemFrame; CGRect itemFrame;
if (row.fixedItemSize) { if (row.fixedItemSize) {
itemFrame = [itemRects[(NSUInteger)itemIndex] CGRectValue]; itemFrame = [itemRects[itemIndex] CGRectValue];
sectionItemIndex = (NSUInteger)(row.index * section.itemsByRowCount + itemIndex); sectionItemIndex = row.index * section.itemsByRowCount + itemIndex;
}else { }else {
PSTGridLayoutItem *item = row.items[(NSUInteger)itemIndex]; PSTGridLayoutItem *item = row.items[itemIndex];
sectionItemIndex = [section.items indexOfObjectIdenticalTo:item]; sectionItemIndex = [section.items indexOfObjectIdenticalTo:item];
itemFrame = item.itemFrame; itemFrame = item.itemFrame;
} }
layoutAttributes = [[self.class layoutAttributesClass] layoutAttributesForCellWithIndexPath:[NSIndexPath indexPathForItem:sectionItemIndex inSection:sectionIndex]];
CGRect normalisedItemFrame = CGRectMake(normalizedRowFrame.origin.x + itemFrame.origin.x, normalizedRowFrame.origin.y + itemFrame.origin.y, itemFrame.size.width, itemFrame.size.height); layoutAttributes.frame = 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;
[layoutAttributesArray addObject:layoutAttributes]; [layoutAttributesArray addObject:layoutAttributes];
} }
} }
} }
}
CGRect normalizedFooterFrame = section.footerFrame; CGRect normalizedFooterFrame = section.footerFrame;
normalizedFooterFrame.origin.x += section.frame.origin.x; normalizedFooterFrame.origin.x += section.frame.origin.x;
normalizedFooterFrame.origin.y += section.frame.origin.y; normalizedFooterFrame.origin.y += section.frame.origin.y;
if (!CGRectIsEmpty(normalizedFooterFrame) && CGRectIntersectsRect(normalizedFooterFrame, rect)) { 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; layoutAttributes.frame = normalizedFooterFrame;
[layoutAttributesArray addObject:layoutAttributes]; [layoutAttributesArray addObject:layoutAttributes];
} }
@@ -205,17 +198,17 @@ static char kPSTCachedItemRectsKey;
- (PSTCollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath { - (PSTCollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath {
if (!_data) [self prepareLayout]; if (!_data) [self prepareLayout];
PSTGridLayoutSection *section = _data.sections[(NSUInteger)indexPath.section]; PSTGridLayoutSection *section = _data.sections[indexPath.section];
PSTGridLayoutRow *row = nil; PSTGridLayoutRow *row = nil;
CGRect itemFrame = CGRectZero; CGRect itemFrame = CGRectZero;
if (section.fixedItemSize && section.itemsByRowCount > 0 && indexPath.item / section.itemsByRowCount < (NSInteger)section.rows.count) { if (section.fixedItemSize && indexPath.item / section.itemsByRowCount < (NSInteger)section.rows.count) {
row = section.rows[(NSUInteger)(indexPath.item / section.itemsByRowCount)]; row = section.rows[indexPath.item / section.itemsByRowCount];
NSUInteger itemIndex = (NSUInteger)(indexPath.item % section.itemsByRowCount); NSUInteger itemIndex = indexPath.item % section.itemsByRowCount;
NSArray *itemRects = [row itemRects]; NSArray *itemRects = [row itemRects];
itemFrame = [itemRects[itemIndex] CGRectValue]; itemFrame = [itemRects[itemIndex] CGRectValue];
}else if (indexPath.item < (NSInteger)section.items.count) { }else if (indexPath.item < (NSInteger)section.items.count) {
PSTGridLayoutItem *item = section.items[(NSUInteger)indexPath.item]; PSTGridLayoutItem *item = section.items[indexPath.item];
row = item.rowObject; row = item.rowObject;
itemFrame = item.itemFrame; itemFrame = item.itemFrame;
} }
@@ -234,7 +227,7 @@ static char kPSTCachedItemRectsKey;
- (PSTCollectionViewLayoutAttributes *)layoutAttributesForSupplementaryViewOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath { - (PSTCollectionViewLayoutAttributes *)layoutAttributesForSupplementaryViewOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath {
if (!_data) [self prepareLayout]; if (!_data) [self prepareLayout];
NSUInteger sectionIndex = (NSUInteger)indexPath.section; NSUInteger sectionIndex = indexPath.section;
PSTCollectionViewLayoutAttributes *layoutAttributes = nil; PSTCollectionViewLayoutAttributes *layoutAttributes = nil;
if (sectionIndex < _data.sections.count) { if (sectionIndex < _data.sections.count) {
@@ -252,7 +245,7 @@ static char kPSTCachedItemRectsKey;
normalizedFrame.origin.x += section.frame.origin.x; normalizedFrame.origin.x += section.frame.origin.x;
normalizedFrame.origin.y += section.frame.origin.y; 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; layoutAttributes.frame = normalizedFrame;
} }
} }
@@ -330,8 +323,8 @@ static char kPSTCachedItemRectsKey;
BOOL implementsHeaderReferenceDelegate = [flowDataSource respondsToSelector:@selector(collectionView:layout:referenceSizeForHeaderInSection:)]; BOOL implementsHeaderReferenceDelegate = [flowDataSource respondsToSelector:@selector(collectionView:layout:referenceSizeForHeaderInSection:)];
BOOL implementsFooterReferenceDelegate = [flowDataSource respondsToSelector:@selector(collectionView:layout:referenceSizeForFooterInSection:)]; BOOL implementsFooterReferenceDelegate = [flowDataSource respondsToSelector:@selector(collectionView:layout:referenceSizeForFooterInSection:)];
NSInteger numberOfSections = [self.collectionView numberOfSections]; NSUInteger numberOfSections = [self.collectionView numberOfSections];
for (NSInteger section = 0; section < numberOfSections; section++) { for (NSUInteger section = 0; section < numberOfSections; section++) {
PSTGridLayoutSection *layoutSection = [_data addSection]; PSTGridLayoutSection *layoutSection = [_data addSection];
layoutSection.verticalInterstice = _data.horizontal ? self.minimumInteritemSpacing : self.minimumLineSpacing; layoutSection.verticalInterstice = _data.horizontal ? self.minimumInteritemSpacing : self.minimumLineSpacing;
layoutSection.horizontalInterstice = !_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; 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 delegate implements size delegate, query it for all items
if (implementsSizeDelegate) { if (implementsSizeDelegate) {
for (NSInteger item = 0; item < numberOfItems; item++) { for (NSUInteger item = 0; item < numberOfItems; item++) {
NSIndexPath *indexPath = [NSIndexPath indexPathForItem:item inSection:(NSInteger)section]; NSIndexPath *indexPath = [NSIndexPath indexPathForItem:item inSection:section];
CGSize itemSize = implementsSizeDelegate ? [flowDataSource collectionView:self.collectionView layout:self sizeForItemAtIndexPath:indexPath] : self.itemSize; CGSize itemSize = implementsSizeDelegate ? [flowDataSource collectionView:self.collectionView layout:self sizeForItemAtIndexPath:indexPath] : self.itemSize;
PSTGridLayoutItem *layoutItem = [layoutSection addItem]; PSTGridLayoutItem *layoutItem = [layoutSection addItem];
@@ -406,11 +399,11 @@ static char kPSTCachedItemRectsKey;
if (_data.horizontal) { if (_data.horizontal) {
sectionFrame.origin.x += contentSize.width; sectionFrame.origin.x += contentSize.width;
contentSize.width += section.frame.size.width + section.frame.origin.x; 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 { }else {
sectionFrame.origin.y += contentSize.height; sectionFrame.origin.y += contentSize.height;
contentSize.height += sectionFrame.size.height + section.frame.origin.y; 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; section.frame = sectionFrame;
} }
@@ -8,7 +8,6 @@
#import "PSTCollectionView.h" #import "PSTCollectionView.h"
#import "PSTCollectionViewItemKey.h" #import "PSTCollectionViewItemKey.h"
#import "PSTCollectionViewData.h" #import "PSTCollectionViewData.h"
#import <objc/runtime.h> #import <objc/runtime.h>
@interface PSTCollectionView () @interface PSTCollectionView ()
@@ -126,18 +125,14 @@
return self.representedElementCategory == PSTCollectionViewItemTypeCell; return self.representedElementCategory == PSTCollectionViewItemTypeCell;
} }
- (void) updateFrame {
_frame = (CGRect){{_center.x - _size.width / 2, _center.y - _size.height / 2}, _size};
}
- (void)setSize:(CGSize)size { - (void)setSize:(CGSize)size {
_size = size; _size = size;
[self updateFrame]; _frame = (CGRect){_frame.origin, _size};
} }
- (void)setCenter:(CGPoint)center { - (void)setCenter:(CGPoint)center {
_center = 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 { - (void)setFrame:(CGRect)frame {
@@ -301,7 +296,7 @@
PSTCollectionViewLayoutAttributes *attr = [view.layoutAttributes copy]; PSTCollectionViewLayoutAttributes *attr = [view.layoutAttributes copy];
if (attr) { if (attr) {
if (attr.isCell) { if (attr.isCell) {
NSUInteger index = [update[@"oldModel"] globalIndexForItemAtIndexPath:[attr indexPath]]; NSInteger index = [update[@"oldModel"] globalIndexForItemAtIndexPath:[attr indexPath]];
if (index != NSNotFound) { if (index != NSNotFound) {
[attr setIndexPath:[attr indexPath]]; [attr setIndexPath:[attr indexPath]];
} }
@@ -316,9 +311,9 @@
for (PSTCollectionViewLayoutAttributes *attr in [collectionViewData layoutAttributesForElementsInRect:bounds]) { for (PSTCollectionViewLayoutAttributes *attr in [collectionViewData layoutAttributesForElementsInRect:bounds]) {
if (attr.isCell) { 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) { if (index != NSNotFound) {
PSTCollectionViewLayoutAttributes *finalAttrs = [attr copy]; PSTCollectionViewLayoutAttributes *finalAttrs = [attr copy];
[finalAttrs setIndexPath:[update[@"oldModel"] indexPathForItemAtGlobalIndex:index]]; [finalAttrs setIndexPath:[update[@"oldModel"] indexPathForItemAtGlobalIndex:index]];
@@ -333,12 +328,12 @@
if ([updateItem isSectionOperation]) { if ([updateItem isSectionOperation]) {
if (action == PSTCollectionUpdateActionReload) { if (action == PSTCollectionUpdateActionReload) {
[_deletedSectionsSet addIndex:(NSUInteger)[[updateItem indexPathBeforeUpdate] section]]; [_deletedSectionsSet addIndex:[[updateItem indexPathBeforeUpdate] section]];
[_insertedSectionsSet addIndex:(NSUInteger)[updateItem indexPathAfterUpdate].section]; [_insertedSectionsSet addIndex:[updateItem indexPathAfterUpdate].section];
} }
else { else {
NSMutableIndexSet *indexSet = action == PSTCollectionUpdateActionInsert ? _insertedSectionsSet : _deletedSectionsSet; NSMutableIndexSet *indexSet = action == PSTCollectionUpdateActionInsert ? _insertedSectionsSet : _deletedSectionsSet;
[indexSet addIndex:(NSUInteger)[updateItem indexPath].section]; [indexSet addIndex:[updateItem indexPath].section];
} }
} }
else { else {
@@ -370,7 +365,7 @@
- (PSTCollectionViewLayoutAttributes *)initialLayoutAttributesForAppearingItemAtIndexPath:(NSIndexPath *)itemIndexPath { - (PSTCollectionViewLayoutAttributes *)initialLayoutAttributesForAppearingItemAtIndexPath:(NSIndexPath *)itemIndexPath {
PSTCollectionViewLayoutAttributes *attrs = _initialAnimationLayoutAttributesDict[[PSTCollectionViewItemKey collectionItemKeyForCellWithIndexPath:itemIndexPath]]; PSTCollectionViewLayoutAttributes *attrs = _initialAnimationLayoutAttributesDict[[PSTCollectionViewItemKey collectionItemKeyForCellWithIndexPath:itemIndexPath]];
if ([_insertedSectionsSet containsIndex:(NSUInteger)[itemIndexPath section]]) { if ([_insertedSectionsSet containsIndex:[itemIndexPath section]]) {
attrs = [attrs copy]; attrs = [attrs copy];
[attrs setAlpha:0]; [attrs setAlpha:0];
} }
@@ -380,7 +375,7 @@
- (PSTCollectionViewLayoutAttributes *)finalLayoutAttributesForDisappearingItemAtIndexPath:(NSIndexPath *)itemIndexPath { - (PSTCollectionViewLayoutAttributes *)finalLayoutAttributesForDisappearingItemAtIndexPath:(NSIndexPath *)itemIndexPath {
PSTCollectionViewLayoutAttributes *attrs = _finalAnimationLayoutAttributesDict[[PSTCollectionViewItemKey collectionItemKeyForCellWithIndexPath:itemIndexPath]]; PSTCollectionViewLayoutAttributes *attrs = _finalAnimationLayoutAttributesDict[[PSTCollectionViewItemKey collectionItemKeyForCellWithIndexPath:itemIndexPath]];
if ([_deletedSectionsSet containsIndex:(NSUInteger)[itemIndexPath section]]) { if ([_deletedSectionsSet containsIndex:[itemIndexPath section]]) {
attrs = [attrs copy]; attrs = [attrs copy];
[attrs setAlpha:0]; [attrs setAlpha:0];
} }
@@ -391,7 +386,7 @@
- (PSTCollectionViewLayoutAttributes *)initialLayoutAttributesForInsertedSupplementaryElementOfKind:(NSString *)elementKind atIndexPath:(NSIndexPath *)elementIndexPath { - (PSTCollectionViewLayoutAttributes *)initialLayoutAttributesForInsertedSupplementaryElementOfKind:(NSString *)elementKind atIndexPath:(NSIndexPath *)elementIndexPath {
PSTCollectionViewLayoutAttributes *attrs = _initialAnimationLayoutAttributesDict[[PSTCollectionViewItemKey collectionItemKeyForCellWithIndexPath:elementIndexPath]]; PSTCollectionViewLayoutAttributes *attrs = _initialAnimationLayoutAttributesDict[[PSTCollectionViewItemKey collectionItemKeyForCellWithIndexPath:elementIndexPath]];
if ([_insertedSectionsSet containsIndex:(NSUInteger)[elementIndexPath section]]) { if ([_insertedSectionsSet containsIndex:[elementIndexPath section]]) {
attrs = [attrs copy]; attrs = [attrs copy];
[attrs setAlpha:0]; [attrs setAlpha:0];
} }
@@ -50,12 +50,12 @@
} }
- (CGRect)frameForItemAtIndexPath:(NSIndexPath *)indexPath { - (CGRect)frameForItemAtIndexPath:(NSIndexPath *)indexPath {
PSTGridLayoutSection *section = self.sections[(NSUInteger)indexPath.section]; PSTGridLayoutSection *section = self.sections[indexPath.section];
CGRect itemFrame; CGRect itemFrame;
if (section.fixedItemSize) { if (section.fixedItemSize) {
itemFrame = (CGRect){.size=section.itemSize}; itemFrame = (CGRect){.size=section.itemSize};
}else { }else {
itemFrame = [section.items[(NSUInteger)indexPath.item] itemFrame]; itemFrame = [section.items[indexPath.item] itemFrame];
} }
return itemFrame; return itemFrame;
} }
@@ -73,7 +73,7 @@
// UICollectionView is smart and lays out items like they would have been placed on a full row // 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. // 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. // This allows us to correctly justify-place the items in the grid.
NSInteger usedItemCount = 0; NSUInteger usedItemCount = 0;
NSInteger itemIndex = 0; NSInteger itemIndex = 0;
CGFloat spacing = isHorizontal ? self.section.verticalInterstice : self.section.horizontalInterstice; 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 // the last row should justify as if it is filled with more (invisible) items so that the whole
@@ -82,7 +82,7 @@
CGFloat nextItemSize; CGFloat nextItemSize;
// first we need to find the size (width/height) of the next item to fit // first we need to find the size (width/height) of the next item to fit
if (!self.fixedItemSize) { 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; nextItemSize = isHorizontal ? item.itemFrame.size.height : item.itemFrame.size.width;
}else { }else {
nextItemSize = isHorizontal ? self.section.itemSize.height : self.section.itemSize.width; nextItemSize = isHorizontal ? self.section.itemSize.height : self.section.itemSize.width;
@@ -128,7 +128,7 @@
for (itemIndex = 0; itemIndex < self.itemCount; itemIndex++) { for (itemIndex = 0; itemIndex < self.itemCount; itemIndex++) {
PSTGridLayoutItem *item = nil; PSTGridLayoutItem *item = nil;
if (!self.fixedItemSize) { if (!self.fixedItemSize) {
item = self.items[(NSUInteger)itemIndex]; item = self.items[itemIndex];
itemFrame = [item itemFrame]; itemFrame = [item itemFrame];
} }
// depending on horizontal/vertical for an item size (height/width), // depending on horizontal/vertical for an item size (height/width),
@@ -186,7 +186,7 @@
if (self.fixedItemSize) { if (self.fixedItemSize) {
return _itemCount; return _itemCount;
}else { }else {
return (NSInteger)self.items.count; return self.items.count;
} }
} }
@@ -85,7 +85,7 @@
BOOL finishCycle = itemIndex >= self.itemsCount; BOOL finishCycle = itemIndex >= self.itemsCount;
// TODO: fast path could even remove row creation and just calculate on the fly // TODO: fast path could even remove row creation and just calculate on the fly
PSTGridLayoutItem *item = nil; 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; CGSize itemSize = self.fixedItemSize ? self.itemSize : item.itemFrame.size;
CGFloat itemDimension = self.layoutInfo.horizontal ? itemSize.height : itemSize.width; CGFloat itemDimension = self.layoutInfo.horizontal ? itemSize.height : itemSize.width;
@@ -105,12 +105,12 @@
if (self.layoutInfo.horizontal) { if (self.layoutInfo.horizontal) {
row.rowFrame = CGRectMake(sectionSize.width, self.sectionMargins.top, row.rowSize.width, row.rowSize.height); 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); sectionSize.width += row.rowSize.width + (finishCycle ? 0 : self.horizontalInterstice);
}else { }else {
row.rowFrame = CGRectMake(self.sectionMargins.left, sectionSize.height, row.rowSize.width, row.rowSize.height); row.rowFrame = CGRectMake(self.sectionMargins.left, sectionSize.height, row.rowSize.width, row.rowSize.height);
sectionSize.height += row.rowSize.height + (finishCycle ? 0 : self.verticalInterstice); 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 // add new rows until the section is fully laid out
@@ -204,7 +204,7 @@
} }
- (NSInteger)itemsCount { - (NSInteger)itemsCount {
return self.fixedItemSize ? _itemsCount : (NSInteger)self.items.count; return self.fixedItemSize ? _itemsCount : self.items.count;
} }
@end @end
@@ -93,7 +93,7 @@
</objects> </objects>
<resources> <resources>
<image name="camera-close-select.png" width="31" height="31"/> <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-qq.png" width="24" height="24"/>
<image name="first-login-sina.png" width="22" height="22"/> <image name="first-login-sina.png" width="22" height="22"/>
</resources> </resources>
@@ -58,7 +58,7 @@
[button setBackgroundColor:[UIColor redColor]]; [button setBackgroundColor:[UIColor redColor]];
button.layer.cornerRadius = 5.0; button.layer.cornerRadius = 5.0;
button.layer.masksToBounds = YES; button.layer.masksToBounds = YES;
button.frame = CGRectMake(20, 25, kScreenWidth-40, 50); button.frame = CGRectMake(20, 25, kScreenWidth-40, 40);
[view addSubview:button]; [view addSubview:button];
return view; return view;
} }
@@ -67,7 +67,7 @@
static NSString* cellIdentifier = @"cell"; static NSString* cellIdentifier = @"cell";
UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (!cell) { if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:cellIdentifier];
} }
switch (indexPath.row) { switch (indexPath.row) {
case 0: case 0:
+1 -1
View File
@@ -20,7 +20,7 @@
@property (weak, nonatomic) IBOutlet UIButton *shareBtn; @property (weak, nonatomic) IBOutlet UIButton *shareBtn;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *contentHeight; @property (weak, nonatomic) IBOutlet NSLayoutConstraint *contentHeight;
@property (weak, nonatomic) IBOutlet UIButton *imageBtnClick; - (IBAction)imageBtnClick:(id)sender;
- (IBAction)goodBtnClick:(id)sender; - (IBAction)goodBtnClick:(id)sender;
+46 -2
View File
@@ -8,12 +8,19 @@
#import "NoteTableViewCell.h" #import "NoteTableViewCell.h"
#import "NoteViewModel.h" #import "NoteViewModel.h"
#import "AppDelegate.h"
#import "MWPhotoBrowser.h"
@interface NoteTableViewCell()<MWPhotoBrowserDelegate>
@end
@implementation NoteTableViewCell @implementation NoteTableViewCell
{
Text_Image* _text_image;
}
- (void)awakeFromNib { - (void)awakeFromNib {
// Initialization code // Initialization code
_contentLabel.font = [UIFont appFontOfSize:14.0]; _contentLabel.font = [UIFont appFontOfSize:14.0];
_contentTextView.font = [UIFont appFontOfSize:14.0]; _contentTextView.font = [UIFont appFontOfSize:14.0];
_contentTextView.scrollEnabled = NO;
_timeLabel.font = [UIFont appFontOfSize:14.0]; _timeLabel.font = [UIFont appFontOfSize:14.0];
_avatar.layer.cornerRadius = _avatar.frame.size.width/2; _avatar.layer.cornerRadius = _avatar.frame.size.width/2;
@@ -40,6 +47,7 @@
} }
-(void)setText_Image:(Text_Image *)text_image -(void)setText_Image:(Text_Image *)text_image
{ {
_text_image = text_image;
CGSize imageSize = _contentImgView.frame.size; CGSize imageSize = _contentImgView.frame.size;
UIGraphicsBeginImageContextWithOptions(imageSize, 0, [UIScreen mainScreen].scale); UIGraphicsBeginImageContextWithOptions(imageSize, 0, [UIScreen mainScreen].scale);
[[UIColor colorWithWhite:0.6 alpha:0.5] set]; [[UIColor colorWithWhite:0.6 alpha:0.5] set];
@@ -54,7 +62,7 @@
CGSize size = CGSizeMake(300*[Ash_UIUtil currentScreenSizeRate],MAXFLOAT); CGSize size = CGSizeMake(300*[Ash_UIUtil currentScreenSizeRate],MAXFLOAT);
CGRect labelRect = [text_image.content boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName:font} context:nil]; 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; _contentTextView.text = text_image.content;
[_contentImgView sd_setImageWithURL:text_image.imageUrl placeholderImage:pressedColorImg]; [_contentImgView sd_setImageWithURL:text_image.imageUrl placeholderImage:pressedColorImg];
@@ -75,4 +83,40 @@
} }
return imageHeight+labelRect.size.height+95; 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 @end
+6 -4
View File
@@ -89,7 +89,7 @@
</connections> </connections>
</button> </button>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="p9l-PS-2tC"> <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> </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"> <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"/> <rect key="frame" x="112" y="12" width="200" height="21"/>
@@ -111,10 +111,13 @@
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/> <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
</textView> </textView>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="kWq-q0-MPl"> <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"> <state key="normal">
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/> <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state> </state>
<connections>
<action selector="imageBtnClick:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="Fbt-xq-94q"/>
</connections>
</button> </button>
</subviews> </subviews>
<constraints> <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="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 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 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="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="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"/> <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="contentImgView" destination="p9l-PS-2tC" id="gjB-iJ-KAX"/>
<outlet property="contentTextView" destination="2Rh-LI-LRT" id="w5j-ni-kam"/> <outlet property="contentTextView" destination="2Rh-LI-LRT" id="w5j-ni-kam"/>
<outlet property="goodBtn" destination="xeW-Yw-x4V" id="0LE-Gu-6C1"/> <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="shareBtn" destination="DAR-mT-RbS" id="fGW-sh-aV3"/>
<outlet property="timeLabel" destination="kO5-Uc-AhU" id="jky-Wu-oYB"/> <outlet property="timeLabel" destination="kO5-Uc-AhU" id="jky-Wu-oYB"/>
<outlet property="userName" destination="Zq3-YP-dwB" id="Ggo-yh-zdb"/> <outlet property="userName" destination="Zq3-YP-dwB" id="Ggo-yh-zdb"/>
+1 -1
View File
@@ -11,4 +11,4 @@ pod 'Godzippa'
pod 'EGOCache' pod 'EGOCache'
pod 'SecureUDID' pod 'SecureUDID'
pod 'MJRefresh' pod 'MJRefresh'
pod 'MWPhotoBrowser' #pod 'MWPhotoBrowser'
-11
View File
@@ -20,7 +20,6 @@ PODS:
- AFNetworking/UIKit (2.5.2): - AFNetworking/UIKit (2.5.2):
- AFNetworking/NSURLConnection - AFNetworking/NSURLConnection
- AFNetworking/NSURLSession - AFNetworking/NSURLSession
- DACircularProgress (2.2.0)
- DTCoreText (1.6.15): - DTCoreText (1.6.15):
- DTFoundation/Core (~> 1.7.5) - DTFoundation/Core (~> 1.7.5)
- DTFoundation/DTAnimatedGIF (~> 1.7.5) - DTFoundation/DTAnimatedGIF (~> 1.7.5)
@@ -39,12 +38,6 @@ PODS:
- Mantle/extobjc (1.5.4) - Mantle/extobjc (1.5.4)
- MBProgressHUD (0.9.1) - MBProgressHUD (0.9.1)
- MJRefresh (1.4.3) - 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) - Reachability (3.2)
- SBJson (4.0.1) - SBJson (4.0.1)
- SDWebImage (3.7.2): - SDWebImage (3.7.2):
@@ -61,7 +54,6 @@ DEPENDENCIES:
- Mantle - Mantle
- MBProgressHUD - MBProgressHUD
- MJRefresh - MJRefresh
- MWPhotoBrowser
- Reachability - Reachability
- SBJson - SBJson
- SDWebImage - SDWebImage
@@ -70,7 +62,6 @@ DEPENDENCIES:
SPEC CHECKSUMS: SPEC CHECKSUMS:
AFNetworking: fefbce9660acb17f48ae0011292d4da0f457bf36 AFNetworking: fefbce9660acb17f48ae0011292d4da0f457bf36
DACircularProgress: 0f92b77239d5f3c612fc66185e2998391ac8e054
DTCoreText: 13ce06e63204a3b47c9db974e3d9be982bb0b1ed DTCoreText: 13ce06e63204a3b47c9db974e3d9be982bb0b1ed
DTFoundation: 1d28080c20c3da041706545363f8238ab53a6204 DTFoundation: 1d28080c20c3da041706545363f8238ab53a6204
EGOCache: e7bdb2bf15a2ad23bf6c67c664c9fc3694652482 EGOCache: e7bdb2bf15a2ad23bf6c67c664c9fc3694652482
@@ -78,8 +69,6 @@ SPEC CHECKSUMS:
Mantle: 60acd0cd363e27d945bda0a6b8e90577112d28f3 Mantle: 60acd0cd363e27d945bda0a6b8e90577112d28f3
MBProgressHUD: c47f2c166c126cf2ce36498d80f33e754d4e93ad MBProgressHUD: c47f2c166c126cf2ce36498d80f33e754d4e93ad
MJRefresh: 6eb09aefa9622f0908fdf42d63c2070478c04c42 MJRefresh: 6eb09aefa9622f0908fdf42d63c2070478c04c42
MWPhotoBrowser: 2531e682860d62b8a7ba8659de02eb9040e431e5
PSTCollectionView: 6749df92885353521f55279a7ce2b293762e2be4
Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96 Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96
SBJson: 68f16f446bd6047dc3dd1ec4919a468c2cd7fedd SBJson: 68f16f446bd6047dc3dd1ec4919a468c2cd7fedd
SDWebImage: 71b7cdc1d1721d6a82ed62889030225f2c249e29 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