├── README.md └── SelwynFormDemo ├── SelwynForm ├── MBProgressHUD │ ├── .svn │ │ ├── all-wcprops │ │ ├── entries │ │ ├── prop-base │ │ │ ├── MBProgressHUD.h.svn-base │ │ │ └── MBProgressHUD.m.svn-base │ │ └── text-base │ │ │ ├── Factory.h.svn-base │ │ │ ├── Factory.m.svn-base │ │ │ ├── MBProgressHUD+Add.h.svn-base │ │ │ ├── MBProgressHUD+Add.m.svn-base │ │ │ ├── MBProgressHUD.h.svn-base │ │ │ ├── MBProgressHUD.m.svn-base │ │ │ └── MacroDef.h.svn-base │ ├── Factory.h │ ├── Factory.m │ ├── MBProgressHUD+Add.h │ ├── MBProgressHUD+Add.m │ ├── MBProgressHUD.h │ ├── MBProgressHUD.m │ └── MacroDef.h ├── MWPhotoBrowser │ ├── .svn │ │ ├── all-wcprops │ │ └── entries │ ├── Classes │ │ ├── .svn │ │ │ ├── all-wcprops │ │ │ ├── entries │ │ │ └── text-base │ │ │ │ ├── MWCaptionView.h.svn-base │ │ │ │ ├── MWCaptionView.m.svn-base │ │ │ │ ├── MWCommon.h.svn-base │ │ │ │ ├── MWGridCell.h.svn-base │ │ │ │ ├── MWGridCell.m.svn-base │ │ │ │ ├── MWGridViewController.h.svn-base │ │ │ │ ├── MWGridViewController.m.svn-base │ │ │ │ ├── MWPhoto.h.svn-base │ │ │ │ ├── MWPhoto.m.svn-base │ │ │ │ ├── MWPhotoBrowser.h.svn-base │ │ │ │ ├── MWPhotoBrowser.m.svn-base │ │ │ │ ├── MWPhotoBrowserPrivate.h.svn-base │ │ │ │ ├── MWPhotoProtocol.h.svn-base │ │ │ │ ├── MWTapDetectingImageView.h.svn-base │ │ │ │ ├── MWTapDetectingImageView.m.svn-base │ │ │ │ ├── MWTapDetectingView.h.svn-base │ │ │ │ ├── MWTapDetectingView.m.svn-base │ │ │ │ ├── MWZoomingScrollView.h.svn-base │ │ │ │ └── MWZoomingScrollView.m.svn-base │ │ ├── MWCaptionView.h │ │ ├── MWCaptionView.m │ │ ├── MWCommon.h │ │ ├── MWGridCell.h │ │ ├── MWGridCell.m │ │ ├── MWGridViewController.h │ │ ├── MWGridViewController.m │ │ ├── MWPhoto.h │ │ ├── MWPhoto.m │ │ ├── MWPhotoBrowser.h │ │ ├── MWPhotoBrowser.m │ │ ├── MWPhotoBrowserPrivate.h │ │ ├── MWPhotoProtocol.h │ │ ├── MWTapDetectingImageView.h │ │ ├── MWTapDetectingImageView.m │ │ ├── MWTapDetectingView.h │ │ ├── MWTapDetectingView.m │ │ ├── MWZoomingScrollView.h │ │ └── MWZoomingScrollView.m │ ├── Libraries │ │ ├── .svn │ │ │ ├── all-wcprops │ │ │ └── entries │ │ ├── DACircularProgress │ │ │ ├── .svn │ │ │ │ ├── all-wcprops │ │ │ │ ├── entries │ │ │ │ ├── prop-base │ │ │ │ │ ├── DACircularProgressView.h.svn-base │ │ │ │ │ └── DACircularProgressView.m.svn-base │ │ │ │ └── text-base │ │ │ │ │ ├── DACircularProgressView.h.svn-base │ │ │ │ │ └── DACircularProgressView.m.svn-base │ │ │ ├── DACircularProgressView.h │ │ │ └── DACircularProgressView.m │ │ ├── EMSDWebImage │ │ │ ├── .svn │ │ │ │ ├── all-wcprops │ │ │ │ ├── entries │ │ │ │ ├── prop-base │ │ │ │ │ ├── EMSDImageCache.h.svn-base │ │ │ │ │ ├── EMSDImageCache.m.svn-base │ │ │ │ │ ├── EMSDWebImageCompat.h.svn-base │ │ │ │ │ ├── EMSDWebImageCompat.m.svn-base │ │ │ │ │ ├── EMSDWebImageDecoder.h.svn-base │ │ │ │ │ ├── EMSDWebImageDecoder.m.svn-base │ │ │ │ │ ├── EMSDWebImageDownloader.h.svn-base │ │ │ │ │ ├── EMSDWebImageDownloader.m.svn-base │ │ │ │ │ ├── EMSDWebImageDownloaderOperation.h.svn-base │ │ │ │ │ ├── EMSDWebImageDownloaderOperation.m.svn-base │ │ │ │ │ ├── EMSDWebImageManager.h.svn-base │ │ │ │ │ ├── EMSDWebImageManager.m.svn-base │ │ │ │ │ ├── EMSDWebImageOperation.h.svn-base │ │ │ │ │ ├── EMSDWebImagePrefetcher.h.svn-base │ │ │ │ │ ├── EMSDWebImagePrefetcher.m.svn-base │ │ │ │ │ ├── MKAnnotationView+EMWebCache.h.svn-base │ │ │ │ │ ├── MKAnnotationView+EMWebCache.m.svn-base │ │ │ │ │ ├── NSData+EMImageContentType.h.svn-base │ │ │ │ │ ├── NSData+EMImageContentType.m.svn-base │ │ │ │ │ ├── UIButton+EMWebCache.h.svn-base │ │ │ │ │ ├── UIButton+EMWebCache.m.svn-base │ │ │ │ │ ├── UIImage+EMGIF.h.svn-base │ │ │ │ │ ├── UIImage+EMGIF.m.svn-base │ │ │ │ │ ├── UIImage+EMMultiFormat.h.svn-base │ │ │ │ │ ├── UIImage+EMMultiFormat.m.svn-base │ │ │ │ │ ├── UIImage+EMWebP.h.svn-base │ │ │ │ │ ├── UIImage+EMWebP.m.svn-base │ │ │ │ │ ├── UIImageView+EMHighlightedWebCache.h.svn-base │ │ │ │ │ ├── UIImageView+EMHighlightedWebCache.m.svn-base │ │ │ │ │ ├── UIImageView+EMWebCache.h.svn-base │ │ │ │ │ ├── UIImageView+EMWebCache.m.svn-base │ │ │ │ │ ├── UIView+EMWebCacheOperation.h.svn-base │ │ │ │ │ └── UIView+EMWebCacheOperation.m.svn-base │ │ │ │ └── text-base │ │ │ │ │ ├── EMSDImageCache.h.svn-base │ │ │ │ │ ├── EMSDImageCache.m.svn-base │ │ │ │ │ ├── EMSDWebImageCompat.h.svn-base │ │ │ │ │ ├── EMSDWebImageCompat.m.svn-base │ │ │ │ │ ├── EMSDWebImageDecoder.h.svn-base │ │ │ │ │ ├── EMSDWebImageDecoder.m.svn-base │ │ │ │ │ ├── EMSDWebImageDownloader.h.svn-base │ │ │ │ │ ├── EMSDWebImageDownloader.m.svn-base │ │ │ │ │ ├── EMSDWebImageDownloaderOperation.h.svn-base │ │ │ │ │ ├── EMSDWebImageDownloaderOperation.m.svn-base │ │ │ │ │ ├── EMSDWebImageManager.h.svn-base │ │ │ │ │ ├── EMSDWebImageManager.m.svn-base │ │ │ │ │ ├── EMSDWebImageOperation.h.svn-base │ │ │ │ │ ├── EMSDWebImagePrefetcher.h.svn-base │ │ │ │ │ ├── EMSDWebImagePrefetcher.m.svn-base │ │ │ │ │ ├── MKAnnotationView+EMWebCache.h.svn-base │ │ │ │ │ ├── MKAnnotationView+EMWebCache.m.svn-base │ │ │ │ │ ├── NSData+EMImageContentType.h.svn-base │ │ │ │ │ ├── NSData+EMImageContentType.m.svn-base │ │ │ │ │ ├── UIButton+EMWebCache.h.svn-base │ │ │ │ │ ├── UIButton+EMWebCache.m.svn-base │ │ │ │ │ ├── UIImage+EMGIF.h.svn-base │ │ │ │ │ ├── UIImage+EMGIF.m.svn-base │ │ │ │ │ ├── UIImage+EMMultiFormat.h.svn-base │ │ │ │ │ ├── UIImage+EMMultiFormat.m.svn-base │ │ │ │ │ ├── UIImage+EMWebP.h.svn-base │ │ │ │ │ ├── UIImage+EMWebP.m.svn-base │ │ │ │ │ ├── UIImageView+EMHighlightedWebCache.h.svn-base │ │ │ │ │ ├── UIImageView+EMHighlightedWebCache.m.svn-base │ │ │ │ │ ├── UIImageView+EMWebCache.h.svn-base │ │ │ │ │ ├── UIImageView+EMWebCache.m.svn-base │ │ │ │ │ ├── UIView+EMWebCacheOperation.h.svn-base │ │ │ │ │ └── UIView+EMWebCacheOperation.m.svn-base │ │ │ ├── EMSDImageCache.h │ │ │ ├── EMSDImageCache.m │ │ │ ├── EMSDWebImageCompat.h │ │ │ ├── EMSDWebImageCompat.m │ │ │ ├── EMSDWebImageDecoder.h │ │ │ ├── EMSDWebImageDecoder.m │ │ │ ├── EMSDWebImageDownloader.h │ │ │ ├── EMSDWebImageDownloader.m │ │ │ ├── EMSDWebImageDownloaderOperation.h │ │ │ ├── EMSDWebImageDownloaderOperation.m │ │ │ ├── EMSDWebImageManager.h │ │ │ ├── EMSDWebImageManager.m │ │ │ ├── EMSDWebImageOperation.h │ │ │ ├── EMSDWebImagePrefetcher.h │ │ │ ├── EMSDWebImagePrefetcher.m │ │ │ ├── MKAnnotationView+EMWebCache.h │ │ │ ├── MKAnnotationView+EMWebCache.m │ │ │ ├── NSData+EMImageContentType.h │ │ │ ├── NSData+EMImageContentType.m │ │ │ ├── UIButton+EMWebCache.h │ │ │ ├── UIButton+EMWebCache.m │ │ │ ├── UIImage+EMGIF.h │ │ │ ├── UIImage+EMGIF.m │ │ │ ├── UIImage+EMMultiFormat.h │ │ │ ├── UIImage+EMMultiFormat.m │ │ │ ├── UIImage+EMWebP.h │ │ │ ├── UIImage+EMWebP.m │ │ │ ├── UIImageView+EMHighlightedWebCache.h │ │ │ ├── UIImageView+EMHighlightedWebCache.m │ │ │ ├── UIImageView+EMWebCache.h │ │ │ ├── UIImageView+EMWebCache.m │ │ │ ├── UIView+EMWebCacheOperation.h │ │ │ └── UIView+EMWebCacheOperation.m │ │ └── PSTCollectionView │ │ │ ├── .svn │ │ │ ├── all-wcprops │ │ │ ├── entries │ │ │ ├── prop-base │ │ │ │ ├── NSIndexPath+PSTCollectionViewAdditions.h.svn-base │ │ │ │ ├── NSIndexPath+PSTCollectionViewAdditions.m.svn-base │ │ │ │ ├── PSTCollectionView.h.svn-base │ │ │ │ ├── PSTCollectionView.m.svn-base │ │ │ │ ├── PSTCollectionViewCell.h.svn-base │ │ │ │ ├── PSTCollectionViewCell.m.svn-base │ │ │ │ ├── PSTCollectionViewCommon.h.svn-base │ │ │ │ ├── PSTCollectionViewController.h.svn-base │ │ │ │ ├── PSTCollectionViewController.m.svn-base │ │ │ │ ├── PSTCollectionViewData.h.svn-base │ │ │ │ ├── PSTCollectionViewData.m.svn-base │ │ │ │ ├── PSTCollectionViewFlowLayout.h.svn-base │ │ │ │ ├── PSTCollectionViewFlowLayout.m.svn-base │ │ │ │ ├── PSTCollectionViewItemKey.h.svn-base │ │ │ │ ├── PSTCollectionViewItemKey.m.svn-base │ │ │ │ ├── PSTCollectionViewLayout+Internals.h.svn-base │ │ │ │ ├── PSTCollectionViewLayout.h.svn-base │ │ │ │ ├── PSTCollectionViewLayout.m.svn-base │ │ │ │ ├── PSTCollectionViewUpdateItem.h.svn-base │ │ │ │ ├── PSTCollectionViewUpdateItem.m.svn-base │ │ │ │ ├── PSTGridLayoutInfo.h.svn-base │ │ │ │ ├── PSTGridLayoutInfo.m.svn-base │ │ │ │ ├── PSTGridLayoutItem.h.svn-base │ │ │ │ ├── PSTGridLayoutItem.m.svn-base │ │ │ │ ├── PSTGridLayoutRow.h.svn-base │ │ │ │ ├── PSTGridLayoutRow.m.svn-base │ │ │ │ ├── PSTGridLayoutSection.h.svn-base │ │ │ │ └── PSTGridLayoutSection.m.svn-base │ │ │ └── text-base │ │ │ │ ├── NSIndexPath+PSTCollectionViewAdditions.h.svn-base │ │ │ │ ├── NSIndexPath+PSTCollectionViewAdditions.m.svn-base │ │ │ │ ├── PSTCollectionView.h.svn-base │ │ │ │ ├── PSTCollectionView.m.svn-base │ │ │ │ ├── PSTCollectionViewCell.h.svn-base │ │ │ │ ├── PSTCollectionViewCell.m.svn-base │ │ │ │ ├── PSTCollectionViewCommon.h.svn-base │ │ │ │ ├── PSTCollectionViewController.h.svn-base │ │ │ │ ├── PSTCollectionViewController.m.svn-base │ │ │ │ ├── PSTCollectionViewData.h.svn-base │ │ │ │ ├── PSTCollectionViewData.m.svn-base │ │ │ │ ├── PSTCollectionViewFlowLayout.h.svn-base │ │ │ │ ├── PSTCollectionViewFlowLayout.m.svn-base │ │ │ │ ├── PSTCollectionViewItemKey.h.svn-base │ │ │ │ ├── PSTCollectionViewItemKey.m.svn-base │ │ │ │ ├── PSTCollectionViewLayout+Internals.h.svn-base │ │ │ │ ├── PSTCollectionViewLayout.h.svn-base │ │ │ │ ├── PSTCollectionViewLayout.m.svn-base │ │ │ │ ├── PSTCollectionViewUpdateItem.h.svn-base │ │ │ │ ├── PSTCollectionViewUpdateItem.m.svn-base │ │ │ │ ├── PSTGridLayoutInfo.h.svn-base │ │ │ │ ├── PSTGridLayoutInfo.m.svn-base │ │ │ │ ├── PSTGridLayoutItem.h.svn-base │ │ │ │ ├── PSTGridLayoutItem.m.svn-base │ │ │ │ ├── PSTGridLayoutRow.h.svn-base │ │ │ │ ├── PSTGridLayoutRow.m.svn-base │ │ │ │ ├── PSTGridLayoutSection.h.svn-base │ │ │ │ └── PSTGridLayoutSection.m.svn-base │ │ │ ├── NSIndexPath+PSTCollectionViewAdditions.h │ │ │ ├── NSIndexPath+PSTCollectionViewAdditions.m │ │ │ ├── PSTCollectionView.h │ │ │ ├── PSTCollectionView.m │ │ │ ├── PSTCollectionViewCell.h │ │ │ ├── PSTCollectionViewCell.m │ │ │ ├── PSTCollectionViewCommon.h │ │ │ ├── PSTCollectionViewController.h │ │ │ ├── PSTCollectionViewController.m │ │ │ ├── PSTCollectionViewData.h │ │ │ ├── PSTCollectionViewData.m │ │ │ ├── PSTCollectionViewFlowLayout.h │ │ │ ├── PSTCollectionViewFlowLayout.m │ │ │ ├── PSTCollectionViewItemKey.h │ │ │ ├── PSTCollectionViewItemKey.m │ │ │ ├── PSTCollectionViewLayout+Internals.h │ │ │ ├── PSTCollectionViewLayout.h │ │ │ ├── PSTCollectionViewLayout.m │ │ │ ├── PSTCollectionViewUpdateItem.h │ │ │ ├── PSTCollectionViewUpdateItem.m │ │ │ ├── PSTGridLayoutInfo.h │ │ │ ├── PSTGridLayoutInfo.m │ │ │ ├── PSTGridLayoutItem.h │ │ │ ├── PSTGridLayoutItem.m │ │ │ ├── PSTGridLayoutRow.h │ │ │ ├── PSTGridLayoutRow.m │ │ │ ├── PSTGridLayoutSection.h │ │ │ └── PSTGridLayoutSection.m │ └── MWPhotoBrowser.bundle │ │ ├── .svn │ │ ├── all-wcprops │ │ └── entries │ │ └── images │ │ ├── .svn │ │ ├── all-wcprops │ │ ├── entries │ │ ├── prop-base │ │ │ ├── Checkmark.png.svn-base │ │ │ ├── Checkmark@2x.png.svn-base │ │ │ ├── ImageError.png.svn-base │ │ │ ├── ImageError@2x.png.svn-base │ │ │ ├── ImageSelectedOff.png.svn-base │ │ │ ├── ImageSelectedOff@2x.png.svn-base │ │ │ ├── ImageSelectedOn.png.svn-base │ │ │ ├── ImageSelectedOn@2x.png.svn-base │ │ │ ├── ImageSelectedSmallOff.png.svn-base │ │ │ ├── ImageSelectedSmallOff@2x.png.svn-base │ │ │ ├── ImageSelectedSmallOn.png.svn-base │ │ │ ├── ImageSelectedSmallOn@2x.png.svn-base │ │ │ ├── UIBarButtonItemArrowLeft.png.svn-base │ │ │ ├── UIBarButtonItemArrowLeft@2x.png.svn-base │ │ │ ├── UIBarButtonItemArrowOutlineLeft.png.svn-base │ │ │ ├── UIBarButtonItemArrowOutlineLeft@2x.png.svn-base │ │ │ ├── UIBarButtonItemArrowOutlineRight.png.svn-base │ │ │ ├── UIBarButtonItemArrowOutlineRight@2x.png.svn-base │ │ │ ├── UIBarButtonItemArrowRight.png.svn-base │ │ │ ├── UIBarButtonItemArrowRight@2x.png.svn-base │ │ │ ├── UIBarButtonItemGrid.png.svn-base │ │ │ ├── UIBarButtonItemGrid@2x.png.svn-base │ │ │ ├── UIBarButtonItemGridiOS6.png.svn-base │ │ │ └── UIBarButtonItemGridiOS6@2x.png.svn-base │ │ └── text-base │ │ │ ├── Checkmark.png.svn-base │ │ │ ├── Checkmark@2x.png.svn-base │ │ │ ├── ImageError.png.svn-base │ │ │ ├── ImageError@2x.png.svn-base │ │ │ ├── ImageSelectedOff.png.svn-base │ │ │ ├── ImageSelectedOff@2x.png.svn-base │ │ │ ├── ImageSelectedOn.png.svn-base │ │ │ ├── ImageSelectedOn@2x.png.svn-base │ │ │ ├── ImageSelectedSmallOff.png.svn-base │ │ │ ├── ImageSelectedSmallOff@2x.png.svn-base │ │ │ ├── ImageSelectedSmallOn.png.svn-base │ │ │ ├── ImageSelectedSmallOn@2x.png.svn-base │ │ │ ├── UIBarButtonItemArrowLeft.png.svn-base │ │ │ ├── UIBarButtonItemArrowLeft@2x.png.svn-base │ │ │ ├── UIBarButtonItemArrowOutlineLeft.png.svn-base │ │ │ ├── UIBarButtonItemArrowOutlineLeft@2x.png.svn-base │ │ │ ├── UIBarButtonItemArrowOutlineRight.png.svn-base │ │ │ ├── UIBarButtonItemArrowOutlineRight@2x.png.svn-base │ │ │ ├── UIBarButtonItemArrowRight.png.svn-base │ │ │ ├── UIBarButtonItemArrowRight@2x.png.svn-base │ │ │ ├── UIBarButtonItemGrid.png.svn-base │ │ │ ├── UIBarButtonItemGrid@2x.png.svn-base │ │ │ ├── UIBarButtonItemGridiOS6.png.svn-base │ │ │ └── UIBarButtonItemGridiOS6@2x.png.svn-base │ │ ├── Checkmark.png │ │ ├── Checkmark@2x.png │ │ ├── ImageError.png │ │ ├── ImageError@2x.png │ │ ├── ImageSelectedOff.png │ │ ├── ImageSelectedOff@2x.png │ │ ├── ImageSelectedOn.png │ │ ├── ImageSelectedOn@2x.png │ │ ├── ImageSelectedSmallOff.png │ │ ├── ImageSelectedSmallOff@2x.png │ │ ├── ImageSelectedSmallOn.png │ │ ├── ImageSelectedSmallOn@2x.png │ │ ├── UIBarButtonItemArrowLeft.png │ │ ├── UIBarButtonItemArrowLeft@2x.png │ │ ├── UIBarButtonItemArrowOutlineLeft.png │ │ ├── UIBarButtonItemArrowOutlineLeft@2x.png │ │ ├── UIBarButtonItemArrowOutlineRight.png │ │ ├── UIBarButtonItemArrowOutlineRight@2x.png │ │ ├── UIBarButtonItemArrowRight.png │ │ ├── UIBarButtonItemArrowRight@2x.png │ │ ├── UIBarButtonItemGrid.png │ │ ├── UIBarButtonItemGrid@2x.png │ │ ├── UIBarButtonItemGridiOS6.png │ │ └── UIBarButtonItemGridiOS6@2x.png ├── SelwynExpandableTextView.h ├── SelwynExpandableTextView.m ├── SelwynFormBaseViewController.h ├── SelwynFormBaseViewController.m ├── SelwynFormCell │ ├── SelwynFormAttachmentTableViewCell │ │ ├── SelwynAttaCollectionViewCell.h │ │ ├── SelwynAttaCollectionViewCell.m │ │ ├── SelwynFormAttachmentTableViewCell.h │ │ └── SelwynFormAttachmentTableViewCell.m │ ├── SelwynFormBaseTableViewCell.h │ ├── SelwynFormBaseTableViewCell.m │ ├── SelwynFormInputTableViewCell.h │ ├── SelwynFormInputTableViewCell.m │ ├── SelwynFormSelectTableViewCell.h │ ├── SelwynFormSelectTableViewCell.m │ ├── SelwynFormTextViewInputTableViewCell.h │ └── SelwynFormTextViewInputTableViewCell.m ├── SelwynFormConfigs │ ├── SelwynFormHandle.h │ ├── SelwynFormHandle.m │ ├── SelwynFormItem.h │ ├── SelwynFormItem.m │ ├── SelwynFormSectionItem.h │ └── SelwynFormSectionItem.m └── TZImagePickerController │ ├── .svn │ ├── all-wcprops │ ├── entries │ ├── prop-base │ │ ├── UIView+Layout.h.svn-base │ │ └── UIView+Layout.m.svn-base │ └── text-base │ │ ├── TZAssetCell.h.svn-base │ │ ├── TZAssetCell.m.svn-base │ │ ├── TZAssetModel.h.svn-base │ │ ├── TZAssetModel.m.svn-base │ │ ├── TZImageManager.h.svn-base │ │ ├── TZImageManager.m.svn-base │ │ ├── TZImagePickerController.h.svn-base │ │ ├── TZImagePickerController.m.svn-base │ │ ├── TZPhotoPickerController.h.svn-base │ │ ├── TZPhotoPickerController.m.svn-base │ │ ├── TZPhotoPreviewCell.h.svn-base │ │ ├── TZPhotoPreviewCell.m.svn-base │ │ ├── TZPhotoPreviewController.h.svn-base │ │ ├── TZPhotoPreviewController.m.svn-base │ │ ├── TZVideoPlayerController.h.svn-base │ │ ├── TZVideoPlayerController.m.svn-base │ │ ├── UIView+Layout.h.svn-base │ │ └── UIView+Layout.m.svn-base │ ├── TZAssetCell.h │ ├── TZAssetCell.m │ ├── TZAssetModel.h │ ├── TZAssetModel.m │ ├── TZImageManager.h │ ├── TZImageManager.m │ ├── TZImagePickerController.bundle │ ├── .svn │ │ ├── all-wcprops │ │ ├── entries │ │ ├── prop-base │ │ │ ├── MMVideoPreviewPlay@2x.png.svn-base │ │ │ ├── MMVideoPreviewPlayHL@2x.png.svn-base │ │ │ ├── TableViewArrow@2x.png.svn-base │ │ │ ├── VideoSendIcon@2x.png.svn-base │ │ │ ├── navi_back@2x.png.svn-base │ │ │ ├── photo_def_photoPickerVc@2x.png.svn-base │ │ │ ├── photo_def_previewVc@2x.png.svn-base │ │ │ ├── photo_number_icon@2x.png.svn-base │ │ │ ├── photo_original_def@2x.png.svn-base │ │ │ ├── photo_original_sel@2x.png.svn-base │ │ │ ├── photo_sel_photoPickerVc@2x.png.svn-base │ │ │ ├── photo_sel_previewVc@2x.png.svn-base │ │ │ ├── preview_number_icon@2x.png.svn-base │ │ │ ├── preview_original_def@2x.png.svn-base │ │ │ └── takePicture@2x.png.svn-base │ │ └── text-base │ │ │ ├── MMVideoPreviewPlay@2x.png.svn-base │ │ │ ├── MMVideoPreviewPlayHL@2x.png.svn-base │ │ │ ├── Root.plist.svn-base │ │ │ ├── TZAlbumCell.xib.svn-base │ │ │ ├── TZAssetCell.xib.svn-base │ │ │ ├── TableViewArrow@2x.png.svn-base │ │ │ ├── VideoSendIcon@2x.png.svn-base │ │ │ ├── navi_back@2x.png.svn-base │ │ │ ├── photo_def_photoPickerVc@2x.png.svn-base │ │ │ ├── photo_def_previewVc@2x.png.svn-base │ │ │ ├── photo_number_icon@2x.png.svn-base │ │ │ ├── photo_original_def@2x.png.svn-base │ │ │ ├── photo_original_sel@2x.png.svn-base │ │ │ ├── photo_sel_photoPickerVc@2x.png.svn-base │ │ │ ├── photo_sel_previewVc@2x.png.svn-base │ │ │ ├── preview_number_icon@2x.png.svn-base │ │ │ ├── preview_original_def@2x.png.svn-base │ │ │ └── takePicture@2x.png.svn-base │ ├── MMVideoPreviewPlay@2x.png │ ├── MMVideoPreviewPlayHL@2x.png │ ├── Root.plist │ ├── TZAlbumCell.xib │ ├── TZAssetCell.xib │ ├── TableViewArrow@2x.png │ ├── VideoSendIcon@2x.png │ ├── navi_back@2x.png │ ├── photo_def_photoPickerVc@2x.png │ ├── photo_def_previewVc@2x.png │ ├── photo_number_icon@2x.png │ ├── photo_original_def@2x.png │ ├── photo_original_sel@2x.png │ ├── photo_sel_photoPickerVc@2x.png │ ├── photo_sel_previewVc@2x.png │ ├── preview_number_icon@2x.png │ ├── preview_original_def@2x.png │ └── takePicture@2x.png │ ├── TZImagePickerController.h │ ├── TZImagePickerController.m │ ├── TZPhotoPickerController.h │ ├── TZPhotoPickerController.m │ ├── TZPhotoPreviewCell.h │ ├── TZPhotoPreviewCell.m │ ├── TZPhotoPreviewController.h │ ├── TZPhotoPreviewController.m │ ├── TZVideoPlayerController.h │ ├── TZVideoPlayerController.m │ ├── UIView+Layout.h │ └── UIView+Layout.m ├── SelwynFormDemo.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcuserdata │ │ └── zhuku.xcuserdatad │ │ └── UserInterfaceState.xcuserstate └── xcuserdata │ └── zhuku.xcuserdatad │ ├── xcdebugger │ └── Breakpoints_v2.xcbkptlist │ └── xcschemes │ └── xcschememanagement.plist └── SelwynFormDemo ├── AppDelegate.h ├── AppDelegate.m ├── Assets.xcassets ├── AppIcon.appiconset │ └── Contents.json ├── Contents.json ├── Delete Reveal.imageset │ ├── Contents.json │ ├── Delete Reveal.png │ ├── Delete Reveal@2x.png │ └── Delete Reveal@3x.png └── ProjectInitial_Attachment.imageset │ ├── Contents.json │ ├── ProjectInitial_Attachment@2x.png │ └── ProjectInitial_Attachment@3x.png ├── Base.lproj └── LaunchScreen.storyboard ├── Info.plist ├── SelwynForm.pch ├── SelwynFormClass ├── SelwynBaseViewController.h ├── SelwynBaseViewController.m ├── SelwynFormAttaViewController.h ├── SelwynFormAttaViewController.m ├── SelwynFormDetailViewController.h ├── SelwynFormDetailViewController.m ├── SelwynFormViewController.h └── SelwynFormViewController.m └── main.m /README.md: -------------------------------------------------------------------------------- 1 | # SelAttachmentForm 2 | > 快捷构造复杂表单系统,包含编辑、附件功能 3 | 4 | > 此版本第三方依赖较多,且部分字段无效,更完善版本请移步 [iOS 高度封装自适应表单(重构版)](https://github.com/RockChanel/SWForm) 5 | 6 | > 详细说明戳这里:https://www.jianshu.com/p/554c6c4c42d2 7 | 8 | ![image](https://github.com/RockChanel/SWGIF/blob/master/SelAttachmentForm/SelAttachmentForm.gif) 9 | 10 | 11 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MBProgressHUD/.svn/all-wcprops: -------------------------------------------------------------------------------- 1 | K 25 2 | svn:wc:ra_dav:version-url 3 | V 138 4 | /zhuku/repo/!svn/ver/4261/zhuku-ios/trunk/zhuku-iOS/trunk/ios-zhuku2017.12.28/ChatDemo-UI3.0/ChatSDK/EaseUI/EMUIKit/3rdparty/MBProgressHUD 5 | END 6 | MBProgressHUD.m 7 | K 25 8 | svn:wc:ra_dav:version-url 9 | V 154 10 | /zhuku/repo/!svn/ver/4261/zhuku-ios/trunk/zhuku-iOS/trunk/ios-zhuku2017.12.28/ChatDemo-UI3.0/ChatSDK/EaseUI/EMUIKit/3rdparty/MBProgressHUD/MBProgressHUD.m 11 | END 12 | Factory.m 13 | K 25 14 | svn:wc:ra_dav:version-url 15 | V 148 16 | /zhuku/repo/!svn/ver/4261/zhuku-ios/trunk/zhuku-iOS/trunk/ios-zhuku2017.12.28/ChatDemo-UI3.0/ChatSDK/EaseUI/EMUIKit/3rdparty/MBProgressHUD/Factory.m 17 | END 18 | MBProgressHUD+Add.m 19 | K 25 20 | svn:wc:ra_dav:version-url 21 | V 158 22 | /zhuku/repo/!svn/ver/4261/zhuku-ios/trunk/zhuku-iOS/trunk/ios-zhuku2017.12.28/ChatDemo-UI3.0/ChatSDK/EaseUI/EMUIKit/3rdparty/MBProgressHUD/MBProgressHUD+Add.m 23 | END 24 | MacroDef.h 25 | K 25 26 | svn:wc:ra_dav:version-url 27 | V 149 28 | /zhuku/repo/!svn/ver/4261/zhuku-ios/trunk/zhuku-iOS/trunk/ios-zhuku2017.12.28/ChatDemo-UI3.0/ChatSDK/EaseUI/EMUIKit/3rdparty/MBProgressHUD/MacroDef.h 29 | END 30 | MBProgressHUD.h 31 | K 25 32 | svn:wc:ra_dav:version-url 33 | V 154 34 | /zhuku/repo/!svn/ver/4261/zhuku-ios/trunk/zhuku-iOS/trunk/ios-zhuku2017.12.28/ChatDemo-UI3.0/ChatSDK/EaseUI/EMUIKit/3rdparty/MBProgressHUD/MBProgressHUD.h 35 | END 36 | Factory.h 37 | K 25 38 | svn:wc:ra_dav:version-url 39 | V 148 40 | /zhuku/repo/!svn/ver/4261/zhuku-ios/trunk/zhuku-iOS/trunk/ios-zhuku2017.12.28/ChatDemo-UI3.0/ChatSDK/EaseUI/EMUIKit/3rdparty/MBProgressHUD/Factory.h 41 | END 42 | MBProgressHUD+Add.h 43 | K 25 44 | svn:wc:ra_dav:version-url 45 | V 158 46 | /zhuku/repo/!svn/ver/4261/zhuku-ios/trunk/zhuku-iOS/trunk/ios-zhuku2017.12.28/ChatDemo-UI3.0/ChatSDK/EaseUI/EMUIKit/3rdparty/MBProgressHUD/MBProgressHUD+Add.h 47 | END 48 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MBProgressHUD/.svn/prop-base/MBProgressHUD.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MBProgressHUD/.svn/prop-base/MBProgressHUD.m.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MBProgressHUD/.svn/text-base/Factory.h.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // Factory.h 3 | // DongDong 4 | // 5 | // Created by jmsre on 15/11/25. 6 | // Copyright © 2015年 wangyang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "MBProgressHUD.h" 12 | 13 | @interface Factory : NSObject 14 | 15 | 16 | // 返回文本size 17 | + (CGSize)sizeForText:(NSString *)text withFont:(UIFont *)font contraint:(CGSize)constraint; 18 | 19 | 20 | //提示: 21 | + (void)MBProgressHUD:(NSString *)text Time:(NSUInteger)time; 22 | + (void)MBProgressHUDUseblock:(void (^)(MBProgressHUD *hud))block; 23 | 24 | 25 | // 校验手机号 26 | + (BOOL)isMobileNumber:(NSString *)mobileNum; 27 | + (BOOL)isChinaMobile:(NSString *)phoneNum; 28 | + (BOOL)isChinaUnicom:(NSString *)phoneNum; 29 | + (BOOL)isChinaTelecom:(NSString *)phoneNum; 30 | + (NSString *)getPhoneNumType:(NSString *)phoneNum; 31 | 32 | //身份证号 33 | + (BOOL) validateIdentityCard: (NSString *)identityCard; 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MBProgressHUD/.svn/text-base/MBProgressHUD+Add.h.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // MBProgressHUD+Add.h 3 | // 视频客户端 4 | // 5 | // Created by mj on 13-4-18. 6 | // Copyright (c) 2013年 itcast. All rights reserved. 7 | // 8 | 9 | #import "MBProgressHUD.h" 10 | 11 | @interface MBProgressHUD (Add) 12 | + (void)showError:(NSString *)error toView:(UIView *)view; 13 | + (void)showSuccess:(NSString *)success toView:(UIView *)view; 14 | 15 | + (MBProgressHUD *)showMessag:(NSString *)message toView:(UIView *)view; 16 | @end 17 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MBProgressHUD/.svn/text-base/MBProgressHUD+Add.m.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // MBProgressHUD+Add.m 3 | // 视频客户端 4 | // 5 | // Created by mj on 13-4-18. 6 | // Copyright (c) 2013年 itcast. All rights reserved. 7 | // 8 | 9 | #import "MBProgressHUD+Add.h" 10 | 11 | @implementation MBProgressHUD (Add) 12 | 13 | #pragma mark 显示信息 14 | + (void)show:(NSString *)text icon:(NSString *)icon view:(UIView *)view 15 | { 16 | if (view == nil) view = [UIApplication sharedApplication].keyWindow; 17 | // 快速显示一个提示信息 18 | MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:YES]; 19 | hud.labelText = text; 20 | // 设置图片 21 | hud.customView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[NSString stringWithFormat:@"MBProgressHUD.bundle/%@", icon]]]; 22 | // 再设置模式 23 | hud.mode = MBProgressHUDModeCustomView; 24 | 25 | // 隐藏时候从父控件中移除 26 | hud.removeFromSuperViewOnHide = YES; 27 | 28 | // 1秒之后再消失 29 | [hud hide:YES afterDelay:0.7]; 30 | } 31 | 32 | #pragma mark 显示错误信息 33 | + (void)showError:(NSString *)error toView:(UIView *)view{ 34 | [self show:error icon:@"error.png" view:view]; 35 | } 36 | 37 | + (void)showSuccess:(NSString *)success toView:(UIView *)view 38 | { 39 | [self show:success icon:@"success.png" view:view]; 40 | } 41 | 42 | #pragma mark 显示一些信息 43 | + (MBProgressHUD *)showMessag:(NSString *)message toView:(UIView *)view { 44 | if (view == nil) view = [UIApplication sharedApplication].keyWindow; 45 | // 快速显示一个提示信息 46 | MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:YES]; 47 | hud.labelText = message; 48 | // 隐藏时候从父控件中移除 49 | hud.removeFromSuperViewOnHide = YES; 50 | // YES代表需要蒙版效果 51 | hud.dimBackground = YES; 52 | return hud; 53 | } 54 | @end 55 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MBProgressHUD/Factory.h: -------------------------------------------------------------------------------- 1 | // 2 | // Factory.h 3 | // DongDong 4 | // 5 | // Created by jmsre on 15/11/25. 6 | // Copyright © 2015年 wangyang. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "MBProgressHUD.h" 12 | 13 | @interface Factory : NSObject 14 | 15 | 16 | // 返回文本size 17 | + (CGSize)sizeForText:(NSString *)text withFont:(UIFont *)font contraint:(CGSize)constraint; 18 | 19 | 20 | //提示: 21 | + (void)MBProgressHUD:(NSString *)text Time:(NSUInteger)time; 22 | + (void)MBProgressHUDUseblock:(void (^)(MBProgressHUD *hud))block; 23 | 24 | 25 | // 校验手机号 26 | + (BOOL)isMobileNumber:(NSString *)mobileNum; 27 | + (BOOL)isChinaMobile:(NSString *)phoneNum; 28 | + (BOOL)isChinaUnicom:(NSString *)phoneNum; 29 | + (BOOL)isChinaTelecom:(NSString *)phoneNum; 30 | + (NSString *)getPhoneNumType:(NSString *)phoneNum; 31 | 32 | //身份证号 33 | + (BOOL) validateIdentityCard: (NSString *)identityCard; 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MBProgressHUD/MBProgressHUD+Add.h: -------------------------------------------------------------------------------- 1 | // 2 | // MBProgressHUD+Add.h 3 | // 视频客户端 4 | // 5 | // Created by mj on 13-4-18. 6 | // Copyright (c) 2013年 itcast. All rights reserved. 7 | // 8 | 9 | #import "MBProgressHUD.h" 10 | 11 | @interface MBProgressHUD (Add) 12 | + (void)showError:(NSString *)error toView:(UIView *)view; 13 | + (void)showSuccess:(NSString *)success toView:(UIView *)view; 14 | 15 | + (MBProgressHUD *)showMessag:(NSString *)message toView:(UIView *)view; 16 | @end 17 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MBProgressHUD/MBProgressHUD+Add.m: -------------------------------------------------------------------------------- 1 | // 2 | // MBProgressHUD+Add.m 3 | // 视频客户端 4 | // 5 | // Created by mj on 13-4-18. 6 | // Copyright (c) 2013年 itcast. All rights reserved. 7 | // 8 | 9 | #import "MBProgressHUD+Add.h" 10 | 11 | @implementation MBProgressHUD (Add) 12 | 13 | #pragma mark 显示信息 14 | + (void)show:(NSString *)text icon:(NSString *)icon view:(UIView *)view 15 | { 16 | if (view == nil) view = [UIApplication sharedApplication].keyWindow; 17 | // 快速显示一个提示信息 18 | MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:YES]; 19 | hud.labelText = text; 20 | // 设置图片 21 | hud.customView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[NSString stringWithFormat:@"MBProgressHUD.bundle/%@", icon]]]; 22 | // 再设置模式 23 | hud.mode = MBProgressHUDModeCustomView; 24 | 25 | // 隐藏时候从父控件中移除 26 | hud.removeFromSuperViewOnHide = YES; 27 | 28 | // 1秒之后再消失 29 | [hud hide:YES afterDelay:0.7]; 30 | } 31 | 32 | #pragma mark 显示错误信息 33 | + (void)showError:(NSString *)error toView:(UIView *)view{ 34 | [self show:error icon:@"error.png" view:view]; 35 | } 36 | 37 | + (void)showSuccess:(NSString *)success toView:(UIView *)view 38 | { 39 | [self show:success icon:@"success.png" view:view]; 40 | } 41 | 42 | #pragma mark 显示一些信息 43 | + (MBProgressHUD *)showMessag:(NSString *)message toView:(UIView *)view { 44 | if (view == nil) view = [UIApplication sharedApplication].keyWindow; 45 | // 快速显示一个提示信息 46 | MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:YES]; 47 | hud.labelText = message; 48 | // 隐藏时候从父控件中移除 49 | hud.removeFromSuperViewOnHide = YES; 50 | // YES代表需要蒙版效果 51 | hud.dimBackground = YES; 52 | return hud; 53 | } 54 | @end 55 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/.svn/all-wcprops: -------------------------------------------------------------------------------- 1 | K 25 2 | svn:wc:ra_dav:version-url 3 | V 139 4 | /zhuku/repo/!svn/ver/4261/zhuku-ios/trunk/zhuku-iOS/trunk/ios-zhuku2017.12.28/ChatDemo-UI3.0/ChatSDK/EaseUI/EMUIKit/3rdparty/MWPhotoBrowser 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/.svn/entries: -------------------------------------------------------------------------------- 1 | 10 2 | 3 | dir 4 | 4265 5 | http://bishanwen@121.43.163.28:9090/zhuku/repo/zhuku-ios/trunk/zhuku-iOS/trunk/ios-zhuku2017.12.28/ChatDemo-UI3.0/ChatSDK/EaseUI/EMUIKit/3rdparty/MWPhotoBrowser 6 | http://bishanwen@121.43.163.28:9090/zhuku/repo 7 | 8 | 9 | 10 | 2017-12-28T02:01:09.072372Z 11 | 4261 12 | zhoujun 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 5738001b-f13b-4815-ac0f-2e2f54dd1d22 28 | 29 | MWPhotoBrowser.bundle 30 | dir 31 | 32 | Libraries 33 | dir 34 | 35 | Classes 36 | dir 37 | 38 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Classes/.svn/text-base/MWCaptionView.h.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // MWCaptionView.h 3 | // MWPhotoBrowser 4 | // 5 | // Created by Michael Waterfall on 30/12/2011. 6 | // Copyright (c) 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MWPhotoProtocol.h" 11 | 12 | @interface MWCaptionView : UIToolbar 13 | 14 | // Init 15 | - (id)initWithPhoto:(id)photo; 16 | 17 | // To create your own custom caption view, subclass this view 18 | // and override the following two methods (as well as any other 19 | // UIView methods that you see fit): 20 | 21 | // Override -setupCaption so setup your subviews and customise the appearance 22 | // of your custom caption 23 | // You can access the photo's data by accessing the _photo ivar 24 | // If you need more data per photo then simply subclass MWPhoto and return your 25 | // subclass to the photo browsers -photoBrowser:photoAtIndex: delegate method 26 | - (void)setupCaption; 27 | 28 | // Override -sizeThatFits: and return a CGSize specifying the height of your 29 | // custom caption view. With width property is ignored and the caption is displayed 30 | // the full width of the screen 31 | - (CGSize)sizeThatFits:(CGSize)size; 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Classes/.svn/text-base/MWCommon.h.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // MWPreprocessor.h 3 | // MWPhotoBrowser 4 | // 5 | // Created by Michael Waterfall on 01/10/2013. 6 | // 7 | 8 | #define SYSTEM_VERSION_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame) 9 | #define SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending) 10 | #define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending) 11 | #define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending) 12 | #define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending) 13 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Classes/.svn/text-base/MWGridCell.h.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // MWGridCell.h 3 | // MWPhotoBrowser 4 | // 5 | // Created by Michael Waterfall on 08/10/2013. 6 | // 7 | // 8 | 9 | #import 10 | #import "MWPhoto.h" 11 | #import "MWGridViewController.h" 12 | #import "PSTCollectionView.h" 13 | 14 | @interface MWGridCell : PSTCollectionViewCell {} 15 | 16 | @property (nonatomic, weak) MWGridViewController *gridController; 17 | @property (nonatomic) NSUInteger index; 18 | @property (nonatomic) id photo; 19 | @property (nonatomic) BOOL selectionMode; 20 | @property (nonatomic) BOOL isSelected; 21 | 22 | - (void)displayImage; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Classes/.svn/text-base/MWGridViewController.h.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // MWGridViewController.h 3 | // MWPhotoBrowser 4 | // 5 | // Created by Michael Waterfall on 08/10/2013. 6 | // 7 | // 8 | 9 | #import 10 | #import "MWPhotoBrowser.h" 11 | #import "PSTCollectionView.h" 12 | 13 | @interface MWGridViewController : PSTCollectionViewController {} 14 | 15 | @property (nonatomic, assign) MWPhotoBrowser *browser; 16 | @property (nonatomic) BOOL selectionMode; 17 | @property (nonatomic) CGPoint initialContentOffset; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Classes/.svn/text-base/MWPhoto.h.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // MWPhoto.h 3 | // MWPhotoBrowser 4 | // 5 | // Created by Michael Waterfall on 17/10/2010. 6 | // Copyright 2010 d3i. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MWPhotoProtocol.h" 11 | 12 | // This class models a photo/image and it's caption 13 | // If you want to handle photos, caching, decompression 14 | // yourself then you can simply ensure your custom data model 15 | // conforms to MWPhotoProtocol 16 | @interface MWPhoto : NSObject 17 | 18 | @property (nonatomic, strong) NSString *caption; 19 | @property (nonatomic, readonly) UIImage *image; 20 | @property (nonatomic, readonly) NSURL *photoURL; 21 | @property (nonatomic, readonly) NSString *filePath __attribute__((deprecated("Use photoURL"))); // Depreciated 22 | 23 | + (MWPhoto *)photoWithImage:(UIImage *)image; 24 | + (MWPhoto *)photoWithFilePath:(NSString *)path __attribute__((deprecated("Use photoWithURL: with a file URL"))); // Depreciated 25 | + (MWPhoto *)photoWithURL:(NSURL *)url; 26 | 27 | - (id)initWithImage:(UIImage *)image; 28 | - (id)initWithURL:(NSURL *)url; 29 | - (id)initWithFilePath:(NSString *)path __attribute__((deprecated("Use initWithURL: with a file URL"))); // Depreciated 30 | 31 | @end 32 | 33 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Classes/.svn/text-base/MWTapDetectingImageView.h.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // UIImageViewTap.h 3 | // Momento 4 | // 5 | // Created by Michael Waterfall on 04/11/2009. 6 | // Copyright 2009 d3i. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @protocol MWTapDetectingImageViewDelegate; 12 | 13 | @interface MWTapDetectingImageView : UIImageView {} 14 | 15 | @property (nonatomic, weak) id tapDelegate; 16 | 17 | @end 18 | 19 | @protocol MWTapDetectingImageViewDelegate 20 | 21 | @optional 22 | 23 | - (void)imageView:(UIImageView *)imageView singleTapDetected:(UITouch *)touch; 24 | - (void)imageView:(UIImageView *)imageView doubleTapDetected:(UITouch *)touch; 25 | - (void)imageView:(UIImageView *)imageView tripleTapDetected:(UITouch *)touch; 26 | 27 | @end -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Classes/.svn/text-base/MWTapDetectingImageView.m.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // UIImageViewTap.m 3 | // Momento 4 | // 5 | // Created by Michael Waterfall on 04/11/2009. 6 | // Copyright 2009 d3i. All rights reserved. 7 | // 8 | 9 | #import "MWTapDetectingImageView.h" 10 | 11 | @implementation MWTapDetectingImageView 12 | 13 | - (id)initWithFrame:(CGRect)frame { 14 | if ((self = [super initWithFrame:frame])) { 15 | self.userInteractionEnabled = YES; 16 | } 17 | return self; 18 | } 19 | 20 | - (id)initWithImage:(UIImage *)image { 21 | if ((self = [super initWithImage:image])) { 22 | self.userInteractionEnabled = YES; 23 | } 24 | return self; 25 | } 26 | 27 | - (id)initWithImage:(UIImage *)image highlightedImage:(UIImage *)highlightedImage { 28 | if ((self = [super initWithImage:image highlightedImage:highlightedImage])) { 29 | self.userInteractionEnabled = YES; 30 | } 31 | return self; 32 | } 33 | 34 | - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 35 | UITouch *touch = [touches anyObject]; 36 | NSUInteger tapCount = touch.tapCount; 37 | switch (tapCount) { 38 | case 1: 39 | [self handleSingleTap:touch]; 40 | break; 41 | case 2: 42 | [self handleDoubleTap:touch]; 43 | break; 44 | case 3: 45 | [self handleTripleTap:touch]; 46 | break; 47 | default: 48 | break; 49 | } 50 | [[self nextResponder] touchesEnded:touches withEvent:event]; 51 | } 52 | 53 | - (void)handleSingleTap:(UITouch *)touch { 54 | if ([_tapDelegate respondsToSelector:@selector(imageView:singleTapDetected:)]) 55 | [_tapDelegate imageView:self singleTapDetected:touch]; 56 | } 57 | 58 | - (void)handleDoubleTap:(UITouch *)touch { 59 | if ([_tapDelegate respondsToSelector:@selector(imageView:doubleTapDetected:)]) 60 | [_tapDelegate imageView:self doubleTapDetected:touch]; 61 | } 62 | 63 | - (void)handleTripleTap:(UITouch *)touch { 64 | if ([_tapDelegate respondsToSelector:@selector(imageView:tripleTapDetected:)]) 65 | [_tapDelegate imageView:self tripleTapDetected:touch]; 66 | } 67 | 68 | @end 69 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Classes/.svn/text-base/MWTapDetectingView.h.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewTap.h 3 | // Momento 4 | // 5 | // Created by Michael Waterfall on 04/11/2009. 6 | // Copyright 2009 d3i. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @protocol MWTapDetectingViewDelegate; 12 | 13 | @interface MWTapDetectingView : UIView {} 14 | 15 | @property (nonatomic, weak) id tapDelegate; 16 | 17 | @end 18 | 19 | @protocol MWTapDetectingViewDelegate 20 | 21 | @optional 22 | 23 | - (void)view:(UIView *)view singleTapDetected:(UITouch *)touch; 24 | - (void)view:(UIView *)view doubleTapDetected:(UITouch *)touch; 25 | - (void)view:(UIView *)view tripleTapDetected:(UITouch *)touch; 26 | 27 | @end -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Classes/.svn/text-base/MWTapDetectingView.m.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewTap.m 3 | // Momento 4 | // 5 | // Created by Michael Waterfall on 04/11/2009. 6 | // Copyright 2009 d3i. All rights reserved. 7 | // 8 | 9 | #import "MWTapDetectingView.h" 10 | 11 | @implementation MWTapDetectingView 12 | 13 | - (id)init { 14 | if ((self = [super init])) { 15 | self.userInteractionEnabled = YES; 16 | } 17 | return self; 18 | } 19 | 20 | - (id)initWithFrame:(CGRect)frame { 21 | if ((self = [super initWithFrame:frame])) { 22 | self.userInteractionEnabled = YES; 23 | } 24 | return self; 25 | } 26 | 27 | - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 28 | UITouch *touch = [touches anyObject]; 29 | NSUInteger tapCount = touch.tapCount; 30 | switch (tapCount) { 31 | case 1: 32 | [self handleSingleTap:touch]; 33 | break; 34 | case 2: 35 | [self handleDoubleTap:touch]; 36 | break; 37 | case 3: 38 | [self handleTripleTap:touch]; 39 | break; 40 | default: 41 | break; 42 | } 43 | [[self nextResponder] touchesEnded:touches withEvent:event]; 44 | } 45 | 46 | - (void)handleSingleTap:(UITouch *)touch { 47 | if ([_tapDelegate respondsToSelector:@selector(view:singleTapDetected:)]) 48 | [_tapDelegate view:self singleTapDetected:touch]; 49 | } 50 | 51 | - (void)handleDoubleTap:(UITouch *)touch { 52 | if ([_tapDelegate respondsToSelector:@selector(view:doubleTapDetected:)]) 53 | [_tapDelegate view:self doubleTapDetected:touch]; 54 | } 55 | 56 | - (void)handleTripleTap:(UITouch *)touch { 57 | if ([_tapDelegate respondsToSelector:@selector(view:tripleTapDetected:)]) 58 | [_tapDelegate view:self tripleTapDetected:touch]; 59 | } 60 | 61 | @end 62 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Classes/.svn/text-base/MWZoomingScrollView.h.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // ZoomingScrollView.h 3 | // MWPhotoBrowser 4 | // 5 | // Created by Michael Waterfall on 14/10/2010. 6 | // Copyright 2010 d3i. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MWPhotoProtocol.h" 11 | #import "MWTapDetectingImageView.h" 12 | #import "MWTapDetectingView.h" 13 | 14 | @class MWPhotoBrowser, MWPhoto, MWCaptionView; 15 | 16 | @interface MWZoomingScrollView : UIScrollView { 17 | 18 | } 19 | 20 | @property () NSUInteger index; 21 | @property (nonatomic) id photo; 22 | @property (nonatomic, weak) MWCaptionView *captionView; 23 | @property (nonatomic, weak) UIButton *selectedButton; 24 | 25 | - (id)initWithPhotoBrowser:(MWPhotoBrowser *)browser; 26 | - (void)displayImage; 27 | - (void)displayImageFailure; 28 | - (void)setMaxMinZoomScalesForCurrentBounds; 29 | - (void)prepareForReuse; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Classes/MWCaptionView.h: -------------------------------------------------------------------------------- 1 | // 2 | // MWCaptionView.h 3 | // MWPhotoBrowser 4 | // 5 | // Created by Michael Waterfall on 30/12/2011. 6 | // Copyright (c) 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MWPhotoProtocol.h" 11 | 12 | @interface MWCaptionView : UIToolbar 13 | 14 | // Init 15 | - (id)initWithPhoto:(id)photo; 16 | 17 | // To create your own custom caption view, subclass this view 18 | // and override the following two methods (as well as any other 19 | // UIView methods that you see fit): 20 | 21 | // Override -setupCaption so setup your subviews and customise the appearance 22 | // of your custom caption 23 | // You can access the photo's data by accessing the _photo ivar 24 | // If you need more data per photo then simply subclass MWPhoto and return your 25 | // subclass to the photo browsers -photoBrowser:photoAtIndex: delegate method 26 | - (void)setupCaption; 27 | 28 | // Override -sizeThatFits: and return a CGSize specifying the height of your 29 | // custom caption view. With width property is ignored and the caption is displayed 30 | // the full width of the screen 31 | - (CGSize)sizeThatFits:(CGSize)size; 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Classes/MWCommon.h: -------------------------------------------------------------------------------- 1 | // 2 | // MWPreprocessor.h 3 | // MWPhotoBrowser 4 | // 5 | // Created by Michael Waterfall on 01/10/2013. 6 | // 7 | 8 | #define SYSTEM_VERSION_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame) 9 | #define SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending) 10 | #define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending) 11 | #define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending) 12 | #define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending) 13 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Classes/MWGridCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // MWGridCell.h 3 | // MWPhotoBrowser 4 | // 5 | // Created by Michael Waterfall on 08/10/2013. 6 | // 7 | // 8 | 9 | #import 10 | #import "MWPhoto.h" 11 | #import "MWGridViewController.h" 12 | #import "PSTCollectionView.h" 13 | 14 | @interface MWGridCell : PSTCollectionViewCell {} 15 | 16 | @property (nonatomic, weak) MWGridViewController *gridController; 17 | @property (nonatomic) NSUInteger index; 18 | @property (nonatomic) id photo; 19 | @property (nonatomic) BOOL selectionMode; 20 | @property (nonatomic) BOOL isSelected; 21 | 22 | - (void)displayImage; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Classes/MWGridViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MWGridViewController.h 3 | // MWPhotoBrowser 4 | // 5 | // Created by Michael Waterfall on 08/10/2013. 6 | // 7 | // 8 | 9 | #import 10 | #import "MWPhotoBrowser.h" 11 | #import "PSTCollectionView.h" 12 | 13 | @interface MWGridViewController : PSTCollectionViewController {} 14 | 15 | @property (nonatomic, assign) MWPhotoBrowser *browser; 16 | @property (nonatomic) BOOL selectionMode; 17 | @property (nonatomic) CGPoint initialContentOffset; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Classes/MWPhoto.h: -------------------------------------------------------------------------------- 1 | // 2 | // MWPhoto.h 3 | // MWPhotoBrowser 4 | // 5 | // Created by Michael Waterfall on 17/10/2010. 6 | // Copyright 2010 d3i. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MWPhotoProtocol.h" 11 | 12 | // This class models a photo/image and it's caption 13 | // If you want to handle photos, caching, decompression 14 | // yourself then you can simply ensure your custom data model 15 | // conforms to MWPhotoProtocol 16 | @interface MWPhoto : NSObject 17 | 18 | @property (nonatomic, strong) NSString *caption; 19 | @property (nonatomic, readonly) UIImage *image; 20 | @property (nonatomic, readonly) NSURL *photoURL; 21 | @property (nonatomic, readonly) NSString *filePath __attribute__((deprecated("Use photoURL"))); // Depreciated 22 | 23 | + (MWPhoto *)photoWithImage:(UIImage *)image; 24 | + (MWPhoto *)photoWithFilePath:(NSString *)path __attribute__((deprecated("Use photoWithURL: with a file URL"))); // Depreciated 25 | + (MWPhoto *)photoWithURL:(NSURL *)url; 26 | 27 | - (id)initWithImage:(UIImage *)image; 28 | - (id)initWithURL:(NSURL *)url; 29 | - (id)initWithFilePath:(NSString *)path __attribute__((deprecated("Use initWithURL: with a file URL"))); // Depreciated 30 | 31 | @end 32 | 33 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Classes/MWTapDetectingImageView.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImageViewTap.h 3 | // Momento 4 | // 5 | // Created by Michael Waterfall on 04/11/2009. 6 | // Copyright 2009 d3i. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @protocol MWTapDetectingImageViewDelegate; 12 | 13 | @interface MWTapDetectingImageView : UIImageView {} 14 | 15 | @property (nonatomic, weak) id tapDelegate; 16 | 17 | @end 18 | 19 | @protocol MWTapDetectingImageViewDelegate 20 | 21 | @optional 22 | 23 | - (void)imageView:(UIImageView *)imageView singleTapDetected:(UITouch *)touch; 24 | - (void)imageView:(UIImageView *)imageView doubleTapDetected:(UITouch *)touch; 25 | - (void)imageView:(UIImageView *)imageView tripleTapDetected:(UITouch *)touch; 26 | 27 | @end -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Classes/MWTapDetectingImageView.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIImageViewTap.m 3 | // Momento 4 | // 5 | // Created by Michael Waterfall on 04/11/2009. 6 | // Copyright 2009 d3i. All rights reserved. 7 | // 8 | 9 | #import "MWTapDetectingImageView.h" 10 | 11 | @implementation MWTapDetectingImageView 12 | 13 | - (id)initWithFrame:(CGRect)frame { 14 | if ((self = [super initWithFrame:frame])) { 15 | self.userInteractionEnabled = YES; 16 | } 17 | return self; 18 | } 19 | 20 | - (id)initWithImage:(UIImage *)image { 21 | if ((self = [super initWithImage:image])) { 22 | self.userInteractionEnabled = YES; 23 | } 24 | return self; 25 | } 26 | 27 | - (id)initWithImage:(UIImage *)image highlightedImage:(UIImage *)highlightedImage { 28 | if ((self = [super initWithImage:image highlightedImage:highlightedImage])) { 29 | self.userInteractionEnabled = YES; 30 | } 31 | return self; 32 | } 33 | 34 | - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 35 | UITouch *touch = [touches anyObject]; 36 | NSUInteger tapCount = touch.tapCount; 37 | switch (tapCount) { 38 | case 1: 39 | [self handleSingleTap:touch]; 40 | break; 41 | case 2: 42 | [self handleDoubleTap:touch]; 43 | break; 44 | case 3: 45 | [self handleTripleTap:touch]; 46 | break; 47 | default: 48 | break; 49 | } 50 | [[self nextResponder] touchesEnded:touches withEvent:event]; 51 | } 52 | 53 | - (void)handleSingleTap:(UITouch *)touch { 54 | if ([_tapDelegate respondsToSelector:@selector(imageView:singleTapDetected:)]) 55 | [_tapDelegate imageView:self singleTapDetected:touch]; 56 | } 57 | 58 | - (void)handleDoubleTap:(UITouch *)touch { 59 | if ([_tapDelegate respondsToSelector:@selector(imageView:doubleTapDetected:)]) 60 | [_tapDelegate imageView:self doubleTapDetected:touch]; 61 | } 62 | 63 | - (void)handleTripleTap:(UITouch *)touch { 64 | if ([_tapDelegate respondsToSelector:@selector(imageView:tripleTapDetected:)]) 65 | [_tapDelegate imageView:self tripleTapDetected:touch]; 66 | } 67 | 68 | @end 69 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Classes/MWTapDetectingView.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewTap.h 3 | // Momento 4 | // 5 | // Created by Michael Waterfall on 04/11/2009. 6 | // Copyright 2009 d3i. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @protocol MWTapDetectingViewDelegate; 13 | 14 | @interface MWTapDetectingView : UIView {} 15 | 16 | @property (nonatomic, weak) id tapDelegate; 17 | 18 | @end 19 | 20 | @protocol MWTapDetectingViewDelegate 21 | 22 | @optional 23 | 24 | - (void)view:(UIView *)view singleTapDetected:(UITouch *)touch; 25 | - (void)view:(UIView *)view doubleTapDetected:(UITouch *)touch; 26 | - (void)view:(UIView *)view tripleTapDetected:(UITouch *)touch; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Classes/MWTapDetectingView.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewTap.m 3 | // Momento 4 | // 5 | // Created by Michael Waterfall on 04/11/2009. 6 | // Copyright 2009 d3i. All rights reserved. 7 | // 8 | 9 | #import "MWTapDetectingView.h" 10 | 11 | @implementation MWTapDetectingView 12 | 13 | - (id)init { 14 | if ((self = [super init])) { 15 | self.userInteractionEnabled = YES; 16 | } 17 | return self; 18 | } 19 | 20 | - (id)initWithFrame:(CGRect)frame { 21 | if ((self = [super initWithFrame:frame])) { 22 | self.userInteractionEnabled = YES; 23 | } 24 | return self; 25 | } 26 | 27 | - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 28 | UITouch *touch = [touches anyObject]; 29 | NSUInteger tapCount = touch.tapCount; 30 | switch (tapCount) { 31 | case 1: 32 | [self handleSingleTap:touch]; 33 | break; 34 | case 2: 35 | [self handleDoubleTap:touch]; 36 | break; 37 | case 3: 38 | [self handleTripleTap:touch]; 39 | break; 40 | default: 41 | break; 42 | } 43 | [[self nextResponder] touchesEnded:touches withEvent:event]; 44 | } 45 | 46 | - (void)handleSingleTap:(UITouch *)touch { 47 | if ([_tapDelegate respondsToSelector:@selector(view:singleTapDetected:)]) 48 | [_tapDelegate view:self singleTapDetected:touch]; 49 | } 50 | 51 | - (void)handleDoubleTap:(UITouch *)touch { 52 | if ([_tapDelegate respondsToSelector:@selector(view:doubleTapDetected:)]) 53 | [_tapDelegate view:self doubleTapDetected:touch]; 54 | } 55 | 56 | - (void)handleTripleTap:(UITouch *)touch { 57 | if ([_tapDelegate respondsToSelector:@selector(view:tripleTapDetected:)]) 58 | [_tapDelegate view:self tripleTapDetected:touch]; 59 | } 60 | 61 | @end 62 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Classes/MWZoomingScrollView.h: -------------------------------------------------------------------------------- 1 | // 2 | // ZoomingScrollView.h 3 | // MWPhotoBrowser 4 | // 5 | // Created by Michael Waterfall on 14/10/2010. 6 | // Copyright 2010 d3i. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MWPhotoProtocol.h" 11 | #import "MWTapDetectingImageView.h" 12 | #import "MWTapDetectingView.h" 13 | 14 | @class MWPhotoBrowser, MWPhoto, MWCaptionView; 15 | 16 | @interface MWZoomingScrollView : UIScrollView { 17 | 18 | } 19 | 20 | @property () NSUInteger index; 21 | @property (nonatomic) id photo; 22 | @property (nonatomic, weak) MWCaptionView *captionView; 23 | @property (nonatomic, weak) UIButton *selectedButton; 24 | 25 | - (id)initWithPhotoBrowser:(MWPhotoBrowser *)browser; 26 | - (void)displayImage; 27 | - (void)displayImageFailure; 28 | - (void)setMaxMinZoomScalesForCurrentBounds; 29 | - (void)prepareForReuse; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/.svn/all-wcprops: -------------------------------------------------------------------------------- 1 | K 25 2 | svn:wc:ra_dav:version-url 3 | V 149 4 | /zhuku/repo/!svn/ver/4261/zhuku-ios/trunk/zhuku-iOS/trunk/ios-zhuku2017.12.28/ChatDemo-UI3.0/ChatSDK/EaseUI/EMUIKit/3rdparty/MWPhotoBrowser/Libraries 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/.svn/entries: -------------------------------------------------------------------------------- 1 | 10 2 | 3 | dir 4 | 4265 5 | http://bishanwen@121.43.163.28:9090/zhuku/repo/zhuku-ios/trunk/zhuku-iOS/trunk/ios-zhuku2017.12.28/ChatDemo-UI3.0/ChatSDK/EaseUI/EMUIKit/3rdparty/MWPhotoBrowser/Libraries 6 | http://bishanwen@121.43.163.28:9090/zhuku/repo 7 | 8 | 9 | 10 | 2017-12-28T02:01:09.072372Z 11 | 4261 12 | zhoujun 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 5738001b-f13b-4815-ac0f-2e2f54dd1d22 28 | 29 | EMSDWebImage 30 | dir 31 | 32 | PSTCollectionView 33 | dir 34 | 35 | DACircularProgress 36 | dir 37 | 38 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/DACircularProgress/.svn/all-wcprops: -------------------------------------------------------------------------------- 1 | K 25 2 | svn:wc:ra_dav:version-url 3 | V 168 4 | /zhuku/repo/!svn/ver/4261/zhuku-ios/trunk/zhuku-iOS/trunk/ios-zhuku2017.12.28/ChatDemo-UI3.0/ChatSDK/EaseUI/EMUIKit/3rdparty/MWPhotoBrowser/Libraries/DACircularProgress 5 | END 6 | DACircularProgressView.h 7 | K 25 8 | svn:wc:ra_dav:version-url 9 | V 193 10 | /zhuku/repo/!svn/ver/4261/zhuku-ios/trunk/zhuku-iOS/trunk/ios-zhuku2017.12.28/ChatDemo-UI3.0/ChatSDK/EaseUI/EMUIKit/3rdparty/MWPhotoBrowser/Libraries/DACircularProgress/DACircularProgressView.h 11 | END 12 | DACircularProgressView.m 13 | K 25 14 | svn:wc:ra_dav:version-url 15 | V 193 16 | /zhuku/repo/!svn/ver/4261/zhuku-ios/trunk/zhuku-iOS/trunk/ios-zhuku2017.12.28/ChatDemo-UI3.0/ChatSDK/EaseUI/EMUIKit/3rdparty/MWPhotoBrowser/Libraries/DACircularProgress/DACircularProgressView.m 17 | END 18 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/DACircularProgress/.svn/entries: -------------------------------------------------------------------------------- 1 | 10 2 | 3 | dir 4 | 4265 5 | http://bishanwen@121.43.163.28:9090/zhuku/repo/zhuku-ios/trunk/zhuku-iOS/trunk/ios-zhuku2017.12.28/ChatDemo-UI3.0/ChatSDK/EaseUI/EMUIKit/3rdparty/MWPhotoBrowser/Libraries/DACircularProgress 6 | http://bishanwen@121.43.163.28:9090/zhuku/repo 7 | 8 | 9 | 10 | 2017-12-28T02:01:09.072372Z 11 | 4261 12 | zhoujun 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 5738001b-f13b-4815-ac0f-2e2f54dd1d22 28 | 29 | DACircularProgressView.h 30 | file 31 | 32 | 33 | 34 | 35 | 2018-01-16T02:17:09.000000Z 36 | 11fde9ce062931460406eb79d8a6329d 37 | 2017-12-28T02:01:09.072372Z 38 | 4261 39 | zhoujun 40 | has-props 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 883 62 | 63 | DACircularProgressView.m 64 | file 65 | 66 | 67 | 68 | 69 | 2018-01-16T02:17:09.000000Z 70 | 6ef3449f302133a42a4faf8d293dda3d 71 | 2017-12-28T02:01:09.072372Z 72 | 4261 73 | zhoujun 74 | has-props 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 7307 96 | 97 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/DACircularProgress/.svn/prop-base/DACircularProgressView.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/DACircularProgress/.svn/prop-base/DACircularProgressView.m.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/DACircularProgress/.svn/text-base/DACircularProgressView.h.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // DACircularProgressView.h 3 | // DACircularProgress 4 | // 5 | // Created by Daniel Amitay on 2/6/12. 6 | // Copyright (c) 2012 Daniel Amitay. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface DACircularProgressView : UIView 12 | 13 | @property(nonatomic, strong) UIColor *trackTintColor UI_APPEARANCE_SELECTOR; 14 | @property(nonatomic, strong) UIColor *progressTintColor UI_APPEARANCE_SELECTOR; 15 | @property(nonatomic) NSInteger roundedCorners UI_APPEARANCE_SELECTOR; // Can not use BOOL with UI_APPEARANCE_SELECTOR :-( 16 | @property(nonatomic) CGFloat thicknessRatio UI_APPEARANCE_SELECTOR; 17 | @property(nonatomic) CGFloat progress; 18 | 19 | @property(nonatomic) CGFloat indeterminateDuration UI_APPEARANCE_SELECTOR; 20 | @property(nonatomic) NSInteger indeterminate UI_APPEARANCE_SELECTOR; // Can not use BOOL with UI_APPEARANCE_SELECTOR :-( 21 | 22 | - (void)setProgress:(CGFloat)progress animated:(BOOL)animated; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/DACircularProgress/DACircularProgressView.h: -------------------------------------------------------------------------------- 1 | // 2 | // DACircularProgressView.h 3 | // DACircularProgress 4 | // 5 | // Created by Daniel Amitay on 2/6/12. 6 | // Copyright (c) 2012 Daniel Amitay. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface DACircularProgressView : UIView 12 | 13 | @property(nonatomic, strong) UIColor *trackTintColor UI_APPEARANCE_SELECTOR; 14 | @property(nonatomic, strong) UIColor *progressTintColor UI_APPEARANCE_SELECTOR; 15 | @property(nonatomic) NSInteger roundedCorners UI_APPEARANCE_SELECTOR; // Can not use BOOL with UI_APPEARANCE_SELECTOR :-( 16 | @property(nonatomic) CGFloat thicknessRatio UI_APPEARANCE_SELECTOR; 17 | @property(nonatomic) CGFloat progress; 18 | 19 | @property(nonatomic) CGFloat indeterminateDuration UI_APPEARANCE_SELECTOR; 20 | @property(nonatomic) NSInteger indeterminate UI_APPEARANCE_SELECTOR; // Can not use BOOL with UI_APPEARANCE_SELECTOR :-( 21 | 22 | - (void)setProgress:(CGFloat)progress animated:(BOOL)animated; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/prop-base/EMSDImageCache.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/prop-base/EMSDImageCache.m.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/prop-base/EMSDWebImageCompat.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/prop-base/EMSDWebImageCompat.m.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/prop-base/EMSDWebImageDecoder.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/prop-base/EMSDWebImageDecoder.m.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/prop-base/EMSDWebImageDownloader.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/prop-base/EMSDWebImageDownloader.m.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/prop-base/EMSDWebImageDownloaderOperation.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/prop-base/EMSDWebImageDownloaderOperation.m.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/prop-base/EMSDWebImageManager.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/prop-base/EMSDWebImageManager.m.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/prop-base/EMSDWebImageOperation.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/prop-base/EMSDWebImagePrefetcher.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/prop-base/EMSDWebImagePrefetcher.m.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/prop-base/MKAnnotationView+EMWebCache.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/prop-base/MKAnnotationView+EMWebCache.m.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/prop-base/NSData+EMImageContentType.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/prop-base/NSData+EMImageContentType.m.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/prop-base/UIButton+EMWebCache.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/prop-base/UIButton+EMWebCache.m.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/prop-base/UIImage+EMGIF.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/prop-base/UIImage+EMGIF.m.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/prop-base/UIImage+EMMultiFormat.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/prop-base/UIImage+EMMultiFormat.m.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/prop-base/UIImage+EMWebP.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/prop-base/UIImage+EMWebP.m.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/prop-base/UIImageView+EMHighlightedWebCache.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/prop-base/UIImageView+EMHighlightedWebCache.m.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/prop-base/UIImageView+EMWebCache.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/prop-base/UIImageView+EMWebCache.m.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/prop-base/UIView+EMWebCacheOperation.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/prop-base/UIView+EMWebCacheOperation.m.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/text-base/EMSDWebImageCompat.h.svn-base: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * (c) Jamie Pinkham 5 | * 6 | * For the full copyright and license information, please view the LICENSE 7 | * file that was distributed with this source code. 8 | */ 9 | 10 | #import 11 | 12 | #ifdef __OBJC_GC__ 13 | #error SDWebImage does not support Objective-C Garbage Collection 14 | #endif 15 | 16 | #if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_5_0 17 | #error SDWebImage doesn't support Deployement Target version < 5.0 18 | #endif 19 | 20 | #if !TARGET_OS_IPHONE 21 | #import 22 | #ifndef UIImage 23 | #define UIImage NSImage 24 | #endif 25 | #ifndef UIImageView 26 | #define UIImageView NSImageView 27 | #endif 28 | #else 29 | 30 | #import 31 | 32 | #endif 33 | 34 | #ifndef NS_ENUM 35 | #define NS_ENUM(_type, _name) enum _name : _type _name; enum _name : _type 36 | #endif 37 | 38 | #ifndef NS_OPTIONS 39 | #define NS_OPTIONS(_type, _name) enum _name : _type _name; enum _name : _type 40 | #endif 41 | 42 | #if OS_OBJECT_USE_OBJC 43 | #undef SDDispatchQueueRelease 44 | #undef SDDispatchQueueSetterSementics 45 | #define SDDispatchQueueRelease(q) 46 | #define SDDispatchQueueSetterSementics strong 47 | #else 48 | #undef SDDispatchQueueRelease 49 | #undef SDDispatchQueueSetterSementics 50 | #define SDDispatchQueueRelease(q) (dispatch_release(q)) 51 | #define SDDispatchQueueSetterSementics assign 52 | #endif 53 | 54 | extern UIImage *EMSDScaledImageForKey(NSString *key, UIImage *image); 55 | 56 | typedef void(^EMSDWebImageNoParamsBlock)(); 57 | 58 | #define dispatch_main_sync_safe(block)\ 59 | if ([NSThread isMainThread]) {\ 60 | block();\ 61 | } else {\ 62 | dispatch_sync(dispatch_get_main_queue(), block);\ 63 | } 64 | 65 | #define dispatch_main_async_safe(block)\ 66 | if ([NSThread isMainThread]) {\ 67 | block();\ 68 | } else {\ 69 | dispatch_async(dispatch_get_main_queue(), block);\ 70 | } 71 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/text-base/EMSDWebImageCompat.m.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // EMSDWebImageCompat.m 3 | // SDWebImage 4 | // 5 | // Created by Olivier Poitrey on 11/12/12. 6 | // Copyright (c) 2012 Dailymotion. All rights reserved. 7 | // 8 | 9 | #import "EMSDWebImageCompat.h" 10 | 11 | #if !__has_feature(objc_arc) 12 | #error SDWebImage is ARC only. Either turn on ARC for the project or use -fobjc-arc flag 13 | #endif 14 | 15 | inline UIImage *EMSDScaledImageForKey(NSString *key, UIImage *image) { 16 | if (!image) { 17 | return nil; 18 | } 19 | 20 | if ([image.images count] > 0) { 21 | NSMutableArray *scaledImages = [NSMutableArray array]; 22 | 23 | for (UIImage *tempImage in image.images) { 24 | [scaledImages addObject:EMSDScaledImageForKey(key, tempImage)]; 25 | } 26 | 27 | return [UIImage animatedImageWithImages:scaledImages duration:image.duration]; 28 | } 29 | else { 30 | if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) { 31 | CGFloat scale = 1.0; 32 | if (key.length >= 8) { 33 | // Search @2x. at the end of the string, before a 3 to 4 extension length (only if key len is 8 or more @2x. + 4 len ext) 34 | NSRange range = [key rangeOfString:@"@2x." options:0 range:NSMakeRange(key.length - 8, 5)]; 35 | if (range.location != NSNotFound) { 36 | scale = 2.0; 37 | } 38 | } 39 | 40 | UIImage *scaledImage = [[UIImage alloc] initWithCGImage:image.CGImage scale:scale orientation:image.imageOrientation]; 41 | image = scaledImage; 42 | } 43 | return image; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/text-base/EMSDWebImageDecoder.h.svn-base: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * Created by james on 9/28/11. 6 | * 7 | * For the full copyright and license information, please view the LICENSE 8 | * file that was distributed with this source code. 9 | */ 10 | 11 | #import 12 | #import "EMSDWebImageCompat.h" 13 | 14 | @interface UIImage (ForceDecode) 15 | 16 | + (UIImage *)decodedImageWithImage:(UIImage *)image; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/text-base/EMSDWebImageOperation.h.svn-base: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import 10 | 11 | @protocol EMSDWebImageOperation 12 | 13 | - (void)cancel; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/text-base/NSData+EMImageContentType.h.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Fabrice Aneche on 06/01/14. 3 | // Copyright (c) 2014 Dailymotion. All rights reserved. 4 | // 5 | 6 | #import 7 | 8 | @interface NSData (EMImageContentType) 9 | 10 | /** 11 | * Compute the content type for an image data 12 | * 13 | * @param data the input data 14 | * 15 | * @return the content type as string (i.e. image/jpeg, image/gif) 16 | */ 17 | + (NSString *)sd_contentTypeForImageData:(NSData *)data; 18 | 19 | @end 20 | 21 | 22 | @interface NSData (ImageContentTypeDeprecated) 23 | 24 | + (NSString *)contentTypeForImageData:(NSData *)data __deprecated_msg("Use `sd_contentTypeForImageData:`"); 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/text-base/NSData+EMImageContentType.m.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Fabrice Aneche on 06/01/14. 3 | // Copyright (c) 2014 Dailymotion. All rights reserved. 4 | // 5 | 6 | #import "NSData+EMImageContentType.h" 7 | 8 | 9 | @implementation NSData (EMImageContentType) 10 | 11 | + (NSString *)sd_contentTypeForImageData:(NSData *)data { 12 | uint8_t c; 13 | [data getBytes:&c length:1]; 14 | switch (c) { 15 | case 0xFF: 16 | return @"image/jpeg"; 17 | case 0x89: 18 | return @"image/png"; 19 | case 0x47: 20 | return @"image/gif"; 21 | case 0x49: 22 | case 0x4D: 23 | return @"image/tiff"; 24 | case 0x52: 25 | // R as RIFF for WEBP 26 | if ([data length] < 12) { 27 | return nil; 28 | } 29 | 30 | NSString *testString = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(0, 12)] encoding:NSASCIIStringEncoding]; 31 | if ([testString hasPrefix:@"RIFF"] && [testString hasSuffix:@"WEBP"]) { 32 | return @"image/webp"; 33 | } 34 | 35 | return nil; 36 | } 37 | return nil; 38 | } 39 | 40 | @end 41 | 42 | 43 | @implementation NSData (ImageContentTypeDeprecated) 44 | 45 | + (NSString *)contentTypeForImageData:(NSData *)data { 46 | return [self sd_contentTypeForImageData:data]; 47 | } 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/text-base/UIImage+EMGIF.h.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+GIF.h 3 | // LBGIFImage 4 | // 5 | // Created by Laurin Brandner on 06.01.12. 6 | // Copyright (c) 2012 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (EMGIF) 12 | 13 | + (UIImage *)sd_animatedGIFNamed:(NSString *)name; 14 | 15 | + (UIImage *)sd_animatedGIFWithData:(NSData *)data; 16 | 17 | - (UIImage *)sd_animatedImageByScalingAndCroppingToSize:(CGSize)size; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/text-base/UIImage+EMMultiFormat.h.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+EMMultiFormat.h 3 | // SDWebImage 4 | // 5 | // Created by Olivier Poitrey on 07/06/13. 6 | // Copyright (c) 2013 Dailymotion. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (EMMultiFormat) 12 | 13 | + (UIImage *)sd_imageWithData:(NSData *)data; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/text-base/UIImage+EMWebP.h.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+WebP.h 3 | // SDWebImage 4 | // 5 | // Created by Olivier Poitrey on 07/06/13. 6 | // Copyright (c) 2013 Dailymotion. All rights reserved. 7 | // 8 | 9 | #ifdef SD_WEBP 10 | 11 | #import 12 | 13 | // Fix for issue #416 Undefined symbols for architecture armv7 since WebP introduction when deploying to device 14 | void WebPInitPremultiplyNEON(void); 15 | 16 | void WebPInitUpsamplersNEON(void); 17 | 18 | void VP8DspInitNEON(void); 19 | 20 | @interface UIImage (WebP) 21 | 22 | + (UIImage *)sd_imageWithWebPData:(NSData *)data; 23 | 24 | @end 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/text-base/UIImage+EMWebP.m.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+WebP.m 3 | // SDWebImage 4 | // 5 | // Created by Olivier Poitrey on 07/06/13. 6 | // Copyright (c) 2013 Dailymotion. All rights reserved. 7 | // 8 | 9 | #ifdef SD_WEBP 10 | #import "UIImage+EMWebP.h" 11 | #import "webp/decode.h" 12 | 13 | // Callback for CGDataProviderRelease 14 | static void FreeImageData(void *info, const void *data, size_t size) 15 | { 16 | free((void *)data); 17 | } 18 | 19 | @implementation UIImage (WebP) 20 | 21 | + (UIImage *)sd_imageWithWebPData:(NSData *)data { 22 | WebPDecoderConfig config; 23 | if (!WebPInitDecoderConfig(&config)) { 24 | return nil; 25 | } 26 | 27 | config.output.colorspace = MODE_rgbA; 28 | config.options.use_threads = 1; 29 | 30 | // Decode the WebP image data into a RGBA value array. 31 | if (WebPDecode(data.bytes, data.length, &config) != VP8_STATUS_OK) { 32 | return nil; 33 | } 34 | 35 | int width = config.input.width; 36 | int height = config.input.height; 37 | if (config.options.use_scaling) { 38 | width = config.options.scaled_width; 39 | height = config.options.scaled_height; 40 | } 41 | 42 | // Construct a UIImage from the decoded RGBA value array. 43 | CGDataProviderRef provider = 44 | CGDataProviderCreateWithData(NULL, config.output.u.RGBA.rgba, config.output.u.RGBA.size, FreeImageData); 45 | CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB(); 46 | CGBitmapInfo bitmapInfo = kCGBitmapByteOrder32Big | kCGImageAlphaPremultipliedLast; 47 | CGColorRenderingIntent renderingIntent = kCGRenderingIntentDefault; 48 | CGImageRef imageRef = CGImageCreate(width, height, 8, 32, 4 * width, colorSpaceRef, bitmapInfo, provider, NULL, NO, renderingIntent); 49 | 50 | CGColorSpaceRelease(colorSpaceRef); 51 | CGDataProviderRelease(provider); 52 | 53 | UIImage *image = [[UIImage alloc] initWithCGImage:imageRef]; 54 | CGImageRelease(imageRef); 55 | 56 | return image; 57 | } 58 | 59 | @end 60 | 61 | #if !COCOAPODS 62 | // Functions to resolve some undefined symbols when using WebP and force_load flag 63 | void WebPInitPremultiplyNEON(void) {} 64 | void WebPInitUpsamplersNEON(void) {} 65 | void VP8DspInitNEON(void) {} 66 | #endif 67 | 68 | #endif 69 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/text-base/UIView+EMWebCacheOperation.h.svn-base: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import 10 | #import "EMSDWebImageManager.h" 11 | 12 | @interface UIView (EMWebCacheOperation) 13 | 14 | /** 15 | * Set the image load operation (storage in a UIView based dictionary) 16 | * 17 | * @param operation the operation 18 | * @param key key for storing the operation 19 | */ 20 | - (void)sd_setImageLoadOperation:(id)operation forKey:(NSString *)key; 21 | 22 | /** 23 | * Cancel all operations for the current UIView and key 24 | * 25 | * @param key key for identifying the operations 26 | */ 27 | - (void)sd_cancelImageLoadOperationWithKey:(NSString *)key; 28 | 29 | /** 30 | * Just remove the operations corresponding to the current UIView and key without cancelling them 31 | * 32 | * @param key key for identifying the operations 33 | */ 34 | - (void)sd_removeImageLoadOperationWithKey:(NSString *)key; 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/.svn/text-base/UIView+EMWebCacheOperation.m.svn-base: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "UIView+EMWebCacheOperation.h" 10 | #import "objc/runtime.h" 11 | 12 | static char loadOperationKey; 13 | 14 | @implementation UIView (EMWebCacheOperation) 15 | 16 | - (NSMutableDictionary *)operationDictionary { 17 | NSMutableDictionary *operations = objc_getAssociatedObject(self, &loadOperationKey); 18 | if (operations) { 19 | return operations; 20 | } 21 | operations = [NSMutableDictionary dictionary]; 22 | objc_setAssociatedObject(self, &loadOperationKey, operations, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 23 | return operations; 24 | } 25 | 26 | - (void)sd_setImageLoadOperation:(id)operation forKey:(NSString *)key { 27 | [self sd_cancelImageLoadOperationWithKey:key]; 28 | NSMutableDictionary *operationDictionary = [self operationDictionary]; 29 | [operationDictionary setObject:operation forKey:key]; 30 | } 31 | 32 | - (void)sd_cancelImageLoadOperationWithKey:(NSString *)key { 33 | // Cancel in progress downloader from queue 34 | NSMutableDictionary *operationDictionary = [self operationDictionary]; 35 | id operations = [operationDictionary objectForKey:key]; 36 | if (operations) { 37 | if ([operations isKindOfClass:[NSArray class]]) { 38 | for (id operation in operations) { 39 | if (operation) { 40 | [operation cancel]; 41 | } 42 | } 43 | } else if ([operations conformsToProtocol:@protocol(EMSDWebImageOperation)]){ 44 | [(id) operations cancel]; 45 | } 46 | [operationDictionary removeObjectForKey:key]; 47 | } 48 | } 49 | 50 | - (void)sd_removeImageLoadOperationWithKey:(NSString *)key { 51 | NSMutableDictionary *operationDictionary = [self operationDictionary]; 52 | [operationDictionary removeObjectForKey:key]; 53 | } 54 | 55 | @end 56 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/EMSDWebImageCompat.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * (c) Jamie Pinkham 5 | * 6 | * For the full copyright and license information, please view the LICENSE 7 | * file that was distributed with this source code. 8 | */ 9 | 10 | #import 11 | 12 | #ifdef __OBJC_GC__ 13 | #error SDWebImage does not support Objective-C Garbage Collection 14 | #endif 15 | 16 | #if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_5_0 17 | #error SDWebImage doesn't support Deployement Target version < 5.0 18 | #endif 19 | 20 | #if !TARGET_OS_IPHONE 21 | #import 22 | #ifndef UIImage 23 | #define UIImage NSImage 24 | #endif 25 | #ifndef UIImageView 26 | #define UIImageView NSImageView 27 | #endif 28 | #else 29 | 30 | #import 31 | 32 | #endif 33 | 34 | #ifndef NS_ENUM 35 | #define NS_ENUM(_type, _name) enum _name : _type _name; enum _name : _type 36 | #endif 37 | 38 | #ifndef NS_OPTIONS 39 | #define NS_OPTIONS(_type, _name) enum _name : _type _name; enum _name : _type 40 | #endif 41 | 42 | #if OS_OBJECT_USE_OBJC 43 | #undef SDDispatchQueueRelease 44 | #undef SDDispatchQueueSetterSementics 45 | #define SDDispatchQueueRelease(q) 46 | #define SDDispatchQueueSetterSementics strong 47 | #else 48 | #undef SDDispatchQueueRelease 49 | #undef SDDispatchQueueSetterSementics 50 | #define SDDispatchQueueRelease(q) (dispatch_release(q)) 51 | #define SDDispatchQueueSetterSementics assign 52 | #endif 53 | 54 | extern UIImage *EMSDScaledImageForKey(NSString *key, UIImage *image); 55 | 56 | typedef void(^EMSDWebImageNoParamsBlock)(); 57 | 58 | #define dispatch_main_sync_safe(block)\ 59 | if ([NSThread isMainThread]) {\ 60 | block();\ 61 | } else {\ 62 | dispatch_sync(dispatch_get_main_queue(), block);\ 63 | } 64 | 65 | #define dispatch_main_async_safe(block)\ 66 | if ([NSThread isMainThread]) {\ 67 | block();\ 68 | } else {\ 69 | dispatch_async(dispatch_get_main_queue(), block);\ 70 | } 71 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/EMSDWebImageCompat.m: -------------------------------------------------------------------------------- 1 | // 2 | // EMSDWebImageCompat.m 3 | // SDWebImage 4 | // 5 | // Created by Olivier Poitrey on 11/12/12. 6 | // Copyright (c) 2012 Dailymotion. All rights reserved. 7 | // 8 | 9 | #import "EMSDWebImageCompat.h" 10 | 11 | #if !__has_feature(objc_arc) 12 | #error SDWebImage is ARC only. Either turn on ARC for the project or use -fobjc-arc flag 13 | #endif 14 | 15 | inline UIImage *EMSDScaledImageForKey(NSString *key, UIImage *image) { 16 | if (!image) { 17 | return nil; 18 | } 19 | 20 | if ([image.images count] > 0) { 21 | NSMutableArray *scaledImages = [NSMutableArray array]; 22 | 23 | for (UIImage *tempImage in image.images) { 24 | [scaledImages addObject:EMSDScaledImageForKey(key, tempImage)]; 25 | } 26 | 27 | return [UIImage animatedImageWithImages:scaledImages duration:image.duration]; 28 | } 29 | else { 30 | if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) { 31 | CGFloat scale = 1.0; 32 | if (key.length >= 8) { 33 | // Search @2x. at the end of the string, before a 3 to 4 extension length (only if key len is 8 or more @2x. + 4 len ext) 34 | NSRange range = [key rangeOfString:@"@2x." options:0 range:NSMakeRange(key.length - 8, 5)]; 35 | if (range.location != NSNotFound) { 36 | scale = 2.0; 37 | } 38 | } 39 | 40 | UIImage *scaledImage = [[UIImage alloc] initWithCGImage:image.CGImage scale:scale orientation:image.imageOrientation]; 41 | image = scaledImage; 42 | } 43 | return image; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/EMSDWebImageDecoder.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * Created by james on 9/28/11. 6 | * 7 | * For the full copyright and license information, please view the LICENSE 8 | * file that was distributed with this source code. 9 | */ 10 | 11 | #import 12 | #import "EMSDWebImageCompat.h" 13 | 14 | @interface UIImage (ForceDecode) 15 | 16 | + (UIImage *)decodedImageWithImage:(UIImage *)image; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/EMSDWebImageOperation.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import 10 | 11 | @protocol EMSDWebImageOperation 12 | 13 | - (void)cancel; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/NSData+EMImageContentType.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Fabrice Aneche on 06/01/14. 3 | // Copyright (c) 2014 Dailymotion. All rights reserved. 4 | // 5 | 6 | #import 7 | 8 | @interface NSData (EMImageContentType) 9 | 10 | /** 11 | * Compute the content type for an image data 12 | * 13 | * @param data the input data 14 | * 15 | * @return the content type as string (i.e. image/jpeg, image/gif) 16 | */ 17 | + (NSString *)sd_contentTypeForImageData:(NSData *)data; 18 | 19 | @end 20 | 21 | 22 | @interface NSData (ImageContentTypeDeprecated) 23 | 24 | + (NSString *)contentTypeForImageData:(NSData *)data __deprecated_msg("Use `sd_contentTypeForImageData:`"); 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/NSData+EMImageContentType.m: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Fabrice Aneche on 06/01/14. 3 | // Copyright (c) 2014 Dailymotion. All rights reserved. 4 | // 5 | 6 | #import "NSData+EMImageContentType.h" 7 | 8 | 9 | @implementation NSData (EMImageContentType) 10 | 11 | + (NSString *)sd_contentTypeForImageData:(NSData *)data { 12 | uint8_t c; 13 | [data getBytes:&c length:1]; 14 | switch (c) { 15 | case 0xFF: 16 | return @"image/jpeg"; 17 | case 0x89: 18 | return @"image/png"; 19 | case 0x47: 20 | return @"image/gif"; 21 | case 0x49: 22 | case 0x4D: 23 | return @"image/tiff"; 24 | case 0x52: 25 | // R as RIFF for WEBP 26 | if ([data length] < 12) { 27 | return nil; 28 | } 29 | 30 | NSString *testString = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(0, 12)] encoding:NSASCIIStringEncoding]; 31 | if ([testString hasPrefix:@"RIFF"] && [testString hasSuffix:@"WEBP"]) { 32 | return @"image/webp"; 33 | } 34 | 35 | return nil; 36 | } 37 | return nil; 38 | } 39 | 40 | @end 41 | 42 | 43 | @implementation NSData (ImageContentTypeDeprecated) 44 | 45 | + (NSString *)contentTypeForImageData:(NSData *)data { 46 | return [self sd_contentTypeForImageData:data]; 47 | } 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/UIImage+EMGIF.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+GIF.h 3 | // LBGIFImage 4 | // 5 | // Created by Laurin Brandner on 06.01.12. 6 | // Copyright (c) 2012 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (EMGIF) 12 | 13 | + (UIImage *)sd_animatedGIFNamed:(NSString *)name; 14 | 15 | + (UIImage *)sd_animatedGIFWithData:(NSData *)data; 16 | 17 | - (UIImage *)sd_animatedImageByScalingAndCroppingToSize:(CGSize)size; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/UIImage+EMMultiFormat.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+EMMultiFormat.h 3 | // SDWebImage 4 | // 5 | // Created by Olivier Poitrey on 07/06/13. 6 | // Copyright (c) 2013 Dailymotion. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (EMMultiFormat) 12 | 13 | + (UIImage *)sd_imageWithData:(NSData *)data; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/UIImage+EMWebP.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+WebP.h 3 | // SDWebImage 4 | // 5 | // Created by Olivier Poitrey on 07/06/13. 6 | // Copyright (c) 2013 Dailymotion. All rights reserved. 7 | // 8 | 9 | #ifdef SD_WEBP 10 | 11 | #import 12 | 13 | // Fix for issue #416 Undefined symbols for architecture armv7 since WebP introduction when deploying to device 14 | void WebPInitPremultiplyNEON(void); 15 | 16 | void WebPInitUpsamplersNEON(void); 17 | 18 | void VP8DspInitNEON(void); 19 | 20 | @interface UIImage (WebP) 21 | 22 | + (UIImage *)sd_imageWithWebPData:(NSData *)data; 23 | 24 | @end 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/UIImage+EMWebP.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+WebP.m 3 | // SDWebImage 4 | // 5 | // Created by Olivier Poitrey on 07/06/13. 6 | // Copyright (c) 2013 Dailymotion. All rights reserved. 7 | // 8 | 9 | #ifdef SD_WEBP 10 | #import "UIImage+EMWebP.h" 11 | #import "webp/decode.h" 12 | 13 | // Callback for CGDataProviderRelease 14 | static void FreeImageData(void *info, const void *data, size_t size) 15 | { 16 | free((void *)data); 17 | } 18 | 19 | @implementation UIImage (WebP) 20 | 21 | + (UIImage *)sd_imageWithWebPData:(NSData *)data { 22 | WebPDecoderConfig config; 23 | if (!WebPInitDecoderConfig(&config)) { 24 | return nil; 25 | } 26 | 27 | config.output.colorspace = MODE_rgbA; 28 | config.options.use_threads = 1; 29 | 30 | // Decode the WebP image data into a RGBA value array. 31 | if (WebPDecode(data.bytes, data.length, &config) != VP8_STATUS_OK) { 32 | return nil; 33 | } 34 | 35 | int width = config.input.width; 36 | int height = config.input.height; 37 | if (config.options.use_scaling) { 38 | width = config.options.scaled_width; 39 | height = config.options.scaled_height; 40 | } 41 | 42 | // Construct a UIImage from the decoded RGBA value array. 43 | CGDataProviderRef provider = 44 | CGDataProviderCreateWithData(NULL, config.output.u.RGBA.rgba, config.output.u.RGBA.size, FreeImageData); 45 | CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB(); 46 | CGBitmapInfo bitmapInfo = kCGBitmapByteOrder32Big | kCGImageAlphaPremultipliedLast; 47 | CGColorRenderingIntent renderingIntent = kCGRenderingIntentDefault; 48 | CGImageRef imageRef = CGImageCreate(width, height, 8, 32, 4 * width, colorSpaceRef, bitmapInfo, provider, NULL, NO, renderingIntent); 49 | 50 | CGColorSpaceRelease(colorSpaceRef); 51 | CGDataProviderRelease(provider); 52 | 53 | UIImage *image = [[UIImage alloc] initWithCGImage:imageRef]; 54 | CGImageRelease(imageRef); 55 | 56 | return image; 57 | } 58 | 59 | @end 60 | 61 | #if !COCOAPODS 62 | // Functions to resolve some undefined symbols when using WebP and force_load flag 63 | void WebPInitPremultiplyNEON(void) {} 64 | void WebPInitUpsamplersNEON(void) {} 65 | void VP8DspInitNEON(void) {} 66 | #endif 67 | 68 | #endif 69 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/UIView+EMWebCacheOperation.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import 10 | #import "EMSDWebImageManager.h" 11 | 12 | @interface UIView (EMWebCacheOperation) 13 | 14 | /** 15 | * Set the image load operation (storage in a UIView based dictionary) 16 | * 17 | * @param operation the operation 18 | * @param key key for storing the operation 19 | */ 20 | - (void)sd_setImageLoadOperation:(id)operation forKey:(NSString *)key; 21 | 22 | /** 23 | * Cancel all operations for the current UIView and key 24 | * 25 | * @param key key for identifying the operations 26 | */ 27 | - (void)sd_cancelImageLoadOperationWithKey:(NSString *)key; 28 | 29 | /** 30 | * Just remove the operations corresponding to the current UIView and key without cancelling them 31 | * 32 | * @param key key for identifying the operations 33 | */ 34 | - (void)sd_removeImageLoadOperationWithKey:(NSString *)key; 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/EMSDWebImage/UIView+EMWebCacheOperation.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "UIView+EMWebCacheOperation.h" 10 | #import "objc/runtime.h" 11 | 12 | static char loadOperationKey; 13 | 14 | @implementation UIView (EMWebCacheOperation) 15 | 16 | - (NSMutableDictionary *)operationDictionary { 17 | NSMutableDictionary *operations = objc_getAssociatedObject(self, &loadOperationKey); 18 | if (operations) { 19 | return operations; 20 | } 21 | operations = [NSMutableDictionary dictionary]; 22 | objc_setAssociatedObject(self, &loadOperationKey, operations, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 23 | return operations; 24 | } 25 | 26 | - (void)sd_setImageLoadOperation:(id)operation forKey:(NSString *)key { 27 | [self sd_cancelImageLoadOperationWithKey:key]; 28 | NSMutableDictionary *operationDictionary = [self operationDictionary]; 29 | [operationDictionary setObject:operation forKey:key]; 30 | } 31 | 32 | - (void)sd_cancelImageLoadOperationWithKey:(NSString *)key { 33 | // Cancel in progress downloader from queue 34 | NSMutableDictionary *operationDictionary = [self operationDictionary]; 35 | id operations = [operationDictionary objectForKey:key]; 36 | if (operations) { 37 | if ([operations isKindOfClass:[NSArray class]]) { 38 | for (id operation in operations) { 39 | if (operation) { 40 | [operation cancel]; 41 | } 42 | } 43 | } else if ([operations conformsToProtocol:@protocol(EMSDWebImageOperation)]){ 44 | [(id) operations cancel]; 45 | } 46 | [operationDictionary removeObjectForKey:key]; 47 | } 48 | } 49 | 50 | - (void)sd_removeImageLoadOperationWithKey:(NSString *)key { 51 | NSMutableDictionary *operationDictionary = [self operationDictionary]; 52 | [operationDictionary removeObjectForKey:key]; 53 | } 54 | 55 | @end 56 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/prop-base/NSIndexPath+PSTCollectionViewAdditions.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/prop-base/NSIndexPath+PSTCollectionViewAdditions.m.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/prop-base/PSTCollectionView.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/prop-base/PSTCollectionView.m.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/prop-base/PSTCollectionViewCell.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/prop-base/PSTCollectionViewCell.m.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/prop-base/PSTCollectionViewCommon.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/prop-base/PSTCollectionViewController.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/prop-base/PSTCollectionViewController.m.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/prop-base/PSTCollectionViewData.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/prop-base/PSTCollectionViewData.m.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/prop-base/PSTCollectionViewFlowLayout.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/prop-base/PSTCollectionViewFlowLayout.m.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/prop-base/PSTCollectionViewItemKey.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/prop-base/PSTCollectionViewItemKey.m.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/prop-base/PSTCollectionViewLayout+Internals.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/prop-base/PSTCollectionViewLayout.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/prop-base/PSTCollectionViewLayout.m.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/prop-base/PSTCollectionViewUpdateItem.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/prop-base/PSTCollectionViewUpdateItem.m.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/prop-base/PSTGridLayoutInfo.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/prop-base/PSTGridLayoutInfo.m.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/prop-base/PSTGridLayoutItem.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/prop-base/PSTGridLayoutItem.m.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/prop-base/PSTGridLayoutRow.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/prop-base/PSTGridLayoutRow.m.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/prop-base/PSTGridLayoutSection.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/prop-base/PSTGridLayoutSection.m.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/text-base/NSIndexPath+PSTCollectionViewAdditions.h.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // NSIndexPath+PSTCollectionViewAdditions.h 3 | // PSTCollectionView 4 | // 5 | // Copyright (c) 2013 Peter Steinberger. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | #if __IPHONE_OS_VERSION_MIN_REQUIRED < 60000 11 | 12 | @interface NSIndexPath (PSTCollectionViewAdditions) 13 | 14 | + (NSIndexPath *)indexPathForItem:(NSInteger)item inSection:(NSInteger)section; 15 | 16 | - (NSInteger)item; 17 | 18 | @end 19 | 20 | #endif 21 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/text-base/NSIndexPath+PSTCollectionViewAdditions.m.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // NSIndexPath+PSTCollectionViewAdditions.m 3 | // PSTCollectionView 4 | // 5 | // Copyright (c) 2013 Peter Steinberger. All rights reserved. 6 | // 7 | 8 | #import "NSIndexPath+PSTCollectionViewAdditions.h" 9 | 10 | #if __IPHONE_OS_VERSION_MIN_REQUIRED < 60000 11 | 12 | @implementation NSIndexPath (PSTCollectionViewAdditions) 13 | 14 | // Simple NSIndexPath addition to allow using "item" instead of "row". 15 | + (NSIndexPath *)indexPathForItem:(NSInteger)item inSection:(NSInteger)section { 16 | return [NSIndexPath indexPathForRow:item inSection:section]; 17 | } 18 | 19 | - (NSInteger)item { 20 | return self.row; 21 | } 22 | 23 | @end 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/text-base/PSTCollectionViewCell.h.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // PSTCollectionViewCell.h 3 | // PSPDFKit 4 | // 5 | // Copyright (c) 2012-2013 Peter Steinberger. All rights reserved. 6 | // 7 | 8 | #import "PSTCollectionViewCommon.h" 9 | 10 | @class PSTCollectionViewLayout, PSTCollectionView, PSTCollectionViewLayoutAttributes; 11 | 12 | @interface PSTCollectionReusableView : UIView 13 | 14 | @property (nonatomic, readonly, copy) NSString *reuseIdentifier; 15 | 16 | // Override in subclasses. Called before instance is returned to the reuse queue. 17 | - (void)prepareForReuse; 18 | 19 | // Apply layout attributes on cell. 20 | - (void)applyLayoutAttributes:(PSTCollectionViewLayoutAttributes *)layoutAttributes; 21 | - (void)willTransitionFromLayout:(PSTCollectionViewLayout *)oldLayout toLayout:(PSTCollectionViewLayout *)newLayout; 22 | - (void)didTransitionFromLayout:(PSTCollectionViewLayout *)oldLayout toLayout:(PSTCollectionViewLayout *)newLayout; 23 | 24 | @end 25 | 26 | @interface PSTCollectionReusableView (Internal) 27 | @property (nonatomic, unsafe_unretained) PSTCollectionView *collectionView; 28 | @property (nonatomic, copy) NSString *reuseIdentifier; 29 | @property (nonatomic, strong, readonly) PSTCollectionViewLayoutAttributes *layoutAttributes; 30 | @end 31 | 32 | 33 | @interface PSTCollectionViewCell : PSTCollectionReusableView 34 | 35 | @property (nonatomic, readonly) UIView *contentView; // add custom subviews to the cell's contentView 36 | 37 | // Cells become highlighted when the user touches them. 38 | // The selected state is toggled when the user lifts up from a highlighted cell. 39 | // Override these methods to provide custom UI for a selected or highlighted state. 40 | // The collection view may call the setters inside an animation block. 41 | @property (nonatomic, getter=isSelected) BOOL selected; 42 | @property (nonatomic, getter=isHighlighted) BOOL highlighted; 43 | 44 | // The background view is a subview behind all other views. 45 | // If selectedBackgroundView is different than backgroundView, it will be placed above the background view and animated in on selection. 46 | @property (nonatomic, strong) UIView *backgroundView; 47 | @property (nonatomic, strong) UIView *selectedBackgroundView; 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/text-base/PSTCollectionViewController.h.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // PSTCollectionViewController.h 3 | // PSPDFKit 4 | // 5 | // Copyright (c) 2012-2013 Peter Steinberger. All rights reserved. 6 | // 7 | 8 | #import "PSTCollectionViewCommon.h" 9 | 10 | @class PSTCollectionViewLayout, PSTCollectionViewController; 11 | 12 | // Simple controller-wrapper around PSTCollectionView. 13 | @interface PSTCollectionViewController : UIViewController 14 | 15 | // Designated initializer. 16 | - (id)initWithCollectionViewLayout:(PSTCollectionViewLayout *)layout; 17 | 18 | // Internally used collection view. If not set, created during loadView. 19 | @property (nonatomic, strong) PSTCollectionView *collectionView; 20 | 21 | // Defaults to YES, and if YES, any selection is cleared in viewWillAppear: 22 | @property (nonatomic, assign) BOOL clearsSelectionOnViewWillAppear; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/text-base/PSTCollectionViewItemKey.h.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // PSTCollectionViewItemKey.h 3 | // PSPDFKit 4 | // 5 | // Copyright (c) 2012-2013 Peter Steinberger. All rights reserved. 6 | // 7 | 8 | #import "PSTCollectionViewCommon.h" 9 | #import "PSTCollectionViewLayout.h" 10 | 11 | extern NSString *const PSTCollectionElementKindCell; 12 | extern NSString *const PSTCollectionElementKindDecorationView; 13 | @class PSTCollectionViewLayoutAttributes; 14 | 15 | NSString *PSTCollectionViewItemTypeToString(PSTCollectionViewItemType type); // debug helper 16 | 17 | // Used in NSDictionaries 18 | @interface PSTCollectionViewItemKey : NSObject 19 | 20 | + (id)collectionItemKeyForLayoutAttributes:(PSTCollectionViewLayoutAttributes *)layoutAttributes; 21 | 22 | + (id)collectionItemKeyForCellWithIndexPath:(NSIndexPath *)indexPath; 23 | 24 | @property (nonatomic, assign) PSTCollectionViewItemType type; 25 | @property (nonatomic, strong) NSIndexPath *indexPath; 26 | @property (nonatomic, strong) NSString *identifier; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/text-base/PSTCollectionViewLayout+Internals.h.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // PSTCollectionViewLayout+Internals.h 3 | // FMPSTCollectionView 4 | // 5 | // Created by Scott Talbot on 27/02/13. 6 | // Copyright (c) 2013 Scott Talbot. All rights reserved. 7 | // 8 | 9 | #import "PSTCollectionViewLayout.h" 10 | 11 | 12 | @interface PSTCollectionViewLayout (Internals) 13 | 14 | @property (nonatomic, copy, readonly) NSDictionary *decorationViewClassDict; 15 | @property (nonatomic, copy, readonly) NSDictionary *decorationViewNibDict; 16 | @property (nonatomic, copy, readonly) NSDictionary *decorationViewExternalObjectsTables; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/text-base/PSTCollectionViewUpdateItem.h.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // PSTCollectionViewUpdateItem.h 3 | // PSPDFKit 4 | // 5 | // Copyright (c) 2012-2013 Peter Steinberger. All rights reserved. 6 | // Contributed by Sergey Gavrilyuk. 7 | // 8 | 9 | #import 10 | 11 | typedef NS_ENUM(NSInteger, PSTCollectionUpdateAction) { 12 | PSTCollectionUpdateActionInsert, 13 | PSTCollectionUpdateActionDelete, 14 | PSTCollectionUpdateActionReload, 15 | PSTCollectionUpdateActionMove, 16 | PSTCollectionUpdateActionNone 17 | }; 18 | 19 | @interface PSTCollectionViewUpdateItem : NSObject 20 | 21 | @property (nonatomic, readonly, strong) NSIndexPath *indexPathBeforeUpdate; // nil for PSTCollectionUpdateActionInsert 22 | @property (nonatomic, readonly, strong) NSIndexPath *indexPathAfterUpdate; // nil for PSTCollectionUpdateActionDelete 23 | @property (nonatomic, readonly, assign) PSTCollectionUpdateAction updateAction; 24 | 25 | 26 | - (id)initWithInitialIndexPath:(NSIndexPath *)arg1 27 | finalIndexPath:(NSIndexPath *)arg2 28 | updateAction:(PSTCollectionUpdateAction)arg3; 29 | 30 | - (id)initWithAction:(PSTCollectionUpdateAction)arg1 31 | forIndexPath:(NSIndexPath *)indexPath; 32 | 33 | - (id)initWithOldIndexPath:(NSIndexPath *)arg1 newIndexPath:(NSIndexPath *)arg2; 34 | 35 | - (PSTCollectionUpdateAction)updateAction; 36 | 37 | - (NSComparisonResult)compareIndexPaths:(PSTCollectionViewUpdateItem *)otherItem; 38 | 39 | - (NSComparisonResult)inverseCompareIndexPaths:(PSTCollectionViewUpdateItem *)otherItem; 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/text-base/PSTGridLayoutInfo.h.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // PSTGridLayoutInfo.h 3 | // PSPDFKit 4 | // 5 | // Copyright (c) 2012-2013 Peter Steinberger. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @class PSTGridLayoutSection; 11 | 12 | /* 13 | Every PSTCollectionViewLayout has a PSTGridLayoutInfo attached. 14 | Is used extensively in PSTCollectionViewFlowLayout. 15 | */ 16 | @interface PSTGridLayoutInfo : NSObject 17 | 18 | @property (nonatomic, strong, readonly) NSArray *sections; 19 | @property (nonatomic, strong) NSDictionary *rowAlignmentOptions; 20 | @property (nonatomic, assign) BOOL usesFloatingHeaderFooter; 21 | 22 | // Vertical/horizontal dimension (depending on horizontal) 23 | // Used to create row objects 24 | @property (nonatomic, assign) CGFloat dimension; 25 | 26 | @property (nonatomic, assign) BOOL horizontal; 27 | @property (nonatomic, assign) BOOL leftToRight; 28 | @property (nonatomic, assign) CGSize contentSize; 29 | 30 | // Frame for specific PSTGridLayoutItem. 31 | - (CGRect)frameForItemAtIndexPath:(NSIndexPath *)indexPath; 32 | 33 | // Add new section. Invalidates layout. 34 | - (PSTGridLayoutSection *)addSection; 35 | 36 | // forces the layout to recompute on next access 37 | // TODO; what's the parameter for? 38 | - (void)invalidate:(BOOL)arg; 39 | 40 | // Make a copy of the current state. 41 | - (PSTGridLayoutInfo *)snapshot; 42 | 43 | @end 44 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/text-base/PSTGridLayoutItem.h.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // PSTGridLayoutItem.h 3 | // PSPDFKit 4 | // 5 | // Copyright (c) 2012-2013 Peter Steinberger. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @class PSTGridLayoutSection, PSTGridLayoutRow; 11 | 12 | // Represents a single grid item; only created for non-uniform-sized grids. 13 | @interface PSTGridLayoutItem : NSObject 14 | 15 | @property (nonatomic, unsafe_unretained) PSTGridLayoutSection *section; 16 | @property (nonatomic, unsafe_unretained) PSTGridLayoutRow *rowObject; 17 | @property (nonatomic, assign) CGRect itemFrame; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/text-base/PSTGridLayoutItem.m.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // PSTGridLayoutItem.m 3 | // PSPDFKit 4 | // 5 | // Copyright (c) 2012-2013 Peter Steinberger. All rights reserved. 6 | // 7 | 8 | #import "PSTGridLayoutItem.h" 9 | 10 | @implementation PSTGridLayoutItem 11 | 12 | /////////////////////////////////////////////////////////////////////////////////////////// 13 | #pragma mark - NSObject 14 | 15 | - (NSString *)description { 16 | return [NSString stringWithFormat:@"<%@: %p itemFrame:%@>", NSStringFromClass(self.class), self, NSStringFromCGRect(self.itemFrame)]; 17 | } 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/.svn/text-base/PSTGridLayoutRow.h.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // PSTGridLayoutRow.h 3 | // PSPDFKit 4 | // 5 | // Copyright (c) 2012-2013 Peter Steinberger. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @class PSTGridLayoutSection, PSTGridLayoutItem; 11 | 12 | @interface PSTGridLayoutRow : NSObject 13 | 14 | @property (nonatomic, unsafe_unretained) PSTGridLayoutSection *section; 15 | @property (nonatomic, strong, readonly) NSArray *items; 16 | @property (nonatomic, assign) CGSize rowSize; 17 | @property (nonatomic, assign) CGRect rowFrame; 18 | @property (nonatomic, assign) NSInteger index; 19 | @property (nonatomic, assign) BOOL complete; 20 | @property (nonatomic, assign) BOOL fixedItemSize; 21 | 22 | // @steipete addition for row-fastPath 23 | @property (nonatomic, assign) NSInteger itemCount; 24 | 25 | //- (PSTGridLayoutRow *)copyFromSection:(PSTGridLayoutSection *)section; // ??? 26 | 27 | // Add new item to items array. 28 | - (void)addItem:(PSTGridLayoutItem *)item; 29 | 30 | // Layout current row (if invalid) 31 | - (void)layoutRow; 32 | 33 | // @steipete: Helper to save code in PSTCollectionViewFlowLayout. 34 | // Returns the item rects when fixedItemSize is enabled. 35 | - (NSArray *)itemRects; 36 | 37 | // Set current row frame invalid. 38 | - (void)invalidate; 39 | 40 | // Copy a snapshot of the current row data 41 | - (PSTGridLayoutRow *)snapshot; 42 | 43 | @end 44 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/NSIndexPath+PSTCollectionViewAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSIndexPath+PSTCollectionViewAdditions.h 3 | // PSTCollectionView 4 | // 5 | // Copyright (c) 2013 Peter Steinberger. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | #if __IPHONE_OS_VERSION_MIN_REQUIRED < 60000 11 | 12 | @interface NSIndexPath (PSTCollectionViewAdditions) 13 | 14 | + (NSIndexPath *)indexPathForItem:(NSInteger)item inSection:(NSInteger)section; 15 | 16 | - (NSInteger)item; 17 | 18 | @end 19 | 20 | #endif 21 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/NSIndexPath+PSTCollectionViewAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSIndexPath+PSTCollectionViewAdditions.m 3 | // PSTCollectionView 4 | // 5 | // Copyright (c) 2013 Peter Steinberger. All rights reserved. 6 | // 7 | 8 | #import "NSIndexPath+PSTCollectionViewAdditions.h" 9 | 10 | #if __IPHONE_OS_VERSION_MIN_REQUIRED < 60000 11 | 12 | @implementation NSIndexPath (PSTCollectionViewAdditions) 13 | 14 | // Simple NSIndexPath addition to allow using "item" instead of "row". 15 | + (NSIndexPath *)indexPathForItem:(NSInteger)item inSection:(NSInteger)section { 16 | return [NSIndexPath indexPathForRow:item inSection:section]; 17 | } 18 | 19 | - (NSInteger)item { 20 | return self.row; 21 | } 22 | 23 | @end 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/PSTCollectionViewCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // PSTCollectionViewCell.h 3 | // PSPDFKit 4 | // 5 | // Copyright (c) 2012-2013 Peter Steinberger. All rights reserved. 6 | // 7 | 8 | #import "PSTCollectionViewCommon.h" 9 | 10 | @class PSTCollectionViewLayout, PSTCollectionView, PSTCollectionViewLayoutAttributes; 11 | 12 | @interface PSTCollectionReusableView : UIView 13 | 14 | @property (nonatomic, readonly, copy) NSString *reuseIdentifier; 15 | 16 | // Override in subclasses. Called before instance is returned to the reuse queue. 17 | - (void)prepareForReuse; 18 | 19 | // Apply layout attributes on cell. 20 | - (void)applyLayoutAttributes:(PSTCollectionViewLayoutAttributes *)layoutAttributes; 21 | - (void)willTransitionFromLayout:(PSTCollectionViewLayout *)oldLayout toLayout:(PSTCollectionViewLayout *)newLayout; 22 | - (void)didTransitionFromLayout:(PSTCollectionViewLayout *)oldLayout toLayout:(PSTCollectionViewLayout *)newLayout; 23 | 24 | @end 25 | 26 | @interface PSTCollectionReusableView (Internal) 27 | @property (nonatomic, unsafe_unretained) PSTCollectionView *collectionView; 28 | @property (nonatomic, copy) NSString *reuseIdentifier; 29 | @property (nonatomic, strong, readonly) PSTCollectionViewLayoutAttributes *layoutAttributes; 30 | @end 31 | 32 | 33 | @interface PSTCollectionViewCell : PSTCollectionReusableView 34 | 35 | @property (nonatomic, readonly) UIView *contentView; // add custom subviews to the cell's contentView 36 | 37 | // Cells become highlighted when the user touches them. 38 | // The selected state is toggled when the user lifts up from a highlighted cell. 39 | // Override these methods to provide custom UI for a selected or highlighted state. 40 | // The collection view may call the setters inside an animation block. 41 | @property (nonatomic, getter=isSelected) BOOL selected; 42 | @property (nonatomic, getter=isHighlighted) BOOL highlighted; 43 | 44 | // The background view is a subview behind all other views. 45 | // If selectedBackgroundView is different than backgroundView, it will be placed above the background view and animated in on selection. 46 | @property (nonatomic, strong) UIView *backgroundView; 47 | @property (nonatomic, strong) UIView *selectedBackgroundView; 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/PSTCollectionViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // PSTCollectionViewController.h 3 | // PSPDFKit 4 | // 5 | // Copyright (c) 2012-2013 Peter Steinberger. All rights reserved. 6 | // 7 | 8 | #import "PSTCollectionViewCommon.h" 9 | 10 | @class PSTCollectionViewLayout, PSTCollectionViewController; 11 | 12 | // Simple controller-wrapper around PSTCollectionView. 13 | @interface PSTCollectionViewController : UIViewController 14 | 15 | // Designated initializer. 16 | - (id)initWithCollectionViewLayout:(PSTCollectionViewLayout *)layout; 17 | 18 | // Internally used collection view. If not set, created during loadView. 19 | @property (nonatomic, strong) PSTCollectionView *collectionView; 20 | 21 | // Defaults to YES, and if YES, any selection is cleared in viewWillAppear: 22 | @property (nonatomic, assign) BOOL clearsSelectionOnViewWillAppear; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/PSTCollectionViewItemKey.h: -------------------------------------------------------------------------------- 1 | // 2 | // PSTCollectionViewItemKey.h 3 | // PSPDFKit 4 | // 5 | // Copyright (c) 2012-2013 Peter Steinberger. All rights reserved. 6 | // 7 | 8 | #import "PSTCollectionViewCommon.h" 9 | #import "PSTCollectionViewLayout.h" 10 | 11 | extern NSString *const PSTCollectionElementKindCell; 12 | extern NSString *const PSTCollectionElementKindDecorationView; 13 | @class PSTCollectionViewLayoutAttributes; 14 | 15 | NSString *PSTCollectionViewItemTypeToString(PSTCollectionViewItemType type); // debug helper 16 | 17 | // Used in NSDictionaries 18 | @interface PSTCollectionViewItemKey : NSObject 19 | 20 | + (id)collectionItemKeyForLayoutAttributes:(PSTCollectionViewLayoutAttributes *)layoutAttributes; 21 | 22 | + (id)collectionItemKeyForCellWithIndexPath:(NSIndexPath *)indexPath; 23 | 24 | @property (nonatomic, assign) PSTCollectionViewItemType type; 25 | @property (nonatomic, strong) NSIndexPath *indexPath; 26 | @property (nonatomic, strong) NSString *identifier; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/PSTCollectionViewLayout+Internals.h: -------------------------------------------------------------------------------- 1 | // 2 | // PSTCollectionViewLayout+Internals.h 3 | // FMPSTCollectionView 4 | // 5 | // Created by Scott Talbot on 27/02/13. 6 | // Copyright (c) 2013 Scott Talbot. All rights reserved. 7 | // 8 | 9 | #import "PSTCollectionViewLayout.h" 10 | 11 | 12 | @interface PSTCollectionViewLayout (Internals) 13 | 14 | @property (nonatomic, copy, readonly) NSDictionary *decorationViewClassDict; 15 | @property (nonatomic, copy, readonly) NSDictionary *decorationViewNibDict; 16 | @property (nonatomic, copy, readonly) NSDictionary *decorationViewExternalObjectsTables; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/PSTCollectionViewUpdateItem.h: -------------------------------------------------------------------------------- 1 | // 2 | // PSTCollectionViewUpdateItem.h 3 | // PSPDFKit 4 | // 5 | // Copyright (c) 2012-2013 Peter Steinberger. All rights reserved. 6 | // Contributed by Sergey Gavrilyuk. 7 | // 8 | 9 | #import 10 | 11 | typedef NS_ENUM(NSInteger, PSTCollectionUpdateAction) { 12 | PSTCollectionUpdateActionInsert, 13 | PSTCollectionUpdateActionDelete, 14 | PSTCollectionUpdateActionReload, 15 | PSTCollectionUpdateActionMove, 16 | PSTCollectionUpdateActionNone 17 | }; 18 | 19 | @interface PSTCollectionViewUpdateItem : NSObject 20 | 21 | @property (nonatomic, readonly, strong) NSIndexPath *indexPathBeforeUpdate; // nil for PSTCollectionUpdateActionInsert 22 | @property (nonatomic, readonly, strong) NSIndexPath *indexPathAfterUpdate; // nil for PSTCollectionUpdateActionDelete 23 | @property (nonatomic, readonly, assign) PSTCollectionUpdateAction updateAction; 24 | 25 | 26 | - (id)initWithInitialIndexPath:(NSIndexPath *)arg1 27 | finalIndexPath:(NSIndexPath *)arg2 28 | updateAction:(PSTCollectionUpdateAction)arg3; 29 | 30 | - (id)initWithAction:(PSTCollectionUpdateAction)arg1 31 | forIndexPath:(NSIndexPath *)indexPath; 32 | 33 | - (id)initWithOldIndexPath:(NSIndexPath *)arg1 newIndexPath:(NSIndexPath *)arg2; 34 | 35 | - (PSTCollectionUpdateAction)updateAction; 36 | 37 | - (NSComparisonResult)compareIndexPaths:(PSTCollectionViewUpdateItem *)otherItem; 38 | 39 | - (NSComparisonResult)inverseCompareIndexPaths:(PSTCollectionViewUpdateItem *)otherItem; 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/PSTGridLayoutInfo.h: -------------------------------------------------------------------------------- 1 | // 2 | // PSTGridLayoutInfo.h 3 | // PSPDFKit 4 | // 5 | // Copyright (c) 2012-2013 Peter Steinberger. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @class PSTGridLayoutSection; 11 | 12 | /* 13 | Every PSTCollectionViewLayout has a PSTGridLayoutInfo attached. 14 | Is used extensively in PSTCollectionViewFlowLayout. 15 | */ 16 | @interface PSTGridLayoutInfo : NSObject 17 | 18 | @property (nonatomic, strong, readonly) NSArray *sections; 19 | @property (nonatomic, strong) NSDictionary *rowAlignmentOptions; 20 | @property (nonatomic, assign) BOOL usesFloatingHeaderFooter; 21 | 22 | // Vertical/horizontal dimension (depending on horizontal) 23 | // Used to create row objects 24 | @property (nonatomic, assign) CGFloat dimension; 25 | 26 | @property (nonatomic, assign) BOOL horizontal; 27 | @property (nonatomic, assign) BOOL leftToRight; 28 | @property (nonatomic, assign) CGSize contentSize; 29 | 30 | // Frame for specific PSTGridLayoutItem. 31 | - (CGRect)frameForItemAtIndexPath:(NSIndexPath *)indexPath; 32 | 33 | // Add new section. Invalidates layout. 34 | - (PSTGridLayoutSection *)addSection; 35 | 36 | // forces the layout to recompute on next access 37 | // TODO; what's the parameter for? 38 | - (void)invalidate:(BOOL)arg; 39 | 40 | // Make a copy of the current state. 41 | - (PSTGridLayoutInfo *)snapshot; 42 | 43 | @end 44 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/PSTGridLayoutItem.h: -------------------------------------------------------------------------------- 1 | // 2 | // PSTGridLayoutItem.h 3 | // PSPDFKit 4 | // 5 | // Copyright (c) 2012-2013 Peter Steinberger. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @class PSTGridLayoutSection, PSTGridLayoutRow; 11 | 12 | // Represents a single grid item; only created for non-uniform-sized grids. 13 | @interface PSTGridLayoutItem : NSObject 14 | 15 | @property (nonatomic, unsafe_unretained) PSTGridLayoutSection *section; 16 | @property (nonatomic, unsafe_unretained) PSTGridLayoutRow *rowObject; 17 | @property (nonatomic, assign) CGRect itemFrame; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/PSTGridLayoutItem.m: -------------------------------------------------------------------------------- 1 | // 2 | // PSTGridLayoutItem.m 3 | // PSPDFKit 4 | // 5 | // Copyright (c) 2012-2013 Peter Steinberger. All rights reserved. 6 | // 7 | 8 | #import "PSTGridLayoutItem.h" 9 | 10 | @implementation PSTGridLayoutItem 11 | 12 | /////////////////////////////////////////////////////////////////////////////////////////// 13 | #pragma mark - NSObject 14 | 15 | - (NSString *)description { 16 | return [NSString stringWithFormat:@"<%@: %p itemFrame:%@>", NSStringFromClass(self.class), self, NSStringFromCGRect(self.itemFrame)]; 17 | } 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/Libraries/PSTCollectionView/PSTGridLayoutRow.h: -------------------------------------------------------------------------------- 1 | // 2 | // PSTGridLayoutRow.h 3 | // PSPDFKit 4 | // 5 | // Copyright (c) 2012-2013 Peter Steinberger. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @class PSTGridLayoutSection, PSTGridLayoutItem; 11 | 12 | @interface PSTGridLayoutRow : NSObject 13 | 14 | @property (nonatomic, unsafe_unretained) PSTGridLayoutSection *section; 15 | @property (nonatomic, strong, readonly) NSArray *items; 16 | @property (nonatomic, assign) CGSize rowSize; 17 | @property (nonatomic, assign) CGRect rowFrame; 18 | @property (nonatomic, assign) NSInteger index; 19 | @property (nonatomic, assign) BOOL complete; 20 | @property (nonatomic, assign) BOOL fixedItemSize; 21 | 22 | // @steipete addition for row-fastPath 23 | @property (nonatomic, assign) NSInteger itemCount; 24 | 25 | //- (PSTGridLayoutRow *)copyFromSection:(PSTGridLayoutSection *)section; // ??? 26 | 27 | // Add new item to items array. 28 | - (void)addItem:(PSTGridLayoutItem *)item; 29 | 30 | // Layout current row (if invalid) 31 | - (void)layoutRow; 32 | 33 | // @steipete: Helper to save code in PSTCollectionViewFlowLayout. 34 | // Returns the item rects when fixedItemSize is enabled. 35 | - (NSArray *)itemRects; 36 | 37 | // Set current row frame invalid. 38 | - (void)invalidate; 39 | 40 | // Copy a snapshot of the current row data 41 | - (PSTGridLayoutRow *)snapshot; 42 | 43 | @end 44 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/.svn/all-wcprops: -------------------------------------------------------------------------------- 1 | K 25 2 | svn:wc:ra_dav:version-url 3 | V 161 4 | /zhuku/repo/!svn/ver/4261/zhuku-ios/trunk/zhuku-iOS/trunk/ios-zhuku2017.12.28/ChatDemo-UI3.0/ChatSDK/EaseUI/EMUIKit/3rdparty/MWPhotoBrowser/MWPhotoBrowser.bundle 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/.svn/entries: -------------------------------------------------------------------------------- 1 | 10 2 | 3 | dir 4 | 4265 5 | http://bishanwen@121.43.163.28:9090/zhuku/repo/zhuku-ios/trunk/zhuku-iOS/trunk/ios-zhuku2017.12.28/ChatDemo-UI3.0/ChatSDK/EaseUI/EMUIKit/3rdparty/MWPhotoBrowser/MWPhotoBrowser.bundle 6 | http://bishanwen@121.43.163.28:9090/zhuku/repo 7 | 8 | 9 | 10 | 2017-12-28T02:01:09.072372Z 11 | 4261 12 | zhoujun 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 5738001b-f13b-4815-ac0f-2e2f54dd1d22 28 | 29 | images 30 | dir 31 | 32 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/prop-base/Checkmark.png.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | K 13 6 | svn:mime-type 7 | V 24 8 | application/octet-stream 9 | END 10 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/prop-base/Checkmark@2x.png.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | K 13 6 | svn:mime-type 7 | V 24 8 | application/octet-stream 9 | END 10 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/prop-base/ImageError.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/prop-base/ImageError@2x.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/prop-base/ImageSelectedOff.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/prop-base/ImageSelectedOff@2x.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/prop-base/ImageSelectedOn.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/prop-base/ImageSelectedOn@2x.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/prop-base/ImageSelectedSmallOff.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/prop-base/ImageSelectedSmallOff@2x.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/prop-base/ImageSelectedSmallOn.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/prop-base/ImageSelectedSmallOn@2x.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/prop-base/UIBarButtonItemArrowLeft.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/prop-base/UIBarButtonItemArrowLeft@2x.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/prop-base/UIBarButtonItemArrowOutlineLeft.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/prop-base/UIBarButtonItemArrowOutlineLeft@2x.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/prop-base/UIBarButtonItemArrowOutlineRight.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/prop-base/UIBarButtonItemArrowOutlineRight@2x.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/prop-base/UIBarButtonItemArrowRight.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/prop-base/UIBarButtonItemArrowRight@2x.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/prop-base/UIBarButtonItemGrid.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/prop-base/UIBarButtonItemGrid@2x.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/prop-base/UIBarButtonItemGridiOS6.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/prop-base/UIBarButtonItemGridiOS6@2x.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/Checkmark.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/Checkmark.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/Checkmark@2x.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/Checkmark@2x.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/ImageError.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/ImageError.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/ImageError@2x.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/ImageError@2x.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/ImageSelectedOff.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/ImageSelectedOff.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/ImageSelectedOff@2x.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/ImageSelectedOff@2x.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/ImageSelectedOn.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/ImageSelectedOn.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/ImageSelectedOn@2x.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/ImageSelectedOn@2x.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/ImageSelectedSmallOff.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/ImageSelectedSmallOff.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/ImageSelectedSmallOff@2x.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/ImageSelectedSmallOff@2x.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/ImageSelectedSmallOn.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/ImageSelectedSmallOn.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/ImageSelectedSmallOn@2x.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/ImageSelectedSmallOn@2x.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/UIBarButtonItemArrowLeft.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/UIBarButtonItemArrowLeft.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/UIBarButtonItemArrowLeft@2x.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/UIBarButtonItemArrowLeft@2x.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/UIBarButtonItemArrowOutlineLeft.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/UIBarButtonItemArrowOutlineLeft.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/UIBarButtonItemArrowOutlineLeft@2x.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/UIBarButtonItemArrowOutlineLeft@2x.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/UIBarButtonItemArrowOutlineRight.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/UIBarButtonItemArrowOutlineRight.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/UIBarButtonItemArrowOutlineRight@2x.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/UIBarButtonItemArrowOutlineRight@2x.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/UIBarButtonItemArrowRight.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/UIBarButtonItemArrowRight.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/UIBarButtonItemArrowRight@2x.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/UIBarButtonItemArrowRight@2x.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/UIBarButtonItemGrid.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/UIBarButtonItemGrid.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/UIBarButtonItemGrid@2x.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/UIBarButtonItemGrid@2x.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/UIBarButtonItemGridiOS6.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/UIBarButtonItemGridiOS6.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/UIBarButtonItemGridiOS6@2x.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/.svn/text-base/UIBarButtonItemGridiOS6@2x.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/Checkmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/Checkmark.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/Checkmark@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/Checkmark@2x.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/ImageError.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/ImageError.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/ImageError@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/ImageError@2x.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/ImageSelectedOff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/ImageSelectedOff.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/ImageSelectedOff@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/ImageSelectedOff@2x.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/ImageSelectedOn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/ImageSelectedOn.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/ImageSelectedOn@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/ImageSelectedOn@2x.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/ImageSelectedSmallOff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/ImageSelectedSmallOff.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/ImageSelectedSmallOff@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/ImageSelectedSmallOff@2x.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/ImageSelectedSmallOn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/ImageSelectedSmallOn.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/ImageSelectedSmallOn@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/ImageSelectedSmallOn@2x.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/UIBarButtonItemArrowLeft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/UIBarButtonItemArrowLeft.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/UIBarButtonItemArrowLeft@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/UIBarButtonItemArrowLeft@2x.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/UIBarButtonItemArrowOutlineLeft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/UIBarButtonItemArrowOutlineLeft.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/UIBarButtonItemArrowOutlineLeft@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/UIBarButtonItemArrowOutlineLeft@2x.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/UIBarButtonItemArrowOutlineRight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/UIBarButtonItemArrowOutlineRight.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/UIBarButtonItemArrowOutlineRight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/UIBarButtonItemArrowOutlineRight@2x.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/UIBarButtonItemArrowRight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/UIBarButtonItemArrowRight.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/UIBarButtonItemArrowRight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/UIBarButtonItemArrowRight@2x.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/UIBarButtonItemGrid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/UIBarButtonItemGrid.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/UIBarButtonItemGrid@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/UIBarButtonItemGrid@2x.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/UIBarButtonItemGridiOS6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/UIBarButtonItemGridiOS6.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/UIBarButtonItemGridiOS6@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/MWPhotoBrowser/MWPhotoBrowser.bundle/images/UIBarButtonItemGridiOS6@2x.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/SelwynExpandableTextView.h: -------------------------------------------------------------------------------- 1 | // 2 | // SelwynExpandableTextView.h 3 | // SelwynFormDemo 4 | // 5 | // Created by BSW on 2017/6/24. 6 | // Copyright © 2017年 selwyn. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface SelwynExpandableTextView : UITextView 12 | 13 | @property (copy, nonatomic) IBInspectable NSString *placeholder; 14 | @property (copy, nonatomic) NSAttributedString *attributedPlaceholder; 15 | 16 | @property (nonatomic) IBInspectable double fadeTime; 17 | @property (retain, nonatomic) UIColor *placeholderTextColor UI_APPEARANCE_SELECTOR; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/SelwynFormBaseViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // SelwynFormBaseViewController.h 3 | // SelwynFormDemo 4 | // 5 | // Created by BSW on 2017/6/24. 6 | // Copyright © 2017年 selwyn. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | /** 提交操作回调 */ 12 | typedef void(^FormCompletion)(); 13 | 14 | @interface SelwynFormBaseViewController : UIViewController 15 | 16 | /** baseTableView */ 17 | @property (nonatomic, strong) UITableView *formTableView; 18 | /** tableView数据源 */ 19 | @property (nonatomic, strong) NSMutableArray *mutableArray; 20 | 21 | /** 22 | 初始化方法 23 | @param style 表单样式 24 | */ 25 | - (instancetype)initWithStyle:(UITableViewStyle)style; 26 | 27 | /** 添加提交按钮 */ 28 | - (void)_setCommitItem; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/SelwynFormCell/SelwynFormAttachmentTableViewCell/SelwynAttaCollectionViewCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // SelwynAttaCollectionViewCell.h 3 | // SelwynFormDemo 4 | // 5 | // Created by zhuku on 2018/1/16. 6 | // Copyright © 2018年 selwyn. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | /** 图片删除回调 */ 12 | typedef void(^AttachmentDeleteHandle)(); 13 | 14 | @interface SelwynAttaCollectionViewCell : UICollectionViewCell 15 | 16 | /** 是否可编辑 */ 17 | @property (nonatomic, assign) BOOL editingEnable; 18 | /** 图片源 */ 19 | @property (nonatomic, strong) id image; 20 | /** 图片删除回调 */ 21 | @property (nonatomic, copy) AttachmentDeleteHandle deleteHandle; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/SelwynFormCell/SelwynFormAttachmentTableViewCell/SelwynFormAttachmentTableViewCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // SelwynFormAttachmentTableViewCell.h 3 | // SelwynFormDemo 4 | // 5 | // Created by zhuku on 2018/1/16. 6 | // Copyright © 2018年 selwyn. All rights reserved. 7 | // 8 | 9 | #import "SelwynFormBaseTableViewCell.h" 10 | 11 | @class SelwynFormItem; 12 | 13 | typedef void(^AttachmentCellHandle)(NSArray *images); 14 | 15 | @interface SelwynFormAttachmentTableViewCell : SelwynFormBaseTableViewCell 16 | 17 | /** cell条目 */ 18 | @property (nonatomic, strong) SelwynFormItem *formItem; 19 | /* 选择照片block */ 20 | @property (nonatomic, copy) AttachmentCellHandle cellHandle; 21 | /** 动态获取cell高度 */ 22 | + (CGFloat)cellHeightWithItem:(SelwynFormItem *)item; 23 | 24 | @end 25 | 26 | @interface UITableView (SelwynFormAttachmentTableViewCell) 27 | 28 | /** SelwynFormAttachmentTableViewCell初始化 */ 29 | - (SelwynFormAttachmentTableViewCell *)formAttachmentCellWithId:(NSString *)cellId; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/SelwynFormCell/SelwynFormBaseTableViewCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // SelwynFormBaseTableViewCell.h 3 | // SelwynFormDemo 4 | // 5 | // Created by Selwyn Bi on 2017/6/25. 6 | // Copyright © 2017年 selwyn. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class SelwynExpandableTextView; 12 | 13 | @interface SelwynFormBaseTableViewCell : UITableViewCell 14 | 15 | /** expandable textview */ 16 | @property (nonatomic, strong) SelwynExpandableTextView *textView; 17 | /** 标题 */ 18 | @property (nonatomic, strong) UILabel *titleLabel; 19 | /** 所在的tableView */ 20 | @property (nonatomic, weak) UITableView *expandableTableView; 21 | 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/SelwynFormCell/SelwynFormBaseTableViewCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // SelwynFormBaseTableViewCell.m 3 | // SelwynFormDemo 4 | // 5 | // Created by Selwyn Bi on 2017/6/25. 6 | // Copyright © 2017年 selwyn. All rights reserved. 7 | // 8 | 9 | #import "SelwynFormBaseTableViewCell.h" 10 | #import "SelwynExpandableTextView.h" 11 | #import "SelwynFormHandle.h" 12 | 13 | @interface SelwynFormBaseTableViewCell() 14 | 15 | @end 16 | 17 | @implementation SelwynFormBaseTableViewCell 18 | 19 | /** 创建titleLabel */ 20 | - (UILabel *)titleLabel 21 | { 22 | if (!_titleLabel) { 23 | _titleLabel = [[UILabel alloc]init]; 24 | _titleLabel.font = Font(TitleFont); 25 | _titleLabel.adjustsFontSizeToFitWidth = YES; 26 | 27 | [self.contentView addSubview:_titleLabel]; 28 | } 29 | return _titleLabel; 30 | } 31 | 32 | /** 创建ExpandableTextView */ 33 | - (SelwynExpandableTextView *)textView 34 | { 35 | if (!_textView) { 36 | _textView = [[SelwynExpandableTextView alloc] init]; 37 | _textView.delegate = self; 38 | //设置textView内边距为0 39 | _textView.textContainerInset = UIEdgeInsetsMake(0, 0, 0, 0); 40 | _textView.textContainer.lineFragmentPadding = 0; 41 | _textView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight; 42 | _textView.backgroundColor = [UIColor clearColor]; 43 | _textView.font = Font(TitleFont); 44 | //关闭textView滚动 45 | _textView.scrollEnabled = NO; 46 | //关闭自动校验 47 | _textView.autocorrectionType = UITextAutocorrectionTypeNo; 48 | _textView.layoutManager.allowsNonContiguousLayout = NO; 49 | _textView.showsVerticalScrollIndicator = NO; 50 | _textView.showsHorizontalScrollIndicator = NO; 51 | [self.contentView addSubview:_textView]; 52 | } 53 | return _textView; 54 | } 55 | 56 | - (void)awakeFromNib { 57 | [super awakeFromNib]; 58 | // Initialization code 59 | } 60 | 61 | - (void)setSelected:(BOOL)selected animated:(BOOL)animated { 62 | [super setSelected:selected animated:animated]; 63 | 64 | // Configure the view for the selected state 65 | } 66 | 67 | @end 68 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/SelwynFormCell/SelwynFormInputTableViewCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // SelwynFormInputTableViewCell.h 3 | // SelwynFormDemo 4 | // 5 | // Created by Selwyn Bi on 2017/6/24. 6 | // Copyright © 2017年 selwyn. All rights reserved. 7 | // 8 | 9 | #import "SelwynFormBaseTableViewCell.h" 10 | 11 | @class SelwynFormItem; 12 | 13 | typedef void(^FormInputCompletion)(NSString *text); 14 | 15 | @interface SelwynFormInputTableViewCell : SelwynFormBaseTableViewCell 16 | 17 | /** cell条目 */ 18 | @property (nonatomic, strong) SelwynFormItem *formItem; 19 | /** 输入内容回调 */ 20 | @property (nonatomic, copy) FormInputCompletion formInputCompletion; 21 | /** 动态获取cell高度 */ 22 | + (CGFloat)cellHeightWithItem:(SelwynFormItem *)item; 23 | 24 | @end 25 | 26 | @interface UITableView (SelwynFormInputTableViewCell) 27 | 28 | /** SelwynFormInputTableViewCell初始化 */ 29 | - (SelwynFormInputTableViewCell *)formInputCellWithId:(NSString *)cellId; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/SelwynFormCell/SelwynFormSelectTableViewCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // SelwynFormSelectTableViewCell.h 3 | // SelwynFormDemo 4 | // 5 | // Created by Selwyn Bi on 2017/7/2. 6 | // Copyright © 2017年 selwyn. All rights reserved. 7 | // 8 | 9 | #import "SelwynFormBaseTableViewCell.h" 10 | 11 | @class SelwynFormItem; 12 | 13 | @interface SelwynFormSelectTableViewCell : SelwynFormBaseTableViewCell 14 | 15 | /** cell条目 */ 16 | @property (nonatomic, strong) SelwynFormItem *formItem; 17 | /** 动态获取cell高度 */ 18 | + (CGFloat)cellHeightWithItem:(SelwynFormItem *)item; 19 | 20 | @end 21 | 22 | @interface UITableView (SelwynFormSelectTableViewCell) 23 | 24 | /** SelwynFormSelectTableViewCell初始化 */ 25 | - (SelwynFormSelectTableViewCell *)formSelectCellWithId:(NSString *)cellId; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/SelwynFormCell/SelwynFormTextViewInputTableViewCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // SelwynFormTextViewInputTableViewCell.h 3 | // SelwynFormDemo 4 | // 5 | // Created by Selwyn Bi on 2017/6/24. 6 | // Copyright © 2017年 selwyn. All rights reserved. 7 | // 8 | 9 | #import "SelwynFormBaseTableViewCell.h" 10 | 11 | @class SelwynFormItem; 12 | 13 | typedef void(^FormTextViewInputCompletion)(NSString *text); 14 | 15 | @interface SelwynFormTextViewInputTableViewCell : SelwynFormBaseTableViewCell 16 | 17 | /** cell条目 */ 18 | @property (nonatomic, strong) SelwynFormItem *formItem; 19 | /** 输入内容回调 */ 20 | @property (nonatomic, copy) FormTextViewInputCompletion formTextViewInputCompletion; 21 | /** 动态获取cell高度 */ 22 | + (CGFloat)cellHeightWithItem:(SelwynFormItem *)item; 23 | 24 | @end 25 | 26 | @interface UITableView (SelwynFormTextViewInputTableViewCell) 27 | 28 | /** SelwynFormTextViewInputTableViewCell初始化 */ 29 | - (SelwynFormTextViewInputTableViewCell *)formTextViewInputCellWithId:(NSString *)cellId; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/SelwynFormConfigs/SelwynFormItem.h: -------------------------------------------------------------------------------- 1 | // 2 | // SelwynFormItem.h 3 | // SelwynFormDemo 4 | // 5 | // Created by BSW on 2017/6/24. 6 | // Copyright © 2017年 selwyn. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class SelwynFormItem; 12 | 13 | /** 表单cell类型 */ 14 | typedef NS_ENUM(NSInteger, SelwynFormCellType) { 15 | 16 | SelwynFormCellTypeNone = 0, //default 17 | SelwynFormCellTypeInput = 1, //单行或多行输入 18 | SelwynFormCellTypeTextViewInput = 2, //包含textView输入 19 | SelwynFormCellTypeSelect = 3, //选择 20 | SelwynFormCellTypeAttachment = 4, //附件 21 | }; 22 | 23 | /** 表单条目选择回调 */ 24 | typedef void(^FormItemSelectHandle)(SelwynFormItem *item); 25 | 26 | @interface SelwynFormItem : NSObject 27 | 28 | /** item 缺省高度 缺省44*/ 29 | @property (nonatomic, assign) CGFloat defaultCellHeight; 30 | /** 表单cell类型 */ 31 | @property (nonatomic, assign) SelwynFormCellType formCellType; 32 | /** 标题 */ 33 | @property (nonatomic, copy) NSString *formTitle; 34 | /** 富文本标题 可配置标题颜色等*/ 35 | @property (nonatomic, strong) NSAttributedString *formAttributedTitle; 36 | /** 详情 */ 37 | @property (nonatomic, copy) NSString *formDetail; 38 | /** 错误提示 */ 39 | @property (nonatomic, copy) NSString *formError; 40 | /** 占位提示 */ 41 | @property (nonatomic, copy) NSString *placeholder; 42 | @property (nonatomic, strong) NSAttributedString *attributedPlaceholder; 43 | 44 | /** 是否是必填(必选) */ 45 | @property (nonatomic, assign) BOOL required; 46 | /** 是否可编辑 */ 47 | @property (nonatomic, assign) BOOL editable; 48 | /** 是否是详情页面 */ 49 | @property (nonatomic, assign) BOOL isDetail; 50 | /** 附件图片 */ 51 | @property (nonatomic, strong) NSArray *images; 52 | /** 附件最大图片选择数量 缺省4张*/ 53 | @property (nonatomic, assign) NSInteger maxImageCount; 54 | /** 键盘类型 */ 55 | @property (nonatomic, assign) UIKeyboardType keyboardType; 56 | /** 表单条目选择回调 */ 57 | @property (nonatomic, copy) FormItemSelectHandle selectHandle; 58 | /** 表单输入字数限制 缺省为0(无限制)*/ 59 | @property (nonatomic, assign) NSInteger maxInputLength; 60 | /** 对齐方式 */ 61 | @property (nonatomic, assign) NSTextAlignment textAlignment; 62 | 63 | 64 | 65 | 66 | @end 67 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/SelwynFormConfigs/SelwynFormSectionItem.h: -------------------------------------------------------------------------------- 1 | // 2 | // SelwynFormSectionItem.h 3 | // SelwynFormDemo 4 | // 5 | // Created by Selwyn Bi on 2017/6/24. 6 | // Copyright © 2017年 selwyn. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @class SelwynFormSectionItem; 13 | 14 | @interface SelwynFormSectionItem : NSObject 15 | 16 | /** header 标题 */ 17 | @property (nonatomic, copy) NSString *headerTitle; 18 | /** footer 标题 */ 19 | @property (nonatomic, copy) NSString *footerTitle; 20 | /** header 高度 */ 21 | @property (nonatomic, assign) CGFloat headerHeight; 22 | /** footer 高度 */ 23 | @property (nonatomic, assign) CGFloat footerHeight; 24 | /** header 标题颜色 缺省黑色 */ 25 | @property (nonatomic, strong) UIColor *headerTitleColor; 26 | /** footer 标题颜色 缺省黑色 */ 27 | @property (nonatomic, strong) UIColor *footerTitleColor; 28 | /** header 颜色 缺省透明 */ 29 | @property (nonatomic, strong) UIColor *headerColor; 30 | /** footer 颜色 缺省透明 */ 31 | @property (nonatomic, strong) UIColor *footerColor; 32 | /** section 下单元格 */ 33 | @property (nonatomic, strong) NSArray *cellItems; 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/SelwynFormConfigs/SelwynFormSectionItem.m: -------------------------------------------------------------------------------- 1 | // 2 | // SelwynFormSectionItem.m 3 | // SelwynFormDemo 4 | // 5 | // Created by Selwyn Bi on 2017/6/24. 6 | // Copyright © 2017年 selwyn. All rights reserved. 7 | // 8 | 9 | #import "SelwynFormSectionItem.h" 10 | 11 | @implementation SelwynFormSectionItem 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/.svn/prop-base/UIView+Layout.h.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/.svn/prop-base/UIView+Layout.m.svn-base: -------------------------------------------------------------------------------- 1 | K 14 2 | svn:executable 3 | V 0 4 | 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/.svn/text-base/TZAssetCell.h.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // TZAssetCell.h 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 15/12/24. 6 | // Copyright © 2015年 谭真. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef enum : NSUInteger { 12 | TZAssetCellTypePhoto = 0, 13 | TZAssetCellTypeLivePhoto, 14 | TZAssetCellTypeVideo, 15 | TZAssetCellTypeAudio, 16 | } TZAssetCellType; 17 | 18 | @class TZAssetModel; 19 | @interface TZAssetCell : UICollectionViewCell 20 | 21 | @property (weak, nonatomic) UIButton *selectPhotoButton; 22 | @property (nonatomic, strong) TZAssetModel *model; 23 | @property (nonatomic, copy) void (^didSelectPhotoBlock)(BOOL); 24 | @property (nonatomic, assign) TZAssetCellType type; 25 | 26 | @end 27 | 28 | 29 | @class TZAlbumModel; 30 | 31 | @interface TZAlbumCell : UITableViewCell 32 | 33 | @property (nonatomic, strong) TZAlbumModel *model; 34 | @property (weak, nonatomic) UIButton *selectedCountButton; 35 | 36 | @end 37 | 38 | 39 | @interface TZAssetCameraCell : UICollectionViewCell 40 | 41 | @property (nonatomic, strong) UIImageView *imageView; 42 | 43 | @end -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/.svn/text-base/TZAssetModel.h.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // TZAssetModel.h 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 15/12/24. 6 | // Copyright © 2015年 谭真. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | typedef enum : NSUInteger { 13 | TZAssetModelMediaTypePhoto = 0, 14 | TZAssetModelMediaTypeLivePhoto, 15 | TZAssetModelMediaTypeVideo, 16 | TZAssetModelMediaTypeAudio 17 | } TZAssetModelMediaType; 18 | 19 | @class PHAsset; 20 | @interface TZAssetModel : NSObject 21 | 22 | @property (nonatomic, strong) id asset; ///< PHAsset or ALAsset 23 | @property (nonatomic, assign) BOOL isSelected; ///< The select status of a photo, default is No 24 | @property (nonatomic, assign) TZAssetModelMediaType type; 25 | @property (nonatomic, copy) NSString *timeLength; 26 | 27 | /// Init a photo dataModel With a asset 28 | /// 用一个PHAsset/ALAsset实例,初始化一个照片模型 29 | + (instancetype)modelWithAsset:(id)asset type:(TZAssetModelMediaType)type; 30 | + (instancetype)modelWithAsset:(id)asset type:(TZAssetModelMediaType)type timeLength:(NSString *)timeLength; 31 | 32 | @end 33 | 34 | 35 | @class PHFetchResult; 36 | @interface TZAlbumModel : NSObject 37 | 38 | @property (nonatomic, strong) NSString *name; ///< The album name 39 | @property (nonatomic, assign) NSInteger count; ///< Count of photos the album contain 40 | @property (nonatomic, strong) id result; ///< PHFetchResult or ALAssetsGroup 41 | 42 | @property (nonatomic, strong) NSArray *models; 43 | @property (nonatomic, strong) NSArray *selectedModels; 44 | @property (nonatomic, assign) NSUInteger selectedCount; 45 | @end -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/.svn/text-base/TZAssetModel.m.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // TZAssetModel.m 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 15/12/24. 6 | // Copyright © 2015年 谭真. All rights reserved. 7 | // 8 | 9 | #import "TZAssetModel.h" 10 | #import "TZImageManager.h" 11 | 12 | @implementation TZAssetModel 13 | 14 | + (instancetype)modelWithAsset:(id)asset type:(TZAssetModelMediaType)type{ 15 | TZAssetModel *model = [[TZAssetModel alloc] init]; 16 | model.asset = asset; 17 | model.isSelected = NO; 18 | model.type = type; 19 | return model; 20 | } 21 | 22 | + (instancetype)modelWithAsset:(id)asset type:(TZAssetModelMediaType)type timeLength:(NSString *)timeLength { 23 | TZAssetModel *model = [self modelWithAsset:asset type:type]; 24 | model.timeLength = timeLength; 25 | return model; 26 | } 27 | 28 | @end 29 | 30 | 31 | 32 | @implementation TZAlbumModel 33 | 34 | - (void)setResult:(id)result { 35 | _result = result; 36 | BOOL allowPickingImage = [[[NSUserDefaults standardUserDefaults] objectForKey:@"tz_allowPickingImage"] isEqualToString:@"1"]; 37 | BOOL allowPickingVideo = [[[NSUserDefaults standardUserDefaults] objectForKey:@"tz_allowPickingVideo"] isEqualToString:@"1"]; 38 | [[TZImageManager manager] getAssetsFromFetchResult:result allowPickingVideo:allowPickingVideo allowPickingImage:allowPickingImage completion:^(NSArray *models) { 39 | self->_models = models; 40 | if (self->_selectedModels) { 41 | [self checkSelectedModels]; 42 | } 43 | }]; 44 | } 45 | 46 | - (void)setSelectedModels:(NSArray *)selectedModels { 47 | _selectedModels = selectedModels; 48 | if (_models) { 49 | [self checkSelectedModels]; 50 | } 51 | } 52 | 53 | - (void)checkSelectedModels { 54 | self.selectedCount = 0; 55 | NSMutableArray *selectedAssets = [NSMutableArray array]; 56 | for (TZAssetModel *model in _selectedModels) { 57 | [selectedAssets addObject:model.asset]; 58 | } 59 | for (TZAssetModel *model in _models) { 60 | if ([selectedAssets containsObject:model.asset]) { 61 | self.selectedCount ++; 62 | } 63 | } 64 | } 65 | 66 | @end 67 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/.svn/text-base/TZPhotoPickerController.h.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // TZPhotoPickerController.h 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 15/12/24. 6 | // Copyright © 2015年 谭真. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class TZAlbumModel; 12 | @interface TZPhotoPickerController : UIViewController 13 | 14 | @property (nonatomic, strong) TZAlbumModel *model; 15 | @property (nonatomic, copy) void (^backButtonClickHandle)(TZAlbumModel *model); 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/.svn/text-base/TZPhotoPreviewCell.h.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // TZPhotoPreviewCell.h 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 15/12/24. 6 | // Copyright © 2015年 谭真. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class TZAssetModel; 12 | @interface TZPhotoPreviewCell : UICollectionViewCell 13 | 14 | @property (nonatomic, strong) TZAssetModel *model; 15 | @property (nonatomic, copy) void (^singleTapGestureBlock)(); 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/.svn/text-base/TZPhotoPreviewController.h.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // TZPhotoPreviewController.h 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 15/12/24. 6 | // Copyright © 2015年 谭真. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TZPhotoPreviewController : UIViewController 12 | 13 | @property (nonatomic, strong) NSArray *photoArr; ///< All photos / 所有图片的数组 14 | // @property (nonatomic, strong) NSMutableArray *selectedPhotoArr; ///< Current selected photos / 当前选中的图片数组 15 | @property (nonatomic, assign) NSInteger currentIndex; ///< Index of the photo user click / 用户点击的图片的索引 16 | @property (nonatomic, assign) BOOL isSelectOriginalPhoto; ///< If YES,return original photo / 是否返回原图 17 | 18 | /// Return the new selected photos / 返回最新的选中图片数组 19 | @property (nonatomic, copy) void (^backButtonClickBlock)(BOOL isSelectOriginalPhoto); 20 | @property (nonatomic, copy) void (^okButtonClickBlock)(BOOL isSelectOriginalPhoto); 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/.svn/text-base/TZVideoPlayerController.h.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // TZVideoPlayerController.h 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 16/1/5. 6 | // Copyright © 2016年 谭真. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class TZAssetModel; 12 | @interface TZVideoPlayerController : UIViewController 13 | 14 | @property (nonatomic, strong) TZAssetModel *model; 15 | 16 | @end -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/.svn/text-base/UIView+Layout.h.svn-base: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+Layout.h 3 | // 4 | // Created by 谭真 on 15/2/24. 5 | // Copyright © 2015年 谭真. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | typedef enum : NSUInteger { 11 | TZOscillatoryAnimationToBigger, 12 | TZOscillatoryAnimationToSmaller, 13 | } TZOscillatoryAnimationType; 14 | 15 | @interface UIView (Layout) 16 | 17 | @property (nonatomic) CGFloat tz_left; ///< Shortcut for frame.origin.x. 18 | @property (nonatomic) CGFloat tz_top; ///< Shortcut for frame.origin.y 19 | @property (nonatomic) CGFloat tz_right; ///< Shortcut for frame.origin.x + frame.size.width 20 | @property (nonatomic) CGFloat tz_bottom; ///< Shortcut for frame.origin.y + frame.size.height 21 | @property (nonatomic) CGFloat tz_width; ///< Shortcut for frame.size.width. 22 | @property (nonatomic) CGFloat tz_height; ///< Shortcut for frame.size.height. 23 | @property (nonatomic) CGFloat tz_centerX; ///< Shortcut for center.x 24 | @property (nonatomic) CGFloat tz_centerY; ///< Shortcut for center.y 25 | @property (nonatomic) CGPoint tz_origin; ///< Shortcut for frame.origin. 26 | @property (nonatomic) CGSize tz_size; ///< Shortcut for frame.size. 27 | 28 | + (void)showOscillatoryAnimationWithLayer:(CALayer *)layer type:(TZOscillatoryAnimationType)type; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZAssetCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // TZAssetCell.h 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 15/12/24. 6 | // Copyright © 2015年 谭真. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef enum : NSUInteger { 12 | TZAssetCellTypePhoto = 0, 13 | TZAssetCellTypeLivePhoto, 14 | TZAssetCellTypeVideo, 15 | TZAssetCellTypeAudio, 16 | } TZAssetCellType; 17 | 18 | @class TZAssetModel; 19 | @interface TZAssetCell : UICollectionViewCell 20 | 21 | @property (weak, nonatomic) UIButton *selectPhotoButton; 22 | @property (nonatomic, strong) TZAssetModel *model; 23 | @property (nonatomic, copy) void (^didSelectPhotoBlock)(BOOL); 24 | @property (nonatomic, assign) TZAssetCellType type; 25 | 26 | @end 27 | 28 | 29 | @class TZAlbumModel; 30 | 31 | @interface TZAlbumCell : UITableViewCell 32 | 33 | @property (nonatomic, strong) TZAlbumModel *model; 34 | @property (weak, nonatomic) UIButton *selectedCountButton; 35 | 36 | @end 37 | 38 | 39 | @interface TZAssetCameraCell : UICollectionViewCell 40 | 41 | @property (nonatomic, strong) UIImageView *imageView; 42 | 43 | @end -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZAssetModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // TZAssetModel.h 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 15/12/24. 6 | // Copyright © 2015年 谭真. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | typedef enum : NSUInteger { 13 | TZAssetModelMediaTypePhoto = 0, 14 | TZAssetModelMediaTypeLivePhoto, 15 | TZAssetModelMediaTypeVideo, 16 | TZAssetModelMediaTypeAudio 17 | } TZAssetModelMediaType; 18 | 19 | @class PHAsset; 20 | @interface TZAssetModel : NSObject 21 | 22 | @property (nonatomic, strong) id asset; ///< PHAsset or ALAsset 23 | @property (nonatomic, assign) BOOL isSelected; ///< The select status of a photo, default is No 24 | @property (nonatomic, assign) TZAssetModelMediaType type; 25 | @property (nonatomic, copy) NSString *timeLength; 26 | 27 | /// Init a photo dataModel With a asset 28 | /// 用一个PHAsset/ALAsset实例,初始化一个照片模型 29 | + (instancetype)modelWithAsset:(id)asset type:(TZAssetModelMediaType)type; 30 | + (instancetype)modelWithAsset:(id)asset type:(TZAssetModelMediaType)type timeLength:(NSString *)timeLength; 31 | 32 | @end 33 | 34 | 35 | @class PHFetchResult; 36 | @interface TZAlbumModel : NSObject 37 | 38 | @property (nonatomic, strong) NSString *name; ///< The album name 39 | @property (nonatomic, assign) NSInteger count; ///< Count of photos the album contain 40 | @property (nonatomic, strong) id result; ///< PHFetchResult or ALAssetsGroup 41 | 42 | @property (nonatomic, strong) NSArray *models; 43 | @property (nonatomic, strong) NSArray *selectedModels; 44 | @property (nonatomic, assign) NSUInteger selectedCount; 45 | @end -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZAssetModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // TZAssetModel.m 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 15/12/24. 6 | // Copyright © 2015年 谭真. All rights reserved. 7 | // 8 | 9 | #import "TZAssetModel.h" 10 | #import "TZImageManager.h" 11 | 12 | @implementation TZAssetModel 13 | 14 | + (instancetype)modelWithAsset:(id)asset type:(TZAssetModelMediaType)type{ 15 | TZAssetModel *model = [[TZAssetModel alloc] init]; 16 | model.asset = asset; 17 | model.isSelected = NO; 18 | model.type = type; 19 | return model; 20 | } 21 | 22 | + (instancetype)modelWithAsset:(id)asset type:(TZAssetModelMediaType)type timeLength:(NSString *)timeLength { 23 | TZAssetModel *model = [self modelWithAsset:asset type:type]; 24 | model.timeLength = timeLength; 25 | return model; 26 | } 27 | 28 | @end 29 | 30 | 31 | 32 | @implementation TZAlbumModel 33 | 34 | - (void)setResult:(id)result { 35 | _result = result; 36 | BOOL allowPickingImage = [[[NSUserDefaults standardUserDefaults] objectForKey:@"tz_allowPickingImage"] isEqualToString:@"1"]; 37 | BOOL allowPickingVideo = [[[NSUserDefaults standardUserDefaults] objectForKey:@"tz_allowPickingVideo"] isEqualToString:@"1"]; 38 | [[TZImageManager manager] getAssetsFromFetchResult:result allowPickingVideo:allowPickingVideo allowPickingImage:allowPickingImage completion:^(NSArray *models) { 39 | self->_models = models; 40 | if (self->_selectedModels) { 41 | [self checkSelectedModels]; 42 | } 43 | }]; 44 | } 45 | 46 | - (void)setSelectedModels:(NSArray *)selectedModels { 47 | _selectedModels = selectedModels; 48 | if (_models) { 49 | [self checkSelectedModels]; 50 | } 51 | } 52 | 53 | - (void)checkSelectedModels { 54 | self.selectedCount = 0; 55 | NSMutableArray *selectedAssets = [NSMutableArray array]; 56 | for (TZAssetModel *model in _selectedModels) { 57 | [selectedAssets addObject:model.asset]; 58 | } 59 | for (TZAssetModel *model in _models) { 60 | if ([selectedAssets containsObject:model.asset]) { 61 | self.selectedCount ++; 62 | } 63 | } 64 | } 65 | 66 | @end 67 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImageManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // TZImageManager.h 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 16/1/4. 6 | // Copyright © 2016年 谭真. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import 12 | #import 13 | 14 | @class TZAlbumModel,TZAssetModel; 15 | @interface TZImageManager : NSObject 16 | 17 | @property (nonatomic, strong) PHCachingImageManager *cachingImageManager; 18 | 19 | + (instancetype)manager; 20 | 21 | @property (nonatomic, assign) BOOL shouldFixOrientation; 22 | 23 | /// Return YES if Authorized 返回YES如果得到了授权 24 | - (BOOL)authorizationStatusAuthorized; 25 | 26 | /// Get Album 获得相册/相册数组 27 | - (void)getCameraRollAlbum:(BOOL)allowPickingVideo allowPickingImage:(BOOL)allowPickingImage completion:(void (^)(TZAlbumModel *model))completion; 28 | - (void)getAllAlbums:(BOOL)allowPickingVideo allowPickingImage:(BOOL)allowPickingImage completion:(void (^)(NSArray *models))completion; 29 | 30 | /// Get Assets 获得Asset数组 31 | - (void)getAssetsFromFetchResult:(id)result allowPickingVideo:(BOOL)allowPickingVideo allowPickingImage:(BOOL)allowPickingImage completion:(void (^)(NSArray *models))completion; 32 | - (void)getAssetFromFetchResult:(id)result atIndex:(NSInteger)index allowPickingVideo:(BOOL)allowPickingVideo allowPickingImage:(BOOL)allowPickingImage completion:(void (^)(TZAssetModel *model))completion; 33 | 34 | /// Get photo 获得照片 35 | - (void)getPostImageWithAlbumModel:(TZAlbumModel *)model completion:(void (^)(UIImage *postImage))completion; 36 | - (void)getPhotoWithAsset:(id)asset completion:(void (^)(UIImage *photo,NSDictionary *info,BOOL isDegraded))completion; 37 | - (void)getPhotoWithAsset:(id)asset photoWidth:(CGFloat)photoWidth completion:(void (^)(UIImage *photo,NSDictionary *info,BOOL isDegraded))completion; 38 | - (void)getOriginalPhotoWithAsset:(id)asset completion:(void (^)(UIImage *photo,NSDictionary *info))completion; 39 | 40 | /// Get video 获得视频 41 | - (void)getVideoWithAsset:(id)asset completion:(void (^)(AVPlayerItem * playerItem, NSDictionary * info))completion; 42 | 43 | /// Get photo bytes 获得一组照片的大小 44 | - (void)getPhotosBytesWithArray:(NSArray *)photos completion:(void (^)(NSString *totalBytes))completion; 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/prop-base/MMVideoPreviewPlay@2x.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/prop-base/MMVideoPreviewPlayHL@2x.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/prop-base/TableViewArrow@2x.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/prop-base/VideoSendIcon@2x.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/prop-base/navi_back@2x.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/prop-base/photo_def_photoPickerVc@2x.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/prop-base/photo_def_previewVc@2x.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/prop-base/photo_number_icon@2x.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/prop-base/photo_original_def@2x.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/prop-base/photo_original_sel@2x.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/prop-base/photo_sel_photoPickerVc@2x.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/prop-base/photo_sel_previewVc@2x.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/prop-base/preview_number_icon@2x.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/prop-base/preview_original_def@2x.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/prop-base/takePicture@2x.png.svn-base: -------------------------------------------------------------------------------- 1 | K 13 2 | svn:mime-type 3 | V 24 4 | application/octet-stream 5 | END 6 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/text-base/MMVideoPreviewPlay@2x.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/text-base/MMVideoPreviewPlay@2x.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/text-base/MMVideoPreviewPlayHL@2x.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/text-base/MMVideoPreviewPlayHL@2x.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/text-base/Root.plist.svn-base: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | StringsTable 6 | Root 7 | PreferenceSpecifiers 8 | 9 | 10 | Type 11 | PSGroupSpecifier 12 | Title 13 | Group 14 | 15 | 16 | Type 17 | PSTextFieldSpecifier 18 | Title 19 | Name 20 | Key 21 | name_preference 22 | DefaultValue 23 | 24 | IsSecure 25 | 26 | KeyboardType 27 | Alphabet 28 | AutocapitalizationType 29 | None 30 | AutocorrectionType 31 | No 32 | 33 | 34 | Type 35 | PSToggleSwitchSpecifier 36 | Title 37 | Enabled 38 | Key 39 | enabled_preference 40 | DefaultValue 41 | 42 | 43 | 44 | Type 45 | PSSliderSpecifier 46 | Key 47 | slider_preference 48 | DefaultValue 49 | 0.5 50 | MinimumValue 51 | 0 52 | MaximumValue 53 | 1 54 | MinimumValueImage 55 | 56 | MaximumValueImage 57 | 58 | 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/text-base/TableViewArrow@2x.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/text-base/TableViewArrow@2x.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/text-base/VideoSendIcon@2x.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/text-base/VideoSendIcon@2x.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/text-base/navi_back@2x.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/text-base/navi_back@2x.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/text-base/photo_def_photoPickerVc@2x.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/text-base/photo_def_photoPickerVc@2x.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/text-base/photo_def_previewVc@2x.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/text-base/photo_def_previewVc@2x.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/text-base/photo_number_icon@2x.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/text-base/photo_number_icon@2x.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/text-base/photo_original_def@2x.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/text-base/photo_original_def@2x.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/text-base/photo_original_sel@2x.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/text-base/photo_original_sel@2x.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/text-base/photo_sel_photoPickerVc@2x.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/text-base/photo_sel_photoPickerVc@2x.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/text-base/photo_sel_previewVc@2x.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/text-base/photo_sel_previewVc@2x.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/text-base/preview_number_icon@2x.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/text-base/preview_number_icon@2x.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/text-base/preview_original_def@2x.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/text-base/preview_original_def@2x.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/text-base/takePicture@2x.png.svn-base: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/.svn/text-base/takePicture@2x.png.svn-base -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/MMVideoPreviewPlay@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/MMVideoPreviewPlay@2x.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/MMVideoPreviewPlayHL@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/MMVideoPreviewPlayHL@2x.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/Root.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | StringsTable 6 | Root 7 | PreferenceSpecifiers 8 | 9 | 10 | Type 11 | PSGroupSpecifier 12 | Title 13 | Group 14 | 15 | 16 | Type 17 | PSTextFieldSpecifier 18 | Title 19 | Name 20 | Key 21 | name_preference 22 | DefaultValue 23 | 24 | IsSecure 25 | 26 | KeyboardType 27 | Alphabet 28 | AutocapitalizationType 29 | None 30 | AutocorrectionType 31 | No 32 | 33 | 34 | Type 35 | PSToggleSwitchSpecifier 36 | Title 37 | Enabled 38 | Key 39 | enabled_preference 40 | DefaultValue 41 | 42 | 43 | 44 | Type 45 | PSSliderSpecifier 46 | Key 47 | slider_preference 48 | DefaultValue 49 | 0.5 50 | MinimumValue 51 | 0 52 | MaximumValue 53 | 1 54 | MinimumValueImage 55 | 56 | MaximumValueImage 57 | 58 | 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/TableViewArrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/TableViewArrow@2x.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/VideoSendIcon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/VideoSendIcon@2x.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/navi_back@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/navi_back@2x.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/photo_def_photoPickerVc@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/photo_def_photoPickerVc@2x.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/photo_def_previewVc@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/photo_def_previewVc@2x.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/photo_number_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/photo_number_icon@2x.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/photo_original_def@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/photo_original_def@2x.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/photo_original_sel@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/photo_original_sel@2x.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/photo_sel_photoPickerVc@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/photo_sel_photoPickerVc@2x.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/photo_sel_previewVc@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/photo_sel_previewVc@2x.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/preview_number_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/preview_number_icon@2x.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/preview_original_def@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/preview_original_def@2x.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/takePicture@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynForm/TZImagePickerController/TZImagePickerController.bundle/takePicture@2x.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZPhotoPickerController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TZPhotoPickerController.h 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 15/12/24. 6 | // Copyright © 2015年 谭真. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class TZAlbumModel; 12 | @interface TZPhotoPickerController : UIViewController 13 | 14 | @property (nonatomic, strong) TZAlbumModel *model; 15 | @property (nonatomic, copy) void (^backButtonClickHandle)(TZAlbumModel *model); 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZPhotoPreviewCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // TZPhotoPreviewCell.h 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 15/12/24. 6 | // Copyright © 2015年 谭真. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class TZAssetModel; 12 | @interface TZPhotoPreviewCell : UICollectionViewCell 13 | 14 | @property (nonatomic, strong) TZAssetModel *model; 15 | @property (nonatomic, copy) void (^singleTapGestureBlock)(); 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZPhotoPreviewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TZPhotoPreviewController.h 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 15/12/24. 6 | // Copyright © 2015年 谭真. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TZPhotoPreviewController : UIViewController 12 | 13 | @property (nonatomic, strong) NSArray *photoArr; ///< All photos / 所有图片的数组 14 | // @property (nonatomic, strong) NSMutableArray *selectedPhotoArr; ///< Current selected photos / 当前选中的图片数组 15 | @property (nonatomic, assign) NSInteger currentIndex; ///< Index of the photo user click / 用户点击的图片的索引 16 | @property (nonatomic, assign) BOOL isSelectOriginalPhoto; ///< If YES,return original photo / 是否返回原图 17 | 18 | /// Return the new selected photos / 返回最新的选中图片数组 19 | @property (nonatomic, copy) void (^backButtonClickBlock)(BOOL isSelectOriginalPhoto); 20 | @property (nonatomic, copy) void (^okButtonClickBlock)(BOOL isSelectOriginalPhoto); 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/TZVideoPlayerController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TZVideoPlayerController.h 3 | // TZImagePickerController 4 | // 5 | // Created by 谭真 on 16/1/5. 6 | // Copyright © 2016年 谭真. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class TZAssetModel; 12 | @interface TZVideoPlayerController : UIViewController 13 | 14 | @property (nonatomic, strong) TZAssetModel *model; 15 | 16 | @end -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynForm/TZImagePickerController/UIView+Layout.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+Layout.h 3 | // 4 | // Created by 谭真 on 15/2/24. 5 | // Copyright © 2015年 谭真. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | typedef enum : NSUInteger { 11 | TZOscillatoryAnimationToBigger, 12 | TZOscillatoryAnimationToSmaller, 13 | } TZOscillatoryAnimationType; 14 | 15 | @interface UIView (Layout) 16 | 17 | @property (nonatomic) CGFloat tz_left; ///< Shortcut for frame.origin.x. 18 | @property (nonatomic) CGFloat tz_top; ///< Shortcut for frame.origin.y 19 | @property (nonatomic) CGFloat tz_right; ///< Shortcut for frame.origin.x + frame.size.width 20 | @property (nonatomic) CGFloat tz_bottom; ///< Shortcut for frame.origin.y + frame.size.height 21 | @property (nonatomic) CGFloat tz_width; ///< Shortcut for frame.size.width. 22 | @property (nonatomic) CGFloat tz_height; ///< Shortcut for frame.size.height. 23 | @property (nonatomic) CGFloat tz_centerX; ///< Shortcut for center.x 24 | @property (nonatomic) CGFloat tz_centerY; ///< Shortcut for center.y 25 | @property (nonatomic) CGPoint tz_origin; ///< Shortcut for frame.origin. 26 | @property (nonatomic) CGSize tz_size; ///< Shortcut for frame.size. 27 | 28 | + (void)showOscillatoryAnimationWithLayer:(CALayer *)layer type:(TZOscillatoryAnimationType)type; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynFormDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynFormDemo.xcodeproj/project.xcworkspace/xcuserdata/zhuku.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynFormDemo.xcodeproj/project.xcworkspace/xcuserdata/zhuku.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynFormDemo.xcodeproj/xcuserdata/zhuku.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 8 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynFormDemo.xcodeproj/xcuserdata/zhuku.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | SelwynFormDemo.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynFormDemo/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // SelwynFormDemo 4 | // 5 | // Created by BSW on 2017/6/24. 6 | // Copyright © 2017年 selwyn. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynFormDemo/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "20x20", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "20x20", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "29x29", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "29x29", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "size" : "40x40", 66 | "scale" : "1x" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "size" : "40x40", 71 | "scale" : "2x" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "size" : "76x76", 76 | "scale" : "1x" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "size" : "76x76", 81 | "scale" : "2x" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "size" : "83.5x83.5", 86 | "scale" : "2x" 87 | }, 88 | { 89 | "idiom" : "ios-marketing", 90 | "size" : "1024x1024", 91 | "scale" : "1x" 92 | } 93 | ], 94 | "info" : { 95 | "version" : 1, 96 | "author" : "xcode" 97 | } 98 | } -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynFormDemo/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynFormDemo/Assets.xcassets/Delete Reveal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "Delete Reveal.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "Delete Reveal@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "Delete Reveal@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynFormDemo/Assets.xcassets/Delete Reveal.imageset/Delete Reveal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynFormDemo/Assets.xcassets/Delete Reveal.imageset/Delete Reveal.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynFormDemo/Assets.xcassets/Delete Reveal.imageset/Delete Reveal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynFormDemo/Assets.xcassets/Delete Reveal.imageset/Delete Reveal@2x.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynFormDemo/Assets.xcassets/Delete Reveal.imageset/Delete Reveal@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynFormDemo/Assets.xcassets/Delete Reveal.imageset/Delete Reveal@3x.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynFormDemo/Assets.xcassets/ProjectInitial_Attachment.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "ProjectInitial_Attachment@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "ProjectInitial_Attachment@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynFormDemo/Assets.xcassets/ProjectInitial_Attachment.imageset/ProjectInitial_Attachment@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynFormDemo/Assets.xcassets/ProjectInitial_Attachment.imageset/ProjectInitial_Attachment@2x.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynFormDemo/Assets.xcassets/ProjectInitial_Attachment.imageset/ProjectInitial_Attachment@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RockChanel/SelAttachmentForm/213605993d82014fe7726cb7b596b6bc54a89c22/SelwynFormDemo/SelwynFormDemo/Assets.xcassets/ProjectInitial_Attachment.imageset/ProjectInitial_Attachment@3x.png -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynFormDemo/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynFormDemo/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NSPhotoLibraryUsageDescription 6 | 访问相册 7 | NSCameraUsageDescription 8 | 使用相机 9 | CFBundleDevelopmentRegion 10 | en 11 | CFBundleDisplayName 12 | SelwynFormDemo 13 | CFBundleExecutable 14 | $(EXECUTABLE_NAME) 15 | CFBundleIdentifier 16 | $(PRODUCT_BUNDLE_IDENTIFIER) 17 | CFBundleInfoDictionaryVersion 18 | 6.0 19 | CFBundleName 20 | $(PRODUCT_NAME) 21 | CFBundlePackageType 22 | APPL 23 | CFBundleShortVersionString 24 | 1.0 25 | CFBundleVersion 26 | 1 27 | LSRequiresIPhoneOS 28 | 29 | UILaunchStoryboardName 30 | LaunchScreen 31 | UIRequiredDeviceCapabilities 32 | 33 | armv7 34 | 35 | UISupportedInterfaceOrientations 36 | 37 | UIInterfaceOrientationPortrait 38 | UIInterfaceOrientationLandscapeLeft 39 | UIInterfaceOrientationLandscapeRight 40 | 41 | UISupportedInterfaceOrientations~ipad 42 | 43 | UIInterfaceOrientationPortrait 44 | UIInterfaceOrientationPortraitUpsideDown 45 | UIInterfaceOrientationLandscapeLeft 46 | UIInterfaceOrientationLandscapeRight 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynFormDemo/SelwynForm.pch: -------------------------------------------------------------------------------- 1 | // 2 | // SelwynForm.pch 3 | // SelwynFormDemo 4 | // 5 | // Created by Selwyn Bi on 2017/6/24. 6 | // Copyright © 2017年 selwyn. All rights reserved. 7 | // 8 | 9 | #ifndef SelwynForm_pch 10 | #define SelwynForm_pch 11 | 12 | #import 13 | 14 | #define Font(x) [UIFont systemFontOfSize:x] 15 | 16 | #define ScreenWidth [UIScreen mainScreen].bounds.size.width 17 | #define ScreenHeight [UIScreen mainScreen].bounds.size.height 18 | 19 | // Include any system framework and library headers here that should be included in all compilation units. 20 | // You will also need to set the Prefix Header build setting of one or more of your targets to reference this file. 21 | 22 | #endif /* SelwynForm_pch */ 23 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynFormDemo/SelwynFormClass/SelwynBaseViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // SelwynBaseViewController.h 3 | // SelwynFormDemo 4 | // 5 | // Created by Selwyn Bi on 2017/6/24. 6 | // Copyright © 2017年 selwyn. All rights reserved. 7 | // 8 | 9 | #import "SelwynFormBaseViewController.h" 10 | 11 | @interface SelwynBaseViewController : SelwynFormBaseViewController 12 | 13 | 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynFormDemo/SelwynFormClass/SelwynFormAttaViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // SelwynFormAttaViewController.h 3 | // SelwynFormDemo 4 | // 5 | // Created by zhuku on 2018/1/16. 6 | // Copyright © 2018年 selwyn. All rights reserved. 7 | // 8 | 9 | #import "SelwynBaseViewController.h" 10 | 11 | @interface SelwynFormAttaViewController : SelwynFormBaseViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynFormDemo/SelwynFormClass/SelwynFormAttaViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // SelwynFormAttaViewController.m 3 | // SelwynFormDemo 4 | // 5 | // Created by zhuku on 2018/1/16. 6 | // Copyright © 2018年 selwyn. All rights reserved. 7 | // 8 | 9 | #import "SelwynFormAttaViewController.h" 10 | #import "SelwynFormItem.h" 11 | #import "SelwynFormHandle.h" 12 | #import "SelwynFormSectionItem.h" 13 | 14 | @interface SelwynFormAttaViewController () 15 | 16 | @end 17 | 18 | @implementation SelwynFormAttaViewController 19 | 20 | - (void)viewDidLoad { 21 | [super viewDidLoad]; 22 | 23 | [self dataSource]; 24 | } 25 | 26 | - (void)dataSource{ 27 | 28 | NSMutableArray *datas = [NSMutableArray array]; 29 | 30 | SelwynFormItem *name = SelwynItemMake(@"姓名", @"", SelwynFormCellTypeInput, UIKeyboardTypeDefault, YES, YES); 31 | [datas addObject:name]; 32 | 33 | SelwynFormItem *phoneNumber = SelwynItemMake(@"手机号", @"", SelwynFormCellTypeInput, UIKeyboardTypeNumberPad, YES, YES); 34 | phoneNumber.maxInputLength = 11; //字数限制 35 | [datas addObject:phoneNumber]; 36 | 37 | SelwynFormItem *attachment = SelwynItemMake(@"附件", @"", SelwynFormCellTypeAttachment, UIKeyboardTypeDefault, YES, NO); 38 | [datas addObject:attachment]; 39 | 40 | SelwynFormSectionItem *sectionItem = [[SelwynFormSectionItem alloc]init]; 41 | sectionItem.cellItems = datas; 42 | 43 | [self.mutableArray addObject:sectionItem]; 44 | } 45 | 46 | - (void)didReceiveMemoryWarning { 47 | [super didReceiveMemoryWarning]; 48 | // Dispose of any resources that can be recreated. 49 | } 50 | 51 | /* 52 | #pragma mark - Navigation 53 | 54 | // In a storyboard-based application, you will often want to do a little preparation before navigation 55 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 56 | // Get the new view controller using [segue destinationViewController]. 57 | // Pass the selected object to the new view controller. 58 | } 59 | */ 60 | 61 | @end 62 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynFormDemo/SelwynFormClass/SelwynFormDetailViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // SelwynFormDetailViewController.h 3 | // SelwynFormDemo 4 | // 5 | // Created by Selwyn Bi on 2017/6/25. 6 | // Copyright © 2017年 selwyn. All rights reserved. 7 | // 8 | 9 | #import "SelwynFormBaseViewController.h" 10 | 11 | @interface SelwynFormDetailViewController : SelwynFormBaseViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynFormDemo/SelwynFormClass/SelwynFormViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // SelwynFormViewController.h 3 | // SelwynFormDemo 4 | // 5 | // Created by BSW on 2017/6/24. 6 | // Copyright © 2017年 selwyn. All rights reserved. 7 | // 8 | 9 | #import "SelwynFormBaseViewController.h" 10 | 11 | @interface SelwynFormViewController : SelwynFormBaseViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /SelwynFormDemo/SelwynFormDemo/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // SelwynFormDemo 4 | // 5 | // Created by BSW on 2017/6/24. 6 | // Copyright © 2017年 selwyn. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | --------------------------------------------------------------------------------