new
@@ -39,6 +39,33 @@
|
||||
A9617A551ACC27860024AE4A /* SetUpViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = A9617A531ACC27860024AE4A /* SetUpViewController.xib */; };
|
||||
A9617A581ACC2EBC0024AE4A /* mine-setting-icon-click@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A9617A561ACC2EBC0024AE4A /* mine-setting-icon-click@2x.png */; };
|
||||
A9617A591ACC2EBC0024AE4A /* mine-setting-icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A9617A571ACC2EBC0024AE4A /* mine-setting-icon@2x.png */; };
|
||||
A96862421ACCF0B400DDAA6B /* LICENCE.txt in Resources */ = {isa = PBXBuildFile; fileRef = A968622A1ACCF0B400DDAA6B /* LICENCE.txt */; };
|
||||
A96862431ACCF0B400DDAA6B /* MWCaptionView.m in Sources */ = {isa = PBXBuildFile; fileRef = A968622E1ACCF0B400DDAA6B /* MWCaptionView.m */; };
|
||||
A96862441ACCF0B400DDAA6B /* MWGridCell.m in Sources */ = {isa = PBXBuildFile; fileRef = A96862311ACCF0B400DDAA6B /* MWGridCell.m */; };
|
||||
A96862451ACCF0B400DDAA6B /* MWGridViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A96862331ACCF0B400DDAA6B /* MWGridViewController.m */; };
|
||||
A96862461ACCF0B400DDAA6B /* MWPhoto.m in Sources */ = {isa = PBXBuildFile; fileRef = A96862351ACCF0B400DDAA6B /* MWPhoto.m */; };
|
||||
A96862471ACCF0B400DDAA6B /* MWPhotoBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = A96862371ACCF0B400DDAA6B /* MWPhotoBrowser.m */; };
|
||||
A96862481ACCF0B400DDAA6B /* MWTapDetectingImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = A968623B1ACCF0B400DDAA6B /* MWTapDetectingImageView.m */; };
|
||||
A96862491ACCF0B400DDAA6B /* MWTapDetectingView.m in Sources */ = {isa = PBXBuildFile; fileRef = A968623D1ACCF0B400DDAA6B /* MWTapDetectingView.m */; };
|
||||
A968624A1ACCF0B400DDAA6B /* MWZoomingScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = A968623F1ACCF0B400DDAA6B /* MWZoomingScrollView.m */; };
|
||||
A968624B1ACCF0B400DDAA6B /* MWPhotoBrowser.bundle in Resources */ = {isa = PBXBuildFile; fileRef = A96862401ACCF0B400DDAA6B /* MWPhotoBrowser.bundle */; };
|
||||
A968624C1ACCF0B400DDAA6B /* README.md in Sources */ = {isa = PBXBuildFile; fileRef = A96862411ACCF0B400DDAA6B /* README.md */; };
|
||||
A96862501ACCF12300DDAA6B /* DACircularProgressView.m in Sources */ = {isa = PBXBuildFile; fileRef = A968624F1ACCF12300DDAA6B /* DACircularProgressView.m */; };
|
||||
A968626E1ACCF13300DDAA6B /* NSIndexPath+PSTCollectionViewAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = A96862531ACCF13300DDAA6B /* NSIndexPath+PSTCollectionViewAdditions.m */; };
|
||||
A968626F1ACCF13300DDAA6B /* PSTCollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = A96862551ACCF13300DDAA6B /* PSTCollectionView.m */; };
|
||||
A96862701ACCF13300DDAA6B /* PSTCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = A96862571ACCF13300DDAA6B /* PSTCollectionViewCell.m */; };
|
||||
A96862711ACCF13300DDAA6B /* PSTCollectionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A968625A1ACCF13300DDAA6B /* PSTCollectionViewController.m */; };
|
||||
A96862721ACCF13300DDAA6B /* PSTCollectionViewData.m in Sources */ = {isa = PBXBuildFile; fileRef = A968625C1ACCF13300DDAA6B /* PSTCollectionViewData.m */; };
|
||||
A96862731ACCF13300DDAA6B /* PSTCollectionViewFlowLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = A968625E1ACCF13300DDAA6B /* PSTCollectionViewFlowLayout.m */; };
|
||||
A96862741ACCF13300DDAA6B /* PSTCollectionViewItemKey.m in Sources */ = {isa = PBXBuildFile; fileRef = A96862601ACCF13300DDAA6B /* PSTCollectionViewItemKey.m */; };
|
||||
A96862751ACCF13300DDAA6B /* PSTCollectionViewLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = A96862631ACCF13300DDAA6B /* PSTCollectionViewLayout.m */; };
|
||||
A96862761ACCF13300DDAA6B /* PSTCollectionViewUpdateItem.m in Sources */ = {isa = PBXBuildFile; fileRef = A96862651ACCF13300DDAA6B /* PSTCollectionViewUpdateItem.m */; };
|
||||
A96862771ACCF13300DDAA6B /* PSTGridLayoutInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = A96862671ACCF13300DDAA6B /* PSTGridLayoutInfo.m */; };
|
||||
A96862781ACCF13300DDAA6B /* PSTGridLayoutItem.m in Sources */ = {isa = PBXBuildFile; fileRef = A96862691ACCF13300DDAA6B /* PSTGridLayoutItem.m */; };
|
||||
A96862791ACCF13300DDAA6B /* PSTGridLayoutRow.m in Sources */ = {isa = PBXBuildFile; fileRef = A968626B1ACCF13300DDAA6B /* PSTGridLayoutRow.m */; };
|
||||
A968627A1ACCF13300DDAA6B /* PSTGridLayoutSection.m in Sources */ = {isa = PBXBuildFile; fileRef = A968626D1ACCF13300DDAA6B /* PSTGridLayoutSection.m */; };
|
||||
A968627C1ACCF3D200DDAA6B /* cellmorebtnnormalN@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A968627B1ACCF3D200DDAA6B /* cellmorebtnnormalN@2x.png */; };
|
||||
A968627E1ACCF46E00DDAA6B /* cellmorebtnclickN@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A968627D1ACCF46E00DDAA6B /* cellmorebtnclickN@2x.png */; };
|
||||
A97559A01ACB88FE004ADA42 /* AWordDefault.m in Sources */ = {isa = PBXBuildFile; fileRef = A975599F1ACB88FE004ADA42 /* AWordDefault.m */; };
|
||||
A97559A31ACB8CE0004ADA42 /* AWordUser.m in Sources */ = {isa = PBXBuildFile; fileRef = A97559A21ACB8CE0004ADA42 /* AWordUser.m */; };
|
||||
A97559A51ACB9748004ADA42 /* setup-head-default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A97559A41ACB9748004ADA42 /* setup-head-default@2x.png */; };
|
||||
@@ -161,6 +188,60 @@
|
||||
A9617A531ACC27860024AE4A /* SetUpViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SetUpViewController.xib; sourceTree = "<group>"; };
|
||||
A9617A561ACC2EBC0024AE4A /* mine-setting-icon-click@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "mine-setting-icon-click@2x.png"; sourceTree = "<group>"; };
|
||||
A9617A571ACC2EBC0024AE4A /* mine-setting-icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "mine-setting-icon@2x.png"; sourceTree = "<group>"; };
|
||||
A968622A1ACCF0B400DDAA6B /* LICENCE.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENCE.txt; sourceTree = "<group>"; };
|
||||
A968622D1ACCF0B400DDAA6B /* MWCaptionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWCaptionView.h; sourceTree = "<group>"; };
|
||||
A968622E1ACCF0B400DDAA6B /* MWCaptionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWCaptionView.m; sourceTree = "<group>"; };
|
||||
A968622F1ACCF0B400DDAA6B /* MWCommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWCommon.h; sourceTree = "<group>"; };
|
||||
A96862301ACCF0B400DDAA6B /* MWGridCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWGridCell.h; sourceTree = "<group>"; };
|
||||
A96862311ACCF0B400DDAA6B /* MWGridCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWGridCell.m; sourceTree = "<group>"; };
|
||||
A96862321ACCF0B400DDAA6B /* MWGridViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWGridViewController.h; sourceTree = "<group>"; };
|
||||
A96862331ACCF0B400DDAA6B /* MWGridViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWGridViewController.m; sourceTree = "<group>"; };
|
||||
A96862341ACCF0B400DDAA6B /* MWPhoto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWPhoto.h; sourceTree = "<group>"; };
|
||||
A96862351ACCF0B400DDAA6B /* MWPhoto.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWPhoto.m; sourceTree = "<group>"; };
|
||||
A96862361ACCF0B400DDAA6B /* MWPhotoBrowser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWPhotoBrowser.h; sourceTree = "<group>"; };
|
||||
A96862371ACCF0B400DDAA6B /* MWPhotoBrowser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWPhotoBrowser.m; sourceTree = "<group>"; };
|
||||
A96862381ACCF0B400DDAA6B /* MWPhotoBrowserPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWPhotoBrowserPrivate.h; sourceTree = "<group>"; };
|
||||
A96862391ACCF0B400DDAA6B /* MWPhotoProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWPhotoProtocol.h; sourceTree = "<group>"; };
|
||||
A968623A1ACCF0B400DDAA6B /* MWTapDetectingImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWTapDetectingImageView.h; sourceTree = "<group>"; };
|
||||
A968623B1ACCF0B400DDAA6B /* MWTapDetectingImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWTapDetectingImageView.m; sourceTree = "<group>"; };
|
||||
A968623C1ACCF0B400DDAA6B /* MWTapDetectingView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWTapDetectingView.h; sourceTree = "<group>"; };
|
||||
A968623D1ACCF0B400DDAA6B /* MWTapDetectingView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWTapDetectingView.m; sourceTree = "<group>"; };
|
||||
A968623E1ACCF0B400DDAA6B /* MWZoomingScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWZoomingScrollView.h; sourceTree = "<group>"; };
|
||||
A968623F1ACCF0B400DDAA6B /* MWZoomingScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWZoomingScrollView.m; sourceTree = "<group>"; };
|
||||
A96862401ACCF0B400DDAA6B /* MWPhotoBrowser.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = MWPhotoBrowser.bundle; sourceTree = "<group>"; };
|
||||
A96862411ACCF0B400DDAA6B /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
|
||||
A968624E1ACCF12300DDAA6B /* DACircularProgressView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DACircularProgressView.h; sourceTree = "<group>"; };
|
||||
A968624F1ACCF12300DDAA6B /* DACircularProgressView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DACircularProgressView.m; sourceTree = "<group>"; };
|
||||
A96862521ACCF13300DDAA6B /* NSIndexPath+PSTCollectionViewAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSIndexPath+PSTCollectionViewAdditions.h"; sourceTree = "<group>"; };
|
||||
A96862531ACCF13300DDAA6B /* NSIndexPath+PSTCollectionViewAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSIndexPath+PSTCollectionViewAdditions.m"; sourceTree = "<group>"; };
|
||||
A96862541ACCF13300DDAA6B /* PSTCollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSTCollectionView.h; sourceTree = "<group>"; };
|
||||
A96862551ACCF13300DDAA6B /* PSTCollectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSTCollectionView.m; sourceTree = "<group>"; };
|
||||
A96862561ACCF13300DDAA6B /* PSTCollectionViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSTCollectionViewCell.h; sourceTree = "<group>"; };
|
||||
A96862571ACCF13300DDAA6B /* PSTCollectionViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSTCollectionViewCell.m; sourceTree = "<group>"; };
|
||||
A96862581ACCF13300DDAA6B /* PSTCollectionViewCommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSTCollectionViewCommon.h; sourceTree = "<group>"; };
|
||||
A96862591ACCF13300DDAA6B /* PSTCollectionViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSTCollectionViewController.h; sourceTree = "<group>"; };
|
||||
A968625A1ACCF13300DDAA6B /* PSTCollectionViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSTCollectionViewController.m; sourceTree = "<group>"; };
|
||||
A968625B1ACCF13300DDAA6B /* PSTCollectionViewData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSTCollectionViewData.h; sourceTree = "<group>"; };
|
||||
A968625C1ACCF13300DDAA6B /* PSTCollectionViewData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSTCollectionViewData.m; sourceTree = "<group>"; };
|
||||
A968625D1ACCF13300DDAA6B /* PSTCollectionViewFlowLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSTCollectionViewFlowLayout.h; sourceTree = "<group>"; };
|
||||
A968625E1ACCF13300DDAA6B /* PSTCollectionViewFlowLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSTCollectionViewFlowLayout.m; sourceTree = "<group>"; };
|
||||
A968625F1ACCF13300DDAA6B /* PSTCollectionViewItemKey.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSTCollectionViewItemKey.h; sourceTree = "<group>"; };
|
||||
A96862601ACCF13300DDAA6B /* PSTCollectionViewItemKey.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSTCollectionViewItemKey.m; sourceTree = "<group>"; };
|
||||
A96862611ACCF13300DDAA6B /* PSTCollectionViewLayout+Internals.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "PSTCollectionViewLayout+Internals.h"; sourceTree = "<group>"; };
|
||||
A96862621ACCF13300DDAA6B /* PSTCollectionViewLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSTCollectionViewLayout.h; sourceTree = "<group>"; };
|
||||
A96862631ACCF13300DDAA6B /* PSTCollectionViewLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSTCollectionViewLayout.m; sourceTree = "<group>"; };
|
||||
A96862641ACCF13300DDAA6B /* PSTCollectionViewUpdateItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSTCollectionViewUpdateItem.h; sourceTree = "<group>"; };
|
||||
A96862651ACCF13300DDAA6B /* PSTCollectionViewUpdateItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSTCollectionViewUpdateItem.m; sourceTree = "<group>"; };
|
||||
A96862661ACCF13300DDAA6B /* PSTGridLayoutInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSTGridLayoutInfo.h; sourceTree = "<group>"; };
|
||||
A96862671ACCF13300DDAA6B /* PSTGridLayoutInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSTGridLayoutInfo.m; sourceTree = "<group>"; };
|
||||
A96862681ACCF13300DDAA6B /* PSTGridLayoutItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSTGridLayoutItem.h; sourceTree = "<group>"; };
|
||||
A96862691ACCF13300DDAA6B /* PSTGridLayoutItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSTGridLayoutItem.m; sourceTree = "<group>"; };
|
||||
A968626A1ACCF13300DDAA6B /* PSTGridLayoutRow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSTGridLayoutRow.h; sourceTree = "<group>"; };
|
||||
A968626B1ACCF13300DDAA6B /* PSTGridLayoutRow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSTGridLayoutRow.m; sourceTree = "<group>"; };
|
||||
A968626C1ACCF13300DDAA6B /* PSTGridLayoutSection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSTGridLayoutSection.h; sourceTree = "<group>"; };
|
||||
A968626D1ACCF13300DDAA6B /* PSTGridLayoutSection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSTGridLayoutSection.m; sourceTree = "<group>"; };
|
||||
A968627B1ACCF3D200DDAA6B /* cellmorebtnnormalN@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "cellmorebtnnormalN@2x.png"; sourceTree = "<group>"; };
|
||||
A968627D1ACCF46E00DDAA6B /* cellmorebtnclickN@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "cellmorebtnclickN@2x.png"; sourceTree = "<group>"; };
|
||||
A975599E1ACB88FE004ADA42 /* AWordDefault.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWordDefault.h; sourceTree = "<group>"; };
|
||||
A975599F1ACB88FE004ADA42 /* AWordDefault.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWordDefault.m; sourceTree = "<group>"; };
|
||||
A97559A11ACB8CE0004ADA42 /* AWordUser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWordUser.h; sourceTree = "<group>"; };
|
||||
@@ -389,6 +470,95 @@
|
||||
path = My;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
A96862291ACCF0B400DDAA6B /* MWPhotoBrowser */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
A968622A1ACCF0B400DDAA6B /* LICENCE.txt */,
|
||||
A968622B1ACCF0B400DDAA6B /* MWPhotoBrowser */,
|
||||
A96862411ACCF0B400DDAA6B /* README.md */,
|
||||
);
|
||||
path = MWPhotoBrowser;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
A968622B1ACCF0B400DDAA6B /* MWPhotoBrowser */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
A968622C1ACCF0B400DDAA6B /* Classes */,
|
||||
A96862401ACCF0B400DDAA6B /* MWPhotoBrowser.bundle */,
|
||||
);
|
||||
path = MWPhotoBrowser;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
A968622C1ACCF0B400DDAA6B /* Classes */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
A968622D1ACCF0B400DDAA6B /* MWCaptionView.h */,
|
||||
A968622E1ACCF0B400DDAA6B /* MWCaptionView.m */,
|
||||
A968622F1ACCF0B400DDAA6B /* MWCommon.h */,
|
||||
A96862301ACCF0B400DDAA6B /* MWGridCell.h */,
|
||||
A96862311ACCF0B400DDAA6B /* MWGridCell.m */,
|
||||
A96862321ACCF0B400DDAA6B /* MWGridViewController.h */,
|
||||
A96862331ACCF0B400DDAA6B /* MWGridViewController.m */,
|
||||
A96862341ACCF0B400DDAA6B /* MWPhoto.h */,
|
||||
A96862351ACCF0B400DDAA6B /* MWPhoto.m */,
|
||||
A96862361ACCF0B400DDAA6B /* MWPhotoBrowser.h */,
|
||||
A96862371ACCF0B400DDAA6B /* MWPhotoBrowser.m */,
|
||||
A96862381ACCF0B400DDAA6B /* MWPhotoBrowserPrivate.h */,
|
||||
A96862391ACCF0B400DDAA6B /* MWPhotoProtocol.h */,
|
||||
A968623A1ACCF0B400DDAA6B /* MWTapDetectingImageView.h */,
|
||||
A968623B1ACCF0B400DDAA6B /* MWTapDetectingImageView.m */,
|
||||
A968623C1ACCF0B400DDAA6B /* MWTapDetectingView.h */,
|
||||
A968623D1ACCF0B400DDAA6B /* MWTapDetectingView.m */,
|
||||
A968623E1ACCF0B400DDAA6B /* MWZoomingScrollView.h */,
|
||||
A968623F1ACCF0B400DDAA6B /* MWZoomingScrollView.m */,
|
||||
);
|
||||
path = Classes;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
A968624D1ACCF12300DDAA6B /* DACircularProgress */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
A968624E1ACCF12300DDAA6B /* DACircularProgressView.h */,
|
||||
A968624F1ACCF12300DDAA6B /* DACircularProgressView.m */,
|
||||
);
|
||||
path = DACircularProgress;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
A96862511ACCF13300DDAA6B /* PSTCollectionView */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
A96862521ACCF13300DDAA6B /* NSIndexPath+PSTCollectionViewAdditions.h */,
|
||||
A96862531ACCF13300DDAA6B /* NSIndexPath+PSTCollectionViewAdditions.m */,
|
||||
A96862541ACCF13300DDAA6B /* PSTCollectionView.h */,
|
||||
A96862551ACCF13300DDAA6B /* PSTCollectionView.m */,
|
||||
A96862561ACCF13300DDAA6B /* PSTCollectionViewCell.h */,
|
||||
A96862571ACCF13300DDAA6B /* PSTCollectionViewCell.m */,
|
||||
A96862581ACCF13300DDAA6B /* PSTCollectionViewCommon.h */,
|
||||
A96862591ACCF13300DDAA6B /* PSTCollectionViewController.h */,
|
||||
A968625A1ACCF13300DDAA6B /* PSTCollectionViewController.m */,
|
||||
A968625B1ACCF13300DDAA6B /* PSTCollectionViewData.h */,
|
||||
A968625C1ACCF13300DDAA6B /* PSTCollectionViewData.m */,
|
||||
A968625D1ACCF13300DDAA6B /* PSTCollectionViewFlowLayout.h */,
|
||||
A968625E1ACCF13300DDAA6B /* PSTCollectionViewFlowLayout.m */,
|
||||
A968625F1ACCF13300DDAA6B /* PSTCollectionViewItemKey.h */,
|
||||
A96862601ACCF13300DDAA6B /* PSTCollectionViewItemKey.m */,
|
||||
A96862611ACCF13300DDAA6B /* PSTCollectionViewLayout+Internals.h */,
|
||||
A96862621ACCF13300DDAA6B /* PSTCollectionViewLayout.h */,
|
||||
A96862631ACCF13300DDAA6B /* PSTCollectionViewLayout.m */,
|
||||
A96862641ACCF13300DDAA6B /* PSTCollectionViewUpdateItem.h */,
|
||||
A96862651ACCF13300DDAA6B /* PSTCollectionViewUpdateItem.m */,
|
||||
A96862661ACCF13300DDAA6B /* PSTGridLayoutInfo.h */,
|
||||
A96862671ACCF13300DDAA6B /* PSTGridLayoutInfo.m */,
|
||||
A96862681ACCF13300DDAA6B /* PSTGridLayoutItem.h */,
|
||||
A96862691ACCF13300DDAA6B /* PSTGridLayoutItem.m */,
|
||||
A968626A1ACCF13300DDAA6B /* PSTGridLayoutRow.h */,
|
||||
A968626B1ACCF13300DDAA6B /* PSTGridLayoutRow.m */,
|
||||
A968626C1ACCF13300DDAA6B /* PSTGridLayoutSection.h */,
|
||||
A968626D1ACCF13300DDAA6B /* PSTGridLayoutSection.m */,
|
||||
);
|
||||
path = PSTCollectionView;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
A97559AE1ACBC615004ADA42 /* Note */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -512,6 +682,9 @@
|
||||
A97C54D91AC9014D0038818A /* Vender */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
A96862511ACCF13300DDAA6B /* PSTCollectionView */,
|
||||
A968624D1ACCF12300DDAA6B /* DACircularProgress */,
|
||||
A96862291ACCF0B400DDAA6B /* MWPhotoBrowser */,
|
||||
A97559B41ACBD99E004ADA42 /* UIPlaceHolderTextView */,
|
||||
A98F98461ACA29B5007C4594 /* UMSocial_Sdk_Extra_Frameworks */,
|
||||
A9B4E39B1AC9908E00A1DBDF /* UMAnalytics_Sdk_3.4.6 */,
|
||||
@@ -544,6 +717,8 @@
|
||||
A97C54E21AC91FD70038818A /* Resource */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
A968627D1ACCF46E00DDAA6B /* cellmorebtnclickN@2x.png */,
|
||||
A968627B1ACCF3D200DDAA6B /* cellmorebtnnormalN@2x.png */,
|
||||
A9617A561ACC2EBC0024AE4A /* mine-setting-icon-click@2x.png */,
|
||||
A9617A571ACC2EBC0024AE4A /* mine-setting-icon@2x.png */,
|
||||
A97559C61ACBF0BC004ADA42 /* btn_bad_clicked@2x.png */,
|
||||
@@ -803,12 +978,14 @@
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
A968624B1ACCF0B400DDAA6B /* MWPhotoBrowser.bundle in Resources */,
|
||||
A93442001ACA919F00A6B233 /* tabbarVoiceClick@2x.png in Resources */,
|
||||
A97C55001AC933AD0038818A /* UMSCommentDetailController.xib in Resources */,
|
||||
A93441F21ACA916D00A6B233 /* tabbarQuotationClick@2x.png in Resources */,
|
||||
A93442031ACA981D00A6B233 /* Default-568h@2x.png in Resources */,
|
||||
A9FAD4321AC923FC007ADC10 /* MyViewController.xib in Resources */,
|
||||
A93441FF1ACA919F00A6B233 /* tabbarVoice@2x.png in Resources */,
|
||||
A968627E1ACCF46E00DDAA6B /* cellmorebtnclickN@2x.png in Resources */,
|
||||
A93441FA1ACA919500A6B233 /* tabbarQuotation-dark@2x.png in Resources */,
|
||||
A97559D01ACBF0BC004ADA42 /* btn_share_clicked@2x.png in Resources */,
|
||||
A955109B1AC39E6A0006D16F /* Main.storyboard in Resources */,
|
||||
@@ -819,6 +996,7 @@
|
||||
A97559CF1ACBF0BC004ADA42 /* btn_good@2x.png in Resources */,
|
||||
A97559CC1ACBF0BC004ADA42 /* btn_bad_clicked@2x.png in Resources */,
|
||||
A97DBE461ACAE7B500705682 /* iconWeixin@2x.png in Resources */,
|
||||
A96862421ACCF0B400DDAA6B /* LICENCE.txt in Resources */,
|
||||
A97C55071AC933AD0038818A /* UMSShareListController.xib in Resources */,
|
||||
A93441EE1ACA8C8F00A6B233 /* defaultUserIcon@2x.png in Resources */,
|
||||
A97559AC1ACB9DF0004ADA42 /* navigationButtonRefresh@2x.png in Resources */,
|
||||
@@ -827,6 +1005,7 @@
|
||||
A97C55041AC933AD0038818A /* UMShareEditViewControlleriPad.xib in Resources */,
|
||||
A98F98541ACA29B5007C4594 /* TencentOpenApi_IOS_Bundle.bundle in Resources */,
|
||||
A9617A591ACC2EBC0024AE4A /* mine-setting-icon@2x.png in Resources */,
|
||||
A968627C1ACCF3D200DDAA6B /* cellmorebtnnormalN@2x.png in Resources */,
|
||||
A95510A01AC39E6A0006D16F /* LaunchScreen.xib in Resources */,
|
||||
A93442041ACA981D00A6B233 /* Default@2x.png in Resources */,
|
||||
A97DBE401ACAE29E00705682 /* Icon@2x.png in Resources */,
|
||||
@@ -917,30 +1096,53 @@
|
||||
A97559A01ACB88FE004ADA42 /* AWordDefault.m in Sources */,
|
||||
A97C54D31AC8F10F0038818A /* XiaoYuAPIClient.m in Sources */,
|
||||
A97559C41ACBEE99004ADA42 /* NoteTableViewCell.m in Sources */,
|
||||
A96862481ACCF0B400DDAA6B /* MWTapDetectingImageView.m in Sources */,
|
||||
A9FAD4311AC923FC007ADC10 /* MyViewController.m in Sources */,
|
||||
A97559BF1ACBE6C6004ADA42 /* NotePublishViewModel.m in Sources */,
|
||||
A96862781ACCF13300DDAA6B /* PSTGridLayoutItem.m in Sources */,
|
||||
A97559B21ACBC683004ADA42 /* NotePublishViewController.m in Sources */,
|
||||
A97C54DD1AC901980038818A /* MBProgressHUD+Util.m in Sources */,
|
||||
A96862721ACCF13300DDAA6B /* PSTCollectionViewData.m in Sources */,
|
||||
A97DBE331ACAE10800705682 /* LoginViewController.m in Sources */,
|
||||
A97559A31ACB8CE0004ADA42 /* AWordUser.m in Sources */,
|
||||
A95510981AC39E6A0006D16F /* ViewController.m in Sources */,
|
||||
A98F986B1ACA2FA9007C4594 /* BaseRefreshViewController.m in Sources */,
|
||||
A96862471ACCF0B400DDAA6B /* MWPhotoBrowser.m in Sources */,
|
||||
A9617A541ACC27860024AE4A /* SetUpViewController.m in Sources */,
|
||||
A97C54D21AC8F10F0038818A /* AFgzipResponseSerializer.m in Sources */,
|
||||
A9FAD4221AC922A5007ADC10 /* MainViewController.m in Sources */,
|
||||
A96862761ACCF13300DDAA6B /* PSTCollectionViewUpdateItem.m in Sources */,
|
||||
A968626E1ACCF13300DDAA6B /* NSIndexPath+PSTCollectionViewAdditions.m in Sources */,
|
||||
A9FAD42C1AC923E2007ADC10 /* MessageViewController.m in Sources */,
|
||||
A968627A1ACCF13300DDAA6B /* PSTGridLayoutSection.m in Sources */,
|
||||
A96862771ACCF13300DDAA6B /* PSTGridLayoutInfo.m in Sources */,
|
||||
A96862751ACCF13300DDAA6B /* PSTCollectionViewLayout.m in Sources */,
|
||||
A96862791ACCF13300DDAA6B /* PSTGridLayoutRow.m in Sources */,
|
||||
A97C54CD1AC8F10F0038818A /* BaseViewModel.m in Sources */,
|
||||
A9617A4F1ACC0D0F0024AE4A /* NoteViewModel.m in Sources */,
|
||||
A96862461ACCF0B400DDAA6B /* MWPhoto.m in Sources */,
|
||||
A968624A1ACCF0B400DDAA6B /* MWZoomingScrollView.m in Sources */,
|
||||
A97C54CF1AC8F10F0038818A /* NSString+HXAddtions.m in Sources */,
|
||||
A96862501ACCF12300DDAA6B /* DACircularProgressView.m in Sources */,
|
||||
A95510951AC39E6A0006D16F /* AppDelegate.m in Sources */,
|
||||
A97C54D11AC8F10F0038818A /* RequireEngine.m in Sources */,
|
||||
A96862731ACCF13300DDAA6B /* PSTCollectionViewFlowLayout.m in Sources */,
|
||||
A96862441ACCF0B400DDAA6B /* MWGridCell.m in Sources */,
|
||||
A96862741ACCF13300DDAA6B /* PSTCollectionViewItemKey.m in Sources */,
|
||||
A96862451ACCF0B400DDAA6B /* MWGridViewController.m in Sources */,
|
||||
A97C54D01AC8F10F0038818A /* PropertyEntity.m in Sources */,
|
||||
A93441DE1ACA311700A6B233 /* Ash_UIUtil.m in Sources */,
|
||||
A968624C1ACCF0B400DDAA6B /* README.md in Sources */,
|
||||
A96862701ACCF13300DDAA6B /* PSTCollectionViewCell.m in Sources */,
|
||||
A97559B71ACBD99E004ADA42 /* UIPlaceHolderTextView.m in Sources */,
|
||||
A97C54D41AC8F10F0038818A /* XMFishBaseCode.m in Sources */,
|
||||
A97C54E11AC91DA10038818A /* CommonUtil.m in Sources */,
|
||||
A96862491ACCF0B400DDAA6B /* MWTapDetectingView.m in Sources */,
|
||||
A968626F1ACCF13300DDAA6B /* PSTCollectionView.m in Sources */,
|
||||
A9FAD4351AC925AC007ADC10 /* LoginViewModel.m in Sources */,
|
||||
A95510921AC39E6A0006D16F /* main.m in Sources */,
|
||||
A96862711ACCF13300DDAA6B /* PSTCollectionViewController.m in Sources */,
|
||||
A96862431ACCF0B400DDAA6B /* MWCaptionView.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
||||
@@ -10,14 +10,14 @@
|
||||
<string>Ash_AWord</string>
|
||||
<key>IDESourceControlProjectOriginsDictionary</key>
|
||||
<dict>
|
||||
<key>C2124BD0C46D10FF81834A1B3449A80D6B860D76</key>
|
||||
<key>B459B20E6BFCBAF9E5514A0B814271AD85A6C13B</key>
|
||||
<string>https://github.com/wu736139669/Ash_First.git</string>
|
||||
</dict>
|
||||
<key>IDESourceControlProjectPath</key>
|
||||
<string>Ash_AWord.xcworkspace</string>
|
||||
<key>IDESourceControlProjectRelativeInstallPathDictionary</key>
|
||||
<dict>
|
||||
<key>C2124BD0C46D10FF81834A1B3449A80D6B860D76</key>
|
||||
<key>B459B20E6BFCBAF9E5514A0B814271AD85A6C13B</key>
|
||||
<string>..</string>
|
||||
</dict>
|
||||
<key>IDESourceControlProjectURL</key>
|
||||
@@ -25,14 +25,14 @@
|
||||
<key>IDESourceControlProjectVersion</key>
|
||||
<integer>111</integer>
|
||||
<key>IDESourceControlProjectWCCIdentifier</key>
|
||||
<string>C2124BD0C46D10FF81834A1B3449A80D6B860D76</string>
|
||||
<string>B459B20E6BFCBAF9E5514A0B814271AD85A6C13B</string>
|
||||
<key>IDESourceControlProjectWCConfigurations</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>IDESourceControlRepositoryExtensionIdentifierKey</key>
|
||||
<string>public.vcs.git</string>
|
||||
<key>IDESourceControlWCCIdentifierKey</key>
|
||||
<string>C2124BD0C46D10FF81834A1B3449A80D6B860D76</string>
|
||||
<string>B459B20E6BFCBAF9E5514A0B814271AD85A6C13B</string>
|
||||
<key>IDESourceControlWCCName</key>
|
||||
<string>Ash_AWord</string>
|
||||
</dict>
|
||||
|
||||
@@ -307,5 +307,37 @@
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Ash_AWord/Vender/MWPhotoBrowser/MWPhotoBrowser/Classes/MWPhotoBrowser.m"
|
||||
timestampString = "449640296.454354"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "1455"
|
||||
endingLineNumber = "1455"
|
||||
landmarkName = "-actionButtonPressed:"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Ash_AWord/ViewControllers/My/SetUpViewController.m"
|
||||
timestampString = "449641045.879342"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "80"
|
||||
endingLineNumber = "80"
|
||||
landmarkName = "-tableView:cellForRowAtIndexPath:"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
</Breakpoints>
|
||||
</Bucket>
|
||||
|
||||
@@ -4,29 +4,27 @@
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>OneWord</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIconFiles</key>
|
||||
<array>
|
||||
<string>Icon@2x</string>
|
||||
<string>Icon</string>
|
||||
</array>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>ash.$(PRODUCT_NAME:rfc1034identifier)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>OneWord</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>CFBundleIconFiles</key>
|
||||
<array>
|
||||
<string>Icon@2x</string>
|
||||
<string>Icon</string>
|
||||
</array>
|
||||
<key>CFBundleURLTypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
@@ -54,6 +52,8 @@
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
|
||||
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 54 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 54 KiB |
@@ -185,7 +185,9 @@
|
||||
_nextButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:[NSString stringWithFormat:arrowPathFormat, @"Right"]] style:UIBarButtonItemStylePlain target:self action:@selector(gotoNextPage)];
|
||||
}
|
||||
if (self.displayActionButton) {
|
||||
_actionButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(actionButtonPressed:)];
|
||||
// _actionButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(actionButtonPressed:)];
|
||||
// _actionButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@""] style:UIBarButtonItemStyleDone target:self action:@selector(actionButtonPressed:)];
|
||||
_actionButton = [Ash_UIUtil rightBarButtonItemWithTarget:self action:@selector(actionButtonPressed:) image:[UIImage imageNamed:@"cellmorebtnnormalN"] highlightedImage:[UIImage imageNamed:@"cellmorebtnclickN"]];
|
||||
}
|
||||
|
||||
// Update
|
||||
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@@ -11,10 +11,7 @@
|
||||
#import "PSTCollectionViewItemKey.h"
|
||||
|
||||
#import <objc/runtime.h>
|
||||
#if TARGET_IPHONE_SIMULATOR
|
||||
#import <dlfcn.h>
|
||||
#endif
|
||||
#import <tgmath.h>
|
||||
|
||||
@interface PSTCollectionViewLayout (Internal)
|
||||
@property (nonatomic, unsafe_unretained) PSTCollectionView *collectionView;
|
||||
@@ -114,7 +111,7 @@ CGFloat PSTSimulatorAnimationDragCoefficient(void);
|
||||
unsigned int doneFirstLayout : 1;
|
||||
}_collectionViewFlags;
|
||||
CGPoint _lastLayoutOffset;
|
||||
char filler[232]; // [HACK] Our class needs to be larger than Apple's class for the superclass change to work.
|
||||
char filler[200]; // [HACK] Our class needs to be larger than Apple's class for the superclass change to work.
|
||||
}
|
||||
@property (nonatomic, strong) PSTCollectionViewData *collectionViewData;
|
||||
@property (nonatomic, strong, readonly) PSTCollectionViewExt *extVars;
|
||||
@@ -275,10 +272,8 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
|
||||
|
||||
- (void)setFrame:(CGRect)frame {
|
||||
if (!CGRectEqualToRect(frame, self.frame)) {
|
||||
CGRect bounds = (CGRect){.origin=self.contentOffset, .size=frame.size};
|
||||
BOOL shouldInvalidate = [self.collectionViewLayout shouldInvalidateLayoutForBoundsChange:bounds];
|
||||
[super setFrame:frame];
|
||||
if (shouldInvalidate) {
|
||||
if ([self.collectionViewLayout shouldInvalidateLayoutForBoundsChange:self.bounds]) {
|
||||
[self invalidateLayout];
|
||||
_collectionViewFlags.fadeCellsForBoundsChange = YES;
|
||||
}
|
||||
@@ -287,9 +282,8 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
|
||||
|
||||
- (void)setBounds:(CGRect)bounds {
|
||||
if (!CGRectEqualToRect(bounds, self.bounds)) {
|
||||
BOOL shouldInvalidate = [self.collectionViewLayout shouldInvalidateLayoutForBoundsChange:bounds];
|
||||
[super setBounds:bounds];
|
||||
if (shouldInvalidate) {
|
||||
if ([self.collectionViewLayout shouldInvalidateLayoutForBoundsChange:bounds]) {
|
||||
[self invalidateLayout];
|
||||
_collectionViewFlags.fadeCellsForBoundsChange = YES;
|
||||
}
|
||||
@@ -617,8 +611,18 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
|
||||
}
|
||||
|
||||
- (NSIndexPath *)indexPathForItemAtPoint:(CGPoint)point {
|
||||
PSTCollectionViewLayoutAttributes *attributes = [[self.collectionViewLayout layoutAttributesForElementsInRect:CGRectMake(point.x, point.y, 1, 1)] lastObject];
|
||||
return attributes.indexPath;
|
||||
__block NSIndexPath *indexPath = nil;
|
||||
[_allVisibleViewsDict enumerateKeysAndObjectsWithOptions:kNilOptions usingBlock:^(id key, id obj, BOOL *stop) {
|
||||
PSTCollectionViewItemKey *itemKey = (PSTCollectionViewItemKey *)key;
|
||||
if (itemKey.type == PSTCollectionViewItemTypeCell) {
|
||||
PSTCollectionViewCell *cell = (PSTCollectionViewCell *)obj;
|
||||
if (CGRectContainsPoint(cell.frame, point) && cell.userInteractionEnabled) {
|
||||
indexPath = itemKey.indexPath;
|
||||
*stop = YES;
|
||||
}
|
||||
}
|
||||
}];
|
||||
return indexPath;
|
||||
}
|
||||
|
||||
- (NSIndexPath *)indexPathForCell:(PSTCollectionViewCell *)cell {
|
||||
@@ -984,8 +988,8 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
|
||||
// First delete all items
|
||||
NSMutableArray *paths = [NSMutableArray new];
|
||||
[sections enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop) {
|
||||
for (int i = 0; i < [self numberOfItemsInSection:(NSInteger)idx]; ++i) {
|
||||
[paths addObject:[NSIndexPath indexPathForItem:i inSection:(NSInteger)idx]];
|
||||
for (int i = 0; i < [self numberOfItemsInSection:idx]; ++i) {
|
||||
[paths addObject:[NSIndexPath indexPathForItem:i inSection:idx]];
|
||||
}
|
||||
}];
|
||||
[self deleteItemsAtIndexPaths:paths];
|
||||
@@ -1083,9 +1087,6 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
|
||||
else {
|
||||
layout.collectionView = self;
|
||||
|
||||
_layout.collectionView = nil;
|
||||
_layout = layout;
|
||||
|
||||
_collectionViewData = [[PSTCollectionViewData alloc] initWithCollectionView:self layout:layout];
|
||||
[_collectionViewData prepareToLoadData];
|
||||
|
||||
@@ -1285,6 +1286,9 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
|
||||
applyNewLayoutBlock();
|
||||
freeUnusedViews();
|
||||
}
|
||||
|
||||
_layout.collectionView = nil;
|
||||
_layout = layout;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1300,22 +1304,22 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
|
||||
self.extVars.collectionViewDelegate = delegate;
|
||||
|
||||
// Managing the Selected Cells
|
||||
_collectionViewFlags.delegateShouldSelectItemAtIndexPath = (unsigned int)[self.delegate respondsToSelector:@selector(collectionView:shouldSelectItemAtIndexPath:)];
|
||||
_collectionViewFlags.delegateDidSelectItemAtIndexPath = (unsigned int)[self.delegate respondsToSelector:@selector(collectionView:didSelectItemAtIndexPath:)];
|
||||
_collectionViewFlags.delegateShouldDeselectItemAtIndexPath = (unsigned int)[self.delegate respondsToSelector:@selector(collectionView:shouldDeselectItemAtIndexPath:)];
|
||||
_collectionViewFlags.delegateDidDeselectItemAtIndexPath = (unsigned int)[self.delegate respondsToSelector:@selector(collectionView:didDeselectItemAtIndexPath:)];
|
||||
_collectionViewFlags.delegateShouldSelectItemAtIndexPath = [self.delegate respondsToSelector:@selector(collectionView:shouldSelectItemAtIndexPath:)];
|
||||
_collectionViewFlags.delegateDidSelectItemAtIndexPath = [self.delegate respondsToSelector:@selector(collectionView:didSelectItemAtIndexPath:)];
|
||||
_collectionViewFlags.delegateShouldDeselectItemAtIndexPath = [self.delegate respondsToSelector:@selector(collectionView:shouldDeselectItemAtIndexPath:)];
|
||||
_collectionViewFlags.delegateDidDeselectItemAtIndexPath = [self.delegate respondsToSelector:@selector(collectionView:didDeselectItemAtIndexPath:)];
|
||||
|
||||
// Managing Cell Highlighting
|
||||
_collectionViewFlags.delegateShouldHighlightItemAtIndexPath = (unsigned int)[self.delegate respondsToSelector:@selector(collectionView:shouldHighlightItemAtIndexPath:)];
|
||||
_collectionViewFlags.delegateDidHighlightItemAtIndexPath = (unsigned int)[self.delegate respondsToSelector:@selector(collectionView:didHighlightItemAtIndexPath:)];
|
||||
_collectionViewFlags.delegateDidUnhighlightItemAtIndexPath = (unsigned int)[self.delegate respondsToSelector:@selector(collectionView:didUnhighlightItemAtIndexPath:)];
|
||||
_collectionViewFlags.delegateShouldHighlightItemAtIndexPath = [self.delegate respondsToSelector:@selector(collectionView:shouldHighlightItemAtIndexPath:)];
|
||||
_collectionViewFlags.delegateDidHighlightItemAtIndexPath = [self.delegate respondsToSelector:@selector(collectionView:didHighlightItemAtIndexPath:)];
|
||||
_collectionViewFlags.delegateDidUnhighlightItemAtIndexPath = [self.delegate respondsToSelector:@selector(collectionView:didUnhighlightItemAtIndexPath:)];
|
||||
|
||||
// Tracking the Removal of Views
|
||||
_collectionViewFlags.delegateDidEndDisplayingCell = (unsigned int)[self.delegate respondsToSelector:@selector(collectionView:didEndDisplayingCell:forItemAtIndexPath:)];
|
||||
_collectionViewFlags.delegateDidEndDisplayingSupplementaryView = (unsigned int)[self.delegate respondsToSelector:@selector(collectionView:didEndDisplayingSupplementaryView:forElementOfKind:atIndexPath:)];
|
||||
_collectionViewFlags.delegateDidEndDisplayingCell = [self.delegate respondsToSelector:@selector(collectionView:didEndDisplayingCell:forItemAtIndexPath:)];
|
||||
_collectionViewFlags.delegateDidEndDisplayingSupplementaryView = [self.delegate respondsToSelector:@selector(collectionView:didEndDisplayingSupplementaryView:forElementOfKind:atIndexPath:)];
|
||||
|
||||
// Managing Actions for Cells
|
||||
_collectionViewFlags.delegateSupportsMenus = (unsigned int)[self.delegate respondsToSelector:@selector(collectionView:shouldShowMenuForItemAtIndexPath:)];
|
||||
_collectionViewFlags.delegateSupportsMenus = [self.delegate respondsToSelector:@selector(collectionView:shouldShowMenuForItemAtIndexPath:)];
|
||||
|
||||
// These aren't present in the flags which is a little strange. Not adding them because that will mess with byte alignment which will affect cross compatibility.
|
||||
// The flag names are guesses and are there for documentation purposes.
|
||||
@@ -1329,10 +1333,10 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
|
||||
_dataSource = dataSource;
|
||||
|
||||
// Getting Item and Section Metrics
|
||||
_collectionViewFlags.dataSourceNumberOfSections = (unsigned int)[_dataSource respondsToSelector:@selector(numberOfSectionsInCollectionView:)];
|
||||
_collectionViewFlags.dataSourceNumberOfSections = [_dataSource respondsToSelector:@selector(numberOfSectionsInCollectionView:)];
|
||||
|
||||
// Getting Views for Items
|
||||
_collectionViewFlags.dataSourceViewForSupplementaryElement = (unsigned int)[_dataSource respondsToSelector:@selector(collectionView:viewForSupplementaryElementOfKind:atIndexPath:)];
|
||||
_collectionViewFlags.dataSourceViewForSupplementaryElement = [_dataSource respondsToSelector:@selector(collectionView:viewForSupplementaryElementOfKind:atIndexPath:)];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1341,7 +1345,7 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
|
||||
}
|
||||
|
||||
- (void)setAllowsSelection:(BOOL)allowsSelection {
|
||||
_collectionViewFlags.allowsSelection = (unsigned int)allowsSelection;
|
||||
_collectionViewFlags.allowsSelection = allowsSelection;
|
||||
}
|
||||
|
||||
- (BOOL)allowsMultipleSelection {
|
||||
@@ -1349,7 +1353,7 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
|
||||
}
|
||||
|
||||
- (void)setAllowsMultipleSelection:(BOOL)allowsMultipleSelection {
|
||||
_collectionViewFlags.allowsMultipleSelection = (unsigned int)allowsMultipleSelection;
|
||||
_collectionViewFlags.allowsMultipleSelection = allowsMultipleSelection;
|
||||
|
||||
// Deselect all objects if allows multiple selection is false
|
||||
if (!allowsMultipleSelection && _indexPathsForSelectedItems.count) {
|
||||
@@ -1723,10 +1727,10 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
|
||||
NSArray *oldToNewIndexMap = _update[@"oldToNewIndexMap"];
|
||||
NSUInteger newGlobalIndex = NSNotFound;
|
||||
if (NSNotFound != oldGlobalIndex && oldGlobalIndex < oldToNewIndexMap.count) {
|
||||
newGlobalIndex = [oldToNewIndexMap[oldGlobalIndex] unsignedIntegerValue];
|
||||
newGlobalIndex = [oldToNewIndexMap[oldGlobalIndex] intValue];
|
||||
}
|
||||
NSIndexPath *newIndexPath = newGlobalIndex == NSNotFound ? nil : [_update[@"newModel"] indexPathForItemAtGlobalIndex:(int)newGlobalIndex];
|
||||
NSIndexPath *oldIndexPath = oldGlobalIndex == NSNotFound ? nil : [_update[@"oldModel"] indexPathForItemAtGlobalIndex:(int)oldGlobalIndex];
|
||||
NSIndexPath *newIndexPath = newGlobalIndex == NSNotFound ? nil : [_update[@"newModel"] indexPathForItemAtGlobalIndex:newGlobalIndex];
|
||||
NSIndexPath *oldIndexPath = oldGlobalIndex == NSNotFound ? nil : [_update[@"oldModel"] indexPathForItemAtGlobalIndex:oldGlobalIndex];
|
||||
|
||||
if (newIndexPath) {
|
||||
PSTCollectionViewLayoutAttributes *startAttrs = nil;
|
||||
@@ -1779,9 +1783,6 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
|
||||
}
|
||||
}
|
||||
|
||||
//In here I think it doesn't need the animation but the transaction, it would cause some issue of display.
|
||||
//I resolve the bug when user insert the new sections, the cell will display with a blink animation at the first operation.
|
||||
//But I don't know why the next operation wouldn't reproduction in the pre version.
|
||||
_allVisibleViewsDict = newAllVisibleView;
|
||||
|
||||
for (NSDictionary *animation in animations) {
|
||||
@@ -1790,10 +1791,27 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
|
||||
[view applyLayoutAttributes:attr];
|
||||
};
|
||||
|
||||
[UIView animateWithDuration:.3 animations:^{
|
||||
_collectionViewFlags.updatingLayout = YES;
|
||||
|
||||
[CATransaction begin];
|
||||
[CATransaction setAnimationDuration:0];
|
||||
[CATransaction setAnimationDuration:.3];
|
||||
|
||||
// You might wonder why we use CATransaction to handle animation completion
|
||||
// here instead of using the completion: parameter of UIView's animateWithDuration:.
|
||||
// The problem is that animateWithDuration: calls this completion block
|
||||
// when other animations are finished. This means that the block is called
|
||||
// after the user releases his finger and the scroll view has finished scrolling.
|
||||
// This can be a large delay, which causes the layout of the cells to be greatly
|
||||
// delayed, and thus, be unrendered. I assume that was done for performance
|
||||
// purposes but it completely breaks our layout logic here.
|
||||
// To get the completion block called immediately after the animation actually
|
||||
// finishes, I switched to use CATransaction.
|
||||
// The only thing I'm not sure about - _completed_ flag. I don't know where to get it
|
||||
// in terms of CATransaction's API, so I use animateWithDuration's completion block
|
||||
// to call _updateCompletionHandler with that flag.
|
||||
// Ideally, _updateCompletionHandler should be called along with the other logic in
|
||||
// CATransaction's completionHandler but I simply don't know where to get that flag.
|
||||
[CATransaction setCompletionBlock:^{
|
||||
// Iterate through all the views that we are going to remove.
|
||||
[viewsToRemove enumerateKeysAndObjectsUsingBlock:^(NSNumber *keyObj, NSArray *views, BOOL *stop) {
|
||||
@@ -1801,21 +1819,14 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
|
||||
for (PSTCollectionReusableView *view in views) {
|
||||
if (type == PSTCollectionViewItemTypeCell) {
|
||||
[self reuseCell:(PSTCollectionViewCell *)view];
|
||||
} else if (type == PSTCollectionViewItemTypeSupplementaryView) {
|
||||
}else if (type == PSTCollectionViewItemTypeSupplementaryView) {
|
||||
[self reuseSupplementaryView:view];
|
||||
} else if (type == PSTCollectionViewItemTypeDecorationView) {
|
||||
}else if (type == PSTCollectionViewItemTypeDecorationView) {
|
||||
[self reuseDecorationView:view];
|
||||
}
|
||||
}
|
||||
}];
|
||||
|
||||
_collectionViewFlags.updatingLayout = NO;
|
||||
|
||||
//In here I think when the block is called, the flag is YES. So the _updateCopletionHandler's paramer is YES.
|
||||
if (_updateCompletionHandler) {
|
||||
_updateCompletionHandler(YES);
|
||||
_updateCompletionHandler = nil;
|
||||
}
|
||||
}];
|
||||
|
||||
for (NSDictionary *animation in animations) {
|
||||
@@ -1824,6 +1835,13 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
|
||||
[view applyLayoutAttributes:attrs];
|
||||
}
|
||||
[CATransaction commit];
|
||||
} completion:^(BOOL finished) {
|
||||
|
||||
if (_updateCompletionHandler) {
|
||||
_updateCompletionHandler(finished);
|
||||
_updateCompletionHandler = nil;
|
||||
}
|
||||
}];
|
||||
|
||||
[_layout finalizeCollectionViewUpdates];
|
||||
}
|
||||
@@ -2013,12 +2031,12 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
|
||||
|
||||
#if !defined NS_BLOCK_ASSERTIONS
|
||||
for (NSNumber *sectionKey in [operations keyEnumerator]) {
|
||||
NSInteger section = [sectionKey integerValue];
|
||||
NSInteger section = [sectionKey intValue];
|
||||
|
||||
NSInteger insertedCount = [operations[sectionKey][@"inserted"] integerValue];
|
||||
NSInteger deletedCount = [operations[sectionKey][@"deleted"] integerValue];
|
||||
NSInteger movedInCount = [operations[sectionKey][@"movedIn"] integerValue];
|
||||
NSInteger movedOutCount = [operations[sectionKey][@"movedOut"] integerValue];
|
||||
NSInteger insertedCount = [operations[sectionKey][@"inserted"] intValue];
|
||||
NSInteger deletedCount = [operations[sectionKey][@"deleted"] intValue];
|
||||
NSInteger movedInCount = [operations[sectionKey][@"movedIn"] intValue];
|
||||
NSInteger movedOutCount = [operations[sectionKey][@"movedOut"] intValue];
|
||||
|
||||
NSAssert([oldCollectionViewData numberOfItemsInSection:section] + insertedCount - deletedCount + movedInCount - movedOutCount ==
|
||||
[_collectionViewData numberOfItemsInSection:section],
|
||||
@@ -2059,33 +2077,33 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
|
||||
// section updates are ignored anyway in animation code. If not commented, mixing rows and section deletion causes crash in else below
|
||||
// [newModel removeObjectAtIndex:updateItem.indexPathBeforeUpdate.section];
|
||||
}else {
|
||||
[(NSMutableArray *)newModel[(NSUInteger)updateItem.indexPathBeforeUpdate.section]
|
||||
removeObjectAtIndex:(NSUInteger)updateItem.indexPathBeforeUpdate.item];
|
||||
[(NSMutableArray *)newModel[updateItem.indexPathBeforeUpdate.section]
|
||||
removeObjectAtIndex:updateItem.indexPathBeforeUpdate.item];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case PSTCollectionUpdateActionInsert: {
|
||||
if (updateItem.isSectionOperation) {
|
||||
[newModel insertObject:[[NSMutableArray alloc] init]
|
||||
atIndex:(NSUInteger)updateItem.indexPathAfterUpdate.section];
|
||||
atIndex:updateItem.indexPathAfterUpdate.section];
|
||||
}else {
|
||||
[(NSMutableArray *)newModel[(NSUInteger)updateItem.indexPathAfterUpdate.section]
|
||||
[(NSMutableArray *)newModel[updateItem.indexPathAfterUpdate.section]
|
||||
insertObject:@(NSNotFound)
|
||||
atIndex:(NSUInteger)updateItem.indexPathAfterUpdate.item];
|
||||
atIndex:updateItem.indexPathAfterUpdate.item];
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case PSTCollectionUpdateActionMove: {
|
||||
if (updateItem.isSectionOperation) {
|
||||
id section = newModel[(NSUInteger)updateItem.indexPathBeforeUpdate.section];
|
||||
[newModel insertObject:section atIndex:(NSUInteger)updateItem.indexPathAfterUpdate.section];
|
||||
id section = newModel[updateItem.indexPathBeforeUpdate.section];
|
||||
[newModel insertObject:section atIndex:updateItem.indexPathAfterUpdate.section];
|
||||
}
|
||||
else {
|
||||
id object = @([oldCollectionViewData globalIndexForItemAtIndexPath:updateItem.indexPathBeforeUpdate]);
|
||||
[newModel[(NSUInteger)updateItem.indexPathBeforeUpdate.section] removeObject:object];
|
||||
[newModel[(NSUInteger)updateItem.indexPathAfterUpdate.section] insertObject:object
|
||||
atIndex:(NSUInteger)updateItem.indexPathAfterUpdate.item];
|
||||
[newModel[updateItem.indexPathBeforeUpdate.section] removeObject:object];
|
||||
[newModel[updateItem.indexPathAfterUpdate.section] insertObject:object
|
||||
atIndex:updateItem.indexPathAfterUpdate.item];
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -2093,8 +2111,8 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
|
||||
}
|
||||
}
|
||||
|
||||
NSMutableArray *oldToNewMap = [NSMutableArray arrayWithCapacity:(NSUInteger)[oldCollectionViewData numberOfItems]];
|
||||
NSMutableArray *newToOldMap = [NSMutableArray arrayWithCapacity:(NSUInteger)[_collectionViewData numberOfItems]];
|
||||
NSMutableArray *oldToNewMap = [NSMutableArray arrayWithCapacity:[oldCollectionViewData numberOfItems]];
|
||||
NSMutableArray *newToOldMap = [NSMutableArray arrayWithCapacity:[_collectionViewData numberOfItems]];
|
||||
|
||||
for (NSInteger i = 0; i < [oldCollectionViewData numberOfItems]; i++)
|
||||
[oldToNewMap addObject:@(NSNotFound)];
|
||||
@@ -2105,9 +2123,9 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
|
||||
for (NSUInteger i = 0; i < newModel.count; i++) {
|
||||
NSMutableArray *section = newModel[i];
|
||||
for (NSUInteger j = 0; j < section.count; j++) {
|
||||
NSUInteger newGlobalIndex = [_collectionViewData globalIndexForItemAtIndexPath:[NSIndexPath indexPathForItem:(NSInteger)j inSection:(NSInteger)i]];
|
||||
NSInteger newGlobalIndex = [_collectionViewData globalIndexForItemAtIndexPath:[NSIndexPath indexPathForItem:j inSection:i]];
|
||||
if ([section[j] integerValue] != NSNotFound)
|
||||
oldToNewMap[[section[j] unsignedIntegerValue]] = @(newGlobalIndex);
|
||||
oldToNewMap[[section[j] intValue]] = @(newGlobalIndex);
|
||||
if (newGlobalIndex != NSNotFound)
|
||||
newToOldMap[newGlobalIndex] = section[j];
|
||||
}
|
||||
@@ -2151,7 +2169,7 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
|
||||
NSMutableArray *updateActions = [self arrayForUpdateAction:updateAction];
|
||||
|
||||
[sections enumerateIndexesUsingBlock:^(NSUInteger section, BOOL *stop) {
|
||||
PSTCollectionViewUpdateItem *updateItem = [[PSTCollectionViewUpdateItem alloc] initWithAction:updateAction forIndexPath:[NSIndexPath indexPathForItem:NSNotFound inSection:(NSInteger)section]];
|
||||
PSTCollectionViewUpdateItem *updateItem = [[PSTCollectionViewUpdateItem alloc] initWithAction:updateAction forIndexPath:[NSIndexPath indexPathForItem:NSNotFound inSection:section]];
|
||||
[updateActions addObject:updateItem];
|
||||
}];
|
||||
|
||||
@@ -2208,50 +2226,31 @@ static void PSTCollectionViewCommonSetup(PSTCollectionView *_self) {
|
||||
@implementation PSUICollectionViewLayoutAttributes_ @end
|
||||
@implementation PSUICollectionViewController_ @end
|
||||
|
||||
static void PSTRegisterClasses() {
|
||||
NSDictionary *map = @{
|
||||
@"UICollectionView": PSUICollectionView_.class,
|
||||
@"UICollectionViewCell": PSUICollectionViewCell_.class,
|
||||
@"UICollectionReusableView": PSUICollectionReusableView_.class,
|
||||
@"UICollectionViewLayout": PSUICollectionViewLayout_.class,
|
||||
@"UICollectionViewFlowLayout": PSUICollectionViewFlowLayout_.class,
|
||||
@"UICollectionViewLayoutAttributes": PSUICollectionViewLayoutAttributes_.class,
|
||||
@"UICollectionViewController": PSUICollectionViewController_.class
|
||||
};
|
||||
static BOOL PSTRegisterClass(NSString *UIClassName, Class PSTClass) {
|
||||
NSCParameterAssert(UIClassName && PSTClass);
|
||||
|
||||
// Ensure that superclass replacement is all-or-nothing for the PSUI*_ types. Either use exclusively
|
||||
// UICollectionView*, or exclusively PSTCollectionView*.
|
||||
__block BOOL canOverwrite = YES;
|
||||
[map enumerateKeysAndObjectsUsingBlock:^(NSString* UIClassName, id PSTClass, BOOL *stop) {
|
||||
Class UIClass = NSClassFromString(UIClassName);
|
||||
if (UIClass) {
|
||||
// Class size need to be the same for class_setSuperclass to work.
|
||||
// If the UIKit class is smaller then our subclass, ivars won't clash, so there's no issue.
|
||||
long sizeDifference = (long)class_getInstanceSize(UIClass) - class_getInstanceSize(PSTClass);
|
||||
long sizeDifference = class_getInstanceSize(UIClass) - class_getInstanceSize(PSTClass);
|
||||
if (sizeDifference > 0) {
|
||||
canOverwrite = NO;
|
||||
NSLog(@"Warning! ivar size mismatch in %@ of %tu bytes - can't change the superclass.", PSTClass, sizeDifference);
|
||||
}
|
||||
NSLog(@"Warning! ivar size mismatch in %@ - can't change the superclass.", PSTClass);
|
||||
return NO;
|
||||
} else {
|
||||
canOverwrite = NO;
|
||||
// We're most likely on iOS5, the requested UIKit class doesn't exist, so we create it dynamically.
|
||||
if ((UIClass = objc_allocateClassPair(PSTClass, UIClassName.UTF8String, 0))) {
|
||||
objc_registerClassPair(UIClass);
|
||||
}
|
||||
}
|
||||
}];
|
||||
|
||||
if (canOverwrite) {
|
||||
// All UICollectionView types were found and appropriately sized, so it is safe to replace the super-class.
|
||||
[map enumerateKeysAndObjectsUsingBlock:^(NSString* UIClassName, id PSTClass, BOOL *stop) {
|
||||
Class UIClass = NSClassFromString(UIClassName);
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
|
||||
// class_setSuperclass is deprecated, but still exists and works on iOS6/7.
|
||||
class_setSuperclass(PSTClass, UIClass);
|
||||
#pragma clang diagnostic pop
|
||||
}];
|
||||
}
|
||||
} else {
|
||||
// We're most likely on iOS5, the requested UIKit class doesn't exist, so we create it dynamically.
|
||||
if ((UIClass = objc_allocateClassPair(PSTClass, UIClassName.UTF8String, 0))) {
|
||||
objc_registerClassPair(UIClass);
|
||||
}
|
||||
}
|
||||
return YES;
|
||||
}
|
||||
|
||||
// Create subclasses that pose as UICollectionView et al, if not available at runtime.
|
||||
@@ -2260,7 +2259,13 @@ __attribute__((constructor)) static void PSTCreateUICollectionViewClasses(void)
|
||||
|
||||
@autoreleasepool {
|
||||
// Change superclass at runtime. This allows seamless switching from PST* to UI* at runtime.
|
||||
PSTRegisterClasses();
|
||||
PSTRegisterClass(@"UICollectionView", PSUICollectionView_.class);
|
||||
PSTRegisterClass(@"UICollectionViewCell", PSUICollectionViewCell_.class);
|
||||
PSTRegisterClass(@"UICollectionReusableView", PSUICollectionReusableView_.class);
|
||||
PSTRegisterClass(@"UICollectionViewLayout", PSUICollectionViewLayout_.class);
|
||||
PSTRegisterClass(@"UICollectionViewFlowLayout", PSUICollectionViewFlowLayout_.class);
|
||||
PSTRegisterClass(@"UICollectionViewLayoutAttributes", PSUICollectionViewLayoutAttributes_.class);
|
||||
PSTRegisterClass(@"UICollectionViewController", PSUICollectionViewController_.class);
|
||||
|
||||
// add PSUI classes at runtime to make Interface Builder sane
|
||||
// (IB doesn't allow adding the PSUICollectionView_ types but doesn't complain on unknown classes)
|
||||
@@ -76,7 +76,7 @@
|
||||
}
|
||||
|
||||
- (void)setInUpdateAnimation:(BOOL)inUpdateAnimation {
|
||||
_reusableViewFlags.inUpdateAnimation = (unsigned int)inUpdateAnimation;
|
||||
_reusableViewFlags.inUpdateAnimation = inUpdateAnimation;
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -149,14 +149,14 @@
|
||||
|
||||
// Selection highlights underlying contents
|
||||
- (void)setSelected:(BOOL)selected {
|
||||
_collectionCellFlags.selected = (unsigned int)selected;
|
||||
_collectionCellFlags.selected = selected;
|
||||
self.accessibilityTraits = selected ? UIAccessibilityTraitSelected : UIAccessibilityTraitNone;
|
||||
[self updateBackgroundView:selected];
|
||||
}
|
||||
|
||||
// Cell highlighting only highlights the cell itself
|
||||
- (void)setHighlighted:(BOOL)highlighted {
|
||||
_collectionCellFlags.highlighted = (unsigned int)highlighted;
|
||||
_collectionCellFlags.highlighted = highlighted;
|
||||
[self updateBackgroundView:highlighted];
|
||||
}
|
||||
|
||||
@@ -123,7 +123,7 @@
|
||||
#pragma mark - Properties
|
||||
|
||||
- (void)setClearsSelectionOnViewWillAppear:(BOOL)clearsSelectionOnViewWillAppear {
|
||||
_collectionViewControllerFlags.clearsSelectionOnViewWillAppear = (unsigned int)clearsSelectionOnViewWillAppear;
|
||||
_collectionViewControllerFlags.clearsSelectionOnViewWillAppear = clearsSelectionOnViewWillAppear;
|
||||
}
|
||||
|
||||
- (BOOL)clearsSelectionOnViewWillAppear {
|
||||
@@ -171,7 +171,7 @@
|
||||
}
|
||||
|
||||
- (void)setLayoutIsPrepared:(BOOL)layoutIsPrepared {
|
||||
_collectionViewDataFlags.layoutIsPrepared = (unsigned int)layoutIsPrepared;
|
||||
_collectionViewDataFlags.layoutIsPrepared = layoutIsPrepared;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -208,9 +208,9 @@
|
||||
}
|
||||
// allocate space
|
||||
if (!_sectionItemCounts) {
|
||||
_sectionItemCounts = malloc((size_t)_numSections * sizeof(NSInteger));
|
||||
_sectionItemCounts = malloc(_numSections * sizeof(NSInteger));
|
||||
}else {
|
||||
_sectionItemCounts = realloc(_sectionItemCounts, (size_t)_numSections * sizeof(NSInteger));
|
||||
_sectionItemCounts = realloc(_sectionItemCounts, _numSections * sizeof(NSInteger));
|
||||
}
|
||||
|
||||
// query cells per section
|
||||
@@ -24,6 +24,7 @@ typedef NS_ENUM(NSInteger, PSTCollectionViewScrollDirection) {
|
||||
- (CGFloat)collectionView:(PSTCollectionView *)collectionView layout:(PSTCollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section;
|
||||
- (CGSize)collectionView:(PSTCollectionView *)collectionView layout:(PSTCollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section;
|
||||
- (CGSize)collectionView:(PSTCollectionView *)collectionView layout:(PSTCollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section;
|
||||
- (PSTCollectionViewLayoutAttributes *)layoutAttributesForSupplementaryViewOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath;
|
||||
|
||||
@end
|
||||
|
||||
@@ -145,7 +145,7 @@ static char kPSTCachedItemRectsKey;
|
||||
normalizedHeaderFrame.origin.x += section.frame.origin.x;
|
||||
normalizedHeaderFrame.origin.y += section.frame.origin.y;
|
||||
if (!CGRectIsEmpty(normalizedHeaderFrame) && CGRectIntersectsRect(normalizedHeaderFrame, rect)) {
|
||||
PSTCollectionViewLayoutAttributes *layoutAttributes = [[self.class layoutAttributesClass] layoutAttributesForSupplementaryViewOfKind:PSTCollectionElementKindSectionHeader withIndexPath:[NSIndexPath indexPathForItem:0 inSection:(NSInteger)sectionIndex]];
|
||||
PSTCollectionViewLayoutAttributes *layoutAttributes = [[self.class layoutAttributesClass] layoutAttributesForSupplementaryViewOfKind:PSTCollectionElementKindSectionHeader withIndexPath:[NSIndexPath indexPathForItem:0 inSection:sectionIndex]];
|
||||
layoutAttributes.frame = normalizedHeaderFrame;
|
||||
[layoutAttributesArray addObject:layoutAttributes];
|
||||
}
|
||||
@@ -158,10 +158,8 @@ static char kPSTCachedItemRectsKey;
|
||||
|
||||
for (PSTGridLayoutRow *row in section.rows) {
|
||||
CGRect normalizedRowFrame = row.rowFrame;
|
||||
|
||||
normalizedRowFrame.origin.x += section.frame.origin.x;
|
||||
normalizedRowFrame.origin.y += section.frame.origin.y;
|
||||
|
||||
if (CGRectIntersectsRect(normalizedRowFrame, rect)) {
|
||||
// TODO be more fine-grained for items
|
||||
|
||||
@@ -170,30 +168,25 @@ static char kPSTCachedItemRectsKey;
|
||||
NSUInteger sectionItemIndex;
|
||||
CGRect itemFrame;
|
||||
if (row.fixedItemSize) {
|
||||
itemFrame = [itemRects[(NSUInteger)itemIndex] CGRectValue];
|
||||
sectionItemIndex = (NSUInteger)(row.index * section.itemsByRowCount + itemIndex);
|
||||
itemFrame = [itemRects[itemIndex] CGRectValue];
|
||||
sectionItemIndex = row.index * section.itemsByRowCount + itemIndex;
|
||||
}else {
|
||||
PSTGridLayoutItem *item = row.items[(NSUInteger)itemIndex];
|
||||
PSTGridLayoutItem *item = row.items[itemIndex];
|
||||
sectionItemIndex = [section.items indexOfObjectIdenticalTo:item];
|
||||
itemFrame = item.itemFrame;
|
||||
}
|
||||
|
||||
CGRect normalisedItemFrame = CGRectMake(normalizedRowFrame.origin.x + itemFrame.origin.x, normalizedRowFrame.origin.y + itemFrame.origin.y, itemFrame.size.width, itemFrame.size.height);
|
||||
|
||||
if (CGRectIntersectsRect(normalisedItemFrame, rect)) {
|
||||
layoutAttributes = [[self.class layoutAttributesClass] layoutAttributesForCellWithIndexPath:[NSIndexPath indexPathForItem:(NSInteger)sectionItemIndex inSection:(NSInteger)sectionIndex]];
|
||||
layoutAttributes.frame = normalisedItemFrame;
|
||||
layoutAttributes = [[self.class layoutAttributesClass] layoutAttributesForCellWithIndexPath:[NSIndexPath indexPathForItem:sectionItemIndex inSection:sectionIndex]];
|
||||
layoutAttributes.frame = CGRectMake(normalizedRowFrame.origin.x + itemFrame.origin.x, normalizedRowFrame.origin.y + itemFrame.origin.y, itemFrame.size.width, itemFrame.size.height);
|
||||
[layoutAttributesArray addObject:layoutAttributes];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CGRect normalizedFooterFrame = section.footerFrame;
|
||||
normalizedFooterFrame.origin.x += section.frame.origin.x;
|
||||
normalizedFooterFrame.origin.y += section.frame.origin.y;
|
||||
if (!CGRectIsEmpty(normalizedFooterFrame) && CGRectIntersectsRect(normalizedFooterFrame, rect)) {
|
||||
PSTCollectionViewLayoutAttributes *layoutAttributes = [[self.class layoutAttributesClass] layoutAttributesForSupplementaryViewOfKind:PSTCollectionElementKindSectionFooter withIndexPath:[NSIndexPath indexPathForItem:0 inSection:(NSInteger)sectionIndex]];
|
||||
PSTCollectionViewLayoutAttributes *layoutAttributes = [[self.class layoutAttributesClass] layoutAttributesForSupplementaryViewOfKind:PSTCollectionElementKindSectionFooter withIndexPath:[NSIndexPath indexPathForItem:0 inSection:sectionIndex]];
|
||||
layoutAttributes.frame = normalizedFooterFrame;
|
||||
[layoutAttributesArray addObject:layoutAttributes];
|
||||
}
|
||||
@@ -205,17 +198,17 @@ static char kPSTCachedItemRectsKey;
|
||||
- (PSTCollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath {
|
||||
if (!_data) [self prepareLayout];
|
||||
|
||||
PSTGridLayoutSection *section = _data.sections[(NSUInteger)indexPath.section];
|
||||
PSTGridLayoutSection *section = _data.sections[indexPath.section];
|
||||
PSTGridLayoutRow *row = nil;
|
||||
CGRect itemFrame = CGRectZero;
|
||||
|
||||
if (section.fixedItemSize && section.itemsByRowCount > 0 && indexPath.item / section.itemsByRowCount < (NSInteger)section.rows.count) {
|
||||
row = section.rows[(NSUInteger)(indexPath.item / section.itemsByRowCount)];
|
||||
NSUInteger itemIndex = (NSUInteger)(indexPath.item % section.itemsByRowCount);
|
||||
if (section.fixedItemSize && indexPath.item / section.itemsByRowCount < (NSInteger)section.rows.count) {
|
||||
row = section.rows[indexPath.item / section.itemsByRowCount];
|
||||
NSUInteger itemIndex = indexPath.item % section.itemsByRowCount;
|
||||
NSArray *itemRects = [row itemRects];
|
||||
itemFrame = [itemRects[itemIndex] CGRectValue];
|
||||
}else if (indexPath.item < (NSInteger)section.items.count) {
|
||||
PSTGridLayoutItem *item = section.items[(NSUInteger)indexPath.item];
|
||||
PSTGridLayoutItem *item = section.items[indexPath.item];
|
||||
row = item.rowObject;
|
||||
itemFrame = item.itemFrame;
|
||||
}
|
||||
@@ -234,7 +227,7 @@ static char kPSTCachedItemRectsKey;
|
||||
- (PSTCollectionViewLayoutAttributes *)layoutAttributesForSupplementaryViewOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath {
|
||||
if (!_data) [self prepareLayout];
|
||||
|
||||
NSUInteger sectionIndex = (NSUInteger)indexPath.section;
|
||||
NSUInteger sectionIndex = indexPath.section;
|
||||
PSTCollectionViewLayoutAttributes *layoutAttributes = nil;
|
||||
|
||||
if (sectionIndex < _data.sections.count) {
|
||||
@@ -252,7 +245,7 @@ static char kPSTCachedItemRectsKey;
|
||||
normalizedFrame.origin.x += section.frame.origin.x;
|
||||
normalizedFrame.origin.y += section.frame.origin.y;
|
||||
|
||||
layoutAttributes = [[self.class layoutAttributesClass] layoutAttributesForSupplementaryViewOfKind:kind withIndexPath:[NSIndexPath indexPathForItem:0 inSection:(NSInteger)sectionIndex]];
|
||||
layoutAttributes = [[self.class layoutAttributesClass] layoutAttributesForSupplementaryViewOfKind:kind withIndexPath:[NSIndexPath indexPathForItem:0 inSection:sectionIndex]];
|
||||
layoutAttributes.frame = normalizedFrame;
|
||||
}
|
||||
}
|
||||
@@ -330,8 +323,8 @@ static char kPSTCachedItemRectsKey;
|
||||
BOOL implementsHeaderReferenceDelegate = [flowDataSource respondsToSelector:@selector(collectionView:layout:referenceSizeForHeaderInSection:)];
|
||||
BOOL implementsFooterReferenceDelegate = [flowDataSource respondsToSelector:@selector(collectionView:layout:referenceSizeForFooterInSection:)];
|
||||
|
||||
NSInteger numberOfSections = [self.collectionView numberOfSections];
|
||||
for (NSInteger section = 0; section < numberOfSections; section++) {
|
||||
NSUInteger numberOfSections = [self.collectionView numberOfSections];
|
||||
for (NSUInteger section = 0; section < numberOfSections; section++) {
|
||||
PSTGridLayoutSection *layoutSection = [_data addSection];
|
||||
layoutSection.verticalInterstice = _data.horizontal ? self.minimumInteritemSpacing : self.minimumLineSpacing;
|
||||
layoutSection.horizontalInterstice = !_data.horizontal ? self.minimumInteritemSpacing : self.minimumLineSpacing;
|
||||
@@ -376,12 +369,12 @@ static char kPSTCachedItemRectsKey;
|
||||
}
|
||||
layoutSection.footerDimension = _data.horizontal ? footerReferenceSize.width : footerReferenceSize.height;
|
||||
|
||||
NSInteger numberOfItems = [self.collectionView numberOfItemsInSection:section];
|
||||
NSUInteger numberOfItems = [self.collectionView numberOfItemsInSection:section];
|
||||
|
||||
// if delegate implements size delegate, query it for all items
|
||||
if (implementsSizeDelegate) {
|
||||
for (NSInteger item = 0; item < numberOfItems; item++) {
|
||||
NSIndexPath *indexPath = [NSIndexPath indexPathForItem:item inSection:(NSInteger)section];
|
||||
for (NSUInteger item = 0; item < numberOfItems; item++) {
|
||||
NSIndexPath *indexPath = [NSIndexPath indexPathForItem:item inSection:section];
|
||||
CGSize itemSize = implementsSizeDelegate ? [flowDataSource collectionView:self.collectionView layout:self sizeForItemAtIndexPath:indexPath] : self.itemSize;
|
||||
|
||||
PSTGridLayoutItem *layoutItem = [layoutSection addItem];
|
||||
@@ -406,11 +399,11 @@ static char kPSTCachedItemRectsKey;
|
||||
if (_data.horizontal) {
|
||||
sectionFrame.origin.x += contentSize.width;
|
||||
contentSize.width += section.frame.size.width + section.frame.origin.x;
|
||||
contentSize.height = MAX(contentSize.height, sectionFrame.size.height + section.frame.origin.y + section.sectionMargins.top + section.sectionMargins.bottom);
|
||||
contentSize.height = fmax(contentSize.height, sectionFrame.size.height + section.frame.origin.y + section.sectionMargins.top + section.sectionMargins.bottom);
|
||||
}else {
|
||||
sectionFrame.origin.y += contentSize.height;
|
||||
contentSize.height += sectionFrame.size.height + section.frame.origin.y;
|
||||
contentSize.width = MAX(contentSize.width, sectionFrame.size.width + section.frame.origin.x + section.sectionMargins.left + section.sectionMargins.right);
|
||||
contentSize.width = fmax(contentSize.width, sectionFrame.size.width + section.frame.origin.x + section.sectionMargins.left + section.sectionMargins.right);
|
||||
}
|
||||
section.frame = sectionFrame;
|
||||
}
|
||||
@@ -8,7 +8,6 @@
|
||||
#import "PSTCollectionView.h"
|
||||
#import "PSTCollectionViewItemKey.h"
|
||||
#import "PSTCollectionViewData.h"
|
||||
|
||||
#import <objc/runtime.h>
|
||||
|
||||
@interface PSTCollectionView ()
|
||||
@@ -126,18 +125,14 @@
|
||||
return self.representedElementCategory == PSTCollectionViewItemTypeCell;
|
||||
}
|
||||
|
||||
- (void) updateFrame {
|
||||
_frame = (CGRect){{_center.x - _size.width / 2, _center.y - _size.height / 2}, _size};
|
||||
}
|
||||
|
||||
- (void)setSize:(CGSize)size {
|
||||
_size = size;
|
||||
[self updateFrame];
|
||||
_frame = (CGRect){_frame.origin, _size};
|
||||
}
|
||||
|
||||
- (void)setCenter:(CGPoint)center {
|
||||
_center = center;
|
||||
[self updateFrame];
|
||||
_frame = (CGRect){{_center.x - _frame.size.width / 2, _center.y - _frame.size.height / 2}, _frame.size};
|
||||
}
|
||||
|
||||
- (void)setFrame:(CGRect)frame {
|
||||
@@ -301,7 +296,7 @@
|
||||
PSTCollectionViewLayoutAttributes *attr = [view.layoutAttributes copy];
|
||||
if (attr) {
|
||||
if (attr.isCell) {
|
||||
NSUInteger index = [update[@"oldModel"] globalIndexForItemAtIndexPath:[attr indexPath]];
|
||||
NSInteger index = [update[@"oldModel"] globalIndexForItemAtIndexPath:[attr indexPath]];
|
||||
if (index != NSNotFound) {
|
||||
[attr setIndexPath:[attr indexPath]];
|
||||
}
|
||||
@@ -316,9 +311,9 @@
|
||||
|
||||
for (PSTCollectionViewLayoutAttributes *attr in [collectionViewData layoutAttributesForElementsInRect:bounds]) {
|
||||
if (attr.isCell) {
|
||||
NSInteger index = (NSInteger)[collectionViewData globalIndexForItemAtIndexPath:attr.indexPath];
|
||||
NSInteger index = [collectionViewData globalIndexForItemAtIndexPath:attr.indexPath];
|
||||
|
||||
index = [update[@"newToOldIndexMap"][(NSUInteger)index] integerValue];
|
||||
index = [update[@"newToOldIndexMap"][index] intValue];
|
||||
if (index != NSNotFound) {
|
||||
PSTCollectionViewLayoutAttributes *finalAttrs = [attr copy];
|
||||
[finalAttrs setIndexPath:[update[@"oldModel"] indexPathForItemAtGlobalIndex:index]];
|
||||
@@ -333,12 +328,12 @@
|
||||
|
||||
if ([updateItem isSectionOperation]) {
|
||||
if (action == PSTCollectionUpdateActionReload) {
|
||||
[_deletedSectionsSet addIndex:(NSUInteger)[[updateItem indexPathBeforeUpdate] section]];
|
||||
[_insertedSectionsSet addIndex:(NSUInteger)[updateItem indexPathAfterUpdate].section];
|
||||
[_deletedSectionsSet addIndex:[[updateItem indexPathBeforeUpdate] section]];
|
||||
[_insertedSectionsSet addIndex:[updateItem indexPathAfterUpdate].section];
|
||||
}
|
||||
else {
|
||||
NSMutableIndexSet *indexSet = action == PSTCollectionUpdateActionInsert ? _insertedSectionsSet : _deletedSectionsSet;
|
||||
[indexSet addIndex:(NSUInteger)[updateItem indexPath].section];
|
||||
[indexSet addIndex:[updateItem indexPath].section];
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -370,7 +365,7 @@
|
||||
- (PSTCollectionViewLayoutAttributes *)initialLayoutAttributesForAppearingItemAtIndexPath:(NSIndexPath *)itemIndexPath {
|
||||
PSTCollectionViewLayoutAttributes *attrs = _initialAnimationLayoutAttributesDict[[PSTCollectionViewItemKey collectionItemKeyForCellWithIndexPath:itemIndexPath]];
|
||||
|
||||
if ([_insertedSectionsSet containsIndex:(NSUInteger)[itemIndexPath section]]) {
|
||||
if ([_insertedSectionsSet containsIndex:[itemIndexPath section]]) {
|
||||
attrs = [attrs copy];
|
||||
[attrs setAlpha:0];
|
||||
}
|
||||
@@ -380,7 +375,7 @@
|
||||
- (PSTCollectionViewLayoutAttributes *)finalLayoutAttributesForDisappearingItemAtIndexPath:(NSIndexPath *)itemIndexPath {
|
||||
PSTCollectionViewLayoutAttributes *attrs = _finalAnimationLayoutAttributesDict[[PSTCollectionViewItemKey collectionItemKeyForCellWithIndexPath:itemIndexPath]];
|
||||
|
||||
if ([_deletedSectionsSet containsIndex:(NSUInteger)[itemIndexPath section]]) {
|
||||
if ([_deletedSectionsSet containsIndex:[itemIndexPath section]]) {
|
||||
attrs = [attrs copy];
|
||||
[attrs setAlpha:0];
|
||||
}
|
||||
@@ -391,7 +386,7 @@
|
||||
- (PSTCollectionViewLayoutAttributes *)initialLayoutAttributesForInsertedSupplementaryElementOfKind:(NSString *)elementKind atIndexPath:(NSIndexPath *)elementIndexPath {
|
||||
PSTCollectionViewLayoutAttributes *attrs = _initialAnimationLayoutAttributesDict[[PSTCollectionViewItemKey collectionItemKeyForCellWithIndexPath:elementIndexPath]];
|
||||
|
||||
if ([_insertedSectionsSet containsIndex:(NSUInteger)[elementIndexPath section]]) {
|
||||
if ([_insertedSectionsSet containsIndex:[elementIndexPath section]]) {
|
||||
attrs = [attrs copy];
|
||||
[attrs setAlpha:0];
|
||||
}
|
||||
@@ -50,12 +50,12 @@
|
||||
}
|
||||
|
||||
- (CGRect)frameForItemAtIndexPath:(NSIndexPath *)indexPath {
|
||||
PSTGridLayoutSection *section = self.sections[(NSUInteger)indexPath.section];
|
||||
PSTGridLayoutSection *section = self.sections[indexPath.section];
|
||||
CGRect itemFrame;
|
||||
if (section.fixedItemSize) {
|
||||
itemFrame = (CGRect){.size=section.itemSize};
|
||||
}else {
|
||||
itemFrame = [section.items[(NSUInteger)indexPath.item] itemFrame];
|
||||
itemFrame = [section.items[indexPath.item] itemFrame];
|
||||
}
|
||||
return itemFrame;
|
||||
}
|
||||
@@ -73,7 +73,7 @@
|
||||
// UICollectionView is smart and lays out items like they would have been placed on a full row
|
||||
// So we need to calculate the "usedItemCount" with using the last item as a reference size.
|
||||
// This allows us to correctly justify-place the items in the grid.
|
||||
NSInteger usedItemCount = 0;
|
||||
NSUInteger usedItemCount = 0;
|
||||
NSInteger itemIndex = 0;
|
||||
CGFloat spacing = isHorizontal ? self.section.verticalInterstice : self.section.horizontalInterstice;
|
||||
// the last row should justify as if it is filled with more (invisible) items so that the whole
|
||||
@@ -82,7 +82,7 @@
|
||||
CGFloat nextItemSize;
|
||||
// first we need to find the size (width/height) of the next item to fit
|
||||
if (!self.fixedItemSize) {
|
||||
PSTGridLayoutItem *item = self.items[(NSUInteger)MIN(itemIndex, self.itemCount - 1)];
|
||||
PSTGridLayoutItem *item = self.items[MIN(itemIndex, self.itemCount - 1)];
|
||||
nextItemSize = isHorizontal ? item.itemFrame.size.height : item.itemFrame.size.width;
|
||||
}else {
|
||||
nextItemSize = isHorizontal ? self.section.itemSize.height : self.section.itemSize.width;
|
||||
@@ -128,7 +128,7 @@
|
||||
for (itemIndex = 0; itemIndex < self.itemCount; itemIndex++) {
|
||||
PSTGridLayoutItem *item = nil;
|
||||
if (!self.fixedItemSize) {
|
||||
item = self.items[(NSUInteger)itemIndex];
|
||||
item = self.items[itemIndex];
|
||||
itemFrame = [item itemFrame];
|
||||
}
|
||||
// depending on horizontal/vertical for an item size (height/width),
|
||||
@@ -186,7 +186,7 @@
|
||||
if (self.fixedItemSize) {
|
||||
return _itemCount;
|
||||
}else {
|
||||
return (NSInteger)self.items.count;
|
||||
return self.items.count;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -85,7 +85,7 @@
|
||||
BOOL finishCycle = itemIndex >= self.itemsCount;
|
||||
// TODO: fast path could even remove row creation and just calculate on the fly
|
||||
PSTGridLayoutItem *item = nil;
|
||||
if (!finishCycle) item = self.fixedItemSize ? nil : self.items[(NSUInteger)itemIndex];
|
||||
if (!finishCycle) item = self.fixedItemSize ? nil : self.items[itemIndex];
|
||||
|
||||
CGSize itemSize = self.fixedItemSize ? self.itemSize : item.itemFrame.size;
|
||||
CGFloat itemDimension = self.layoutInfo.horizontal ? itemSize.height : itemSize.width;
|
||||
@@ -105,12 +105,12 @@
|
||||
|
||||
if (self.layoutInfo.horizontal) {
|
||||
row.rowFrame = CGRectMake(sectionSize.width, self.sectionMargins.top, row.rowSize.width, row.rowSize.height);
|
||||
sectionSize.height = MAX(row.rowSize.height, sectionSize.height);
|
||||
sectionSize.height = fmax(row.rowSize.height, sectionSize.height);
|
||||
sectionSize.width += row.rowSize.width + (finishCycle ? 0 : self.horizontalInterstice);
|
||||
}else {
|
||||
row.rowFrame = CGRectMake(self.sectionMargins.left, sectionSize.height, row.rowSize.width, row.rowSize.height);
|
||||
sectionSize.height += row.rowSize.height + (finishCycle ? 0 : self.verticalInterstice);
|
||||
sectionSize.width = MAX(row.rowSize.width, sectionSize.width);
|
||||
sectionSize.width = fmax(row.rowSize.width, sectionSize.width);
|
||||
}
|
||||
}
|
||||
// add new rows until the section is fully laid out
|
||||
@@ -204,7 +204,7 @@
|
||||
}
|
||||
|
||||
- (NSInteger)itemsCount {
|
||||
return self.fixedItemSize ? _itemsCount : (NSInteger)self.items.count;
|
||||
return self.fixedItemSize ? _itemsCount : self.items.count;
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -93,7 +93,7 @@
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="camera-close-select.png" width="31" height="31"/>
|
||||
<image name="first-login-icon.png" width="152" height="152"/>
|
||||
<image name="first-login-icon.png" width="114" height="114"/>
|
||||
<image name="first-login-qq.png" width="24" height="24"/>
|
||||
<image name="first-login-sina.png" width="22" height="22"/>
|
||||
</resources>
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
[button setBackgroundColor:[UIColor redColor]];
|
||||
button.layer.cornerRadius = 5.0;
|
||||
button.layer.masksToBounds = YES;
|
||||
button.frame = CGRectMake(20, 25, kScreenWidth-40, 50);
|
||||
button.frame = CGRectMake(20, 25, kScreenWidth-40, 40);
|
||||
[view addSubview:button];
|
||||
return view;
|
||||
}
|
||||
@@ -67,7 +67,7 @@
|
||||
static NSString* cellIdentifier = @"cell";
|
||||
UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
|
||||
if (!cell) {
|
||||
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
|
||||
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:cellIdentifier];
|
||||
}
|
||||
switch (indexPath.row) {
|
||||
case 0:
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
@property (weak, nonatomic) IBOutlet UIButton *shareBtn;
|
||||
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *contentHeight;
|
||||
|
||||
@property (weak, nonatomic) IBOutlet UIButton *imageBtnClick;
|
||||
- (IBAction)imageBtnClick:(id)sender;
|
||||
|
||||
|
||||
- (IBAction)goodBtnClick:(id)sender;
|
||||
|
||||
@@ -8,12 +8,19 @@
|
||||
|
||||
#import "NoteTableViewCell.h"
|
||||
#import "NoteViewModel.h"
|
||||
#import "AppDelegate.h"
|
||||
#import "MWPhotoBrowser.h"
|
||||
@interface NoteTableViewCell()<MWPhotoBrowserDelegate>
|
||||
@end
|
||||
@implementation NoteTableViewCell
|
||||
|
||||
{
|
||||
Text_Image* _text_image;
|
||||
}
|
||||
- (void)awakeFromNib {
|
||||
// Initialization code
|
||||
_contentLabel.font = [UIFont appFontOfSize:14.0];
|
||||
_contentTextView.font = [UIFont appFontOfSize:14.0];
|
||||
_contentTextView.scrollEnabled = NO;
|
||||
_timeLabel.font = [UIFont appFontOfSize:14.0];
|
||||
|
||||
_avatar.layer.cornerRadius = _avatar.frame.size.width/2;
|
||||
@@ -40,6 +47,7 @@
|
||||
}
|
||||
-(void)setText_Image:(Text_Image *)text_image
|
||||
{
|
||||
_text_image = text_image;
|
||||
CGSize imageSize = _contentImgView.frame.size;
|
||||
UIGraphicsBeginImageContextWithOptions(imageSize, 0, [UIScreen mainScreen].scale);
|
||||
[[UIColor colorWithWhite:0.6 alpha:0.5] set];
|
||||
@@ -54,7 +62,7 @@
|
||||
CGSize size = CGSizeMake(300*[Ash_UIUtil currentScreenSizeRate],MAXFLOAT);
|
||||
|
||||
CGRect labelRect = [text_image.content boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName:font} context:nil];
|
||||
_contentHeight.constant = labelRect.size.height+10;
|
||||
_contentHeight.constant = labelRect.size.height+25;
|
||||
_contentTextView.text = text_image.content;
|
||||
[_contentImgView sd_setImageWithURL:text_image.imageUrl placeholderImage:pressedColorImg];
|
||||
|
||||
@@ -75,4 +83,40 @@
|
||||
}
|
||||
return imageHeight+labelRect.size.height+95;
|
||||
}
|
||||
- (IBAction)imageBtnClick:(id)sender {
|
||||
|
||||
MWPhotoBrowser *pBrowser = [[MWPhotoBrowser alloc]initWithDelegate:self];
|
||||
//是否显示分享按钮
|
||||
pBrowser.displayActionButton = YES;
|
||||
//左右分页切换
|
||||
pBrowser.displayNavArrows = YES;
|
||||
//是否显示选择按钮
|
||||
pBrowser.displaySelectionButtons = NO;
|
||||
//是否显示条件控制控件
|
||||
pBrowser.alwaysShowControls = YES;
|
||||
//是否全屏
|
||||
pBrowser.zoomPhotosToFill = YES;
|
||||
|
||||
//允许使用网络查看所有图片
|
||||
pBrowser.enableGrid = YES;
|
||||
//是否第一张
|
||||
pBrowser.startOnGrid = YES;
|
||||
pBrowser.enableSwipeToDismiss = YES;
|
||||
[pBrowser showNextPhotoAnimated:YES];
|
||||
[pBrowser showPreviousPhotoAnimated:YES];
|
||||
[pBrowser setCurrentPhotoIndex:0];
|
||||
[[AppDelegate visibleViewController].navigationController pushViewController:pBrowser animated:YES];
|
||||
}
|
||||
#pragma mark - MWPhotoBrowserDelegate
|
||||
-(NSUInteger)numberOfPhotosInPhotoBrowser:(MWPhotoBrowser *)photoBrowser
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
-(id<MWPhoto>)photoBrowser:(MWPhotoBrowser *)photoBrowser photoAtIndex:(NSUInteger)index
|
||||
{
|
||||
MWPhoto *photo = [[MWPhoto alloc]initWithURL:_text_image.imageUrl];
|
||||
return photo;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
</connections>
|
||||
</button>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="p9l-PS-2tC">
|
||||
<rect key="frame" x="8" y="69" width="304" height="112"/>
|
||||
<rect key="frame" x="8" y="61" width="304" height="120"/>
|
||||
</imageView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" " textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="kO5-Uc-AhU">
|
||||
<rect key="frame" x="112" y="12" width="200" height="21"/>
|
||||
@@ -111,10 +111,13 @@
|
||||
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
|
||||
</textView>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="kWq-q0-MPl">
|
||||
<rect key="frame" x="8" y="69" width="304" height="112"/>
|
||||
<rect key="frame" x="8" y="61" width="304" height="120"/>
|
||||
<state key="normal">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="imageBtnClick:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="Fbt-xq-94q"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<constraints>
|
||||
@@ -136,7 +139,7 @@
|
||||
<constraint firstItem="kWq-q0-MPl" firstAttribute="height" secondItem="p9l-PS-2tC" secondAttribute="height" id="Zgr-1g-SIR"/>
|
||||
<constraint firstItem="kWq-q0-MPl" firstAttribute="centerX" secondItem="p9l-PS-2tC" secondAttribute="centerX" id="b9R-Qn-j79"/>
|
||||
<constraint firstAttribute="trailingMargin" secondItem="2Rh-LI-LRT" secondAttribute="trailing" constant="4" id="ble-e8-Va3"/>
|
||||
<constraint firstItem="p9l-PS-2tC" firstAttribute="top" secondItem="2Rh-LI-LRT" secondAttribute="bottom" constant="8" id="dUD-nk-z5D"/>
|
||||
<constraint firstItem="p9l-PS-2tC" firstAttribute="top" secondItem="2Rh-LI-LRT" secondAttribute="bottom" id="dUD-nk-z5D"/>
|
||||
<constraint firstItem="kO5-Uc-AhU" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="topMargin" constant="4" id="fRB-tZ-fsb"/>
|
||||
<constraint firstItem="kWq-q0-MPl" firstAttribute="width" secondItem="p9l-PS-2tC" secondAttribute="width" id="g4i-cb-kjD"/>
|
||||
<constraint firstItem="p9l-PS-2tC" firstAttribute="trailing" secondItem="H2p-sc-9uM" secondAttribute="trailingMargin" id="hsb-xb-XRe"/>
|
||||
@@ -157,7 +160,6 @@
|
||||
<outlet property="contentImgView" destination="p9l-PS-2tC" id="gjB-iJ-KAX"/>
|
||||
<outlet property="contentTextView" destination="2Rh-LI-LRT" id="w5j-ni-kam"/>
|
||||
<outlet property="goodBtn" destination="xeW-Yw-x4V" id="0LE-Gu-6C1"/>
|
||||
<outlet property="imageBtnClick" destination="kWq-q0-MPl" id="Gga-2K-Ksh"/>
|
||||
<outlet property="shareBtn" destination="DAR-mT-RbS" id="fGW-sh-aV3"/>
|
||||
<outlet property="timeLabel" destination="kO5-Uc-AhU" id="jky-Wu-oYB"/>
|
||||
<outlet property="userName" destination="Zq3-YP-dwB" id="Ggo-yh-zdb"/>
|
||||
|
||||
@@ -11,4 +11,4 @@ pod 'Godzippa'
|
||||
pod 'EGOCache'
|
||||
pod 'SecureUDID'
|
||||
pod 'MJRefresh'
|
||||
pod 'MWPhotoBrowser'
|
||||
#pod 'MWPhotoBrowser'
|
||||
@@ -20,7 +20,6 @@ PODS:
|
||||
- AFNetworking/UIKit (2.5.2):
|
||||
- AFNetworking/NSURLConnection
|
||||
- AFNetworking/NSURLSession
|
||||
- DACircularProgress (2.2.0)
|
||||
- DTCoreText (1.6.15):
|
||||
- DTFoundation/Core (~> 1.7.5)
|
||||
- DTFoundation/DTAnimatedGIF (~> 1.7.5)
|
||||
@@ -39,12 +38,6 @@ PODS:
|
||||
- Mantle/extobjc (1.5.4)
|
||||
- MBProgressHUD (0.9.1)
|
||||
- MJRefresh (1.4.3)
|
||||
- MWPhotoBrowser (1.4.1):
|
||||
- DACircularProgress
|
||||
- MBProgressHUD (~> 0.8)
|
||||
- PSTCollectionView (~> 1.2)
|
||||
- SDWebImage (~> 3.7)
|
||||
- PSTCollectionView (1.2.3)
|
||||
- Reachability (3.2)
|
||||
- SBJson (4.0.1)
|
||||
- SDWebImage (3.7.2):
|
||||
@@ -61,7 +54,6 @@ DEPENDENCIES:
|
||||
- Mantle
|
||||
- MBProgressHUD
|
||||
- MJRefresh
|
||||
- MWPhotoBrowser
|
||||
- Reachability
|
||||
- SBJson
|
||||
- SDWebImage
|
||||
@@ -70,7 +62,6 @@ DEPENDENCIES:
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
AFNetworking: fefbce9660acb17f48ae0011292d4da0f457bf36
|
||||
DACircularProgress: 0f92b77239d5f3c612fc66185e2998391ac8e054
|
||||
DTCoreText: 13ce06e63204a3b47c9db974e3d9be982bb0b1ed
|
||||
DTFoundation: 1d28080c20c3da041706545363f8238ab53a6204
|
||||
EGOCache: e7bdb2bf15a2ad23bf6c67c664c9fc3694652482
|
||||
@@ -78,8 +69,6 @@ SPEC CHECKSUMS:
|
||||
Mantle: 60acd0cd363e27d945bda0a6b8e90577112d28f3
|
||||
MBProgressHUD: c47f2c166c126cf2ce36498d80f33e754d4e93ad
|
||||
MJRefresh: 6eb09aefa9622f0908fdf42d63c2070478c04c42
|
||||
MWPhotoBrowser: 2531e682860d62b8a7ba8659de02eb9040e431e5
|
||||
PSTCollectionView: 6749df92885353521f55279a7ce2b293762e2be4
|
||||
Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96
|
||||
SBJson: 68f16f446bd6047dc3dd1ec4919a468c2cd7fedd
|
||||
SDWebImage: 71b7cdc1d1721d6a82ed62889030225f2c249e29
|
||||
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
|
||||

|
||||
|
||||
## 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 +0,0 @@
|
||||
../../../MWPhotoBrowser/MWPhotoBrowser/Classes/MWCaptionView.h
|
||||
@@ -1 +0,0 @@
|
||||
../../../MWPhotoBrowser/MWPhotoBrowser/Classes/MWCommon.h
|
||||
@@ -1 +0,0 @@
|
||||
../../../MWPhotoBrowser/MWPhotoBrowser/Classes/MWGridCell.h
|
||||
@@ -1 +0,0 @@
|
||||
../../../MWPhotoBrowser/MWPhotoBrowser/Classes/MWGridViewController.h
|
||||
@@ -1 +0,0 @@
|
||||
../../../MWPhotoBrowser/MWPhotoBrowser/Classes/MWPhoto.h
|
||||
@@ -1 +0,0 @@
|
||||
../../../MWPhotoBrowser/MWPhotoBrowser/Classes/MWPhotoBrowser.h
|
||||