├── Classes ├── EncryDesEncryTool │ ├── DesEncryTool.h │ ├── DesEncryTool.m │ ├── EncryDesEncryTool.h │ ├── EncryDesEncryTool.m │ ├── EncryTool.h │ ├── EncryTool.m │ ├── YGDeviceSpaceTool.h │ └── YGDeviceSpaceTool.m ├── Extensions │ ├── UIScrollView+LWExtension.h │ ├── UIScrollView+LWExtension.m │ ├── UIView+LWFrame.h │ └── UIView+LWFrame.m └── Views │ ├── LWAnimationButton.h │ ├── LWAnimationButton.m │ ├── LWEmitterView.h │ ├── LWEmitterView.m │ ├── LWLineLabel.h │ ├── LWLineLabel.m │ ├── LWRefreshFooter.h │ ├── LWRefreshFooter.m │ ├── LWRefreshHeader.h │ ├── LWRefreshHeader.m │ ├── LWSegmentControl.h │ ├── LWSegmentControl.m │ ├── LWWindowAlert.h │ └── LWWindowAlert.m ├── LICENSE ├── LWTools.podspec ├── LWToolsDemo ├── LWToolsDemo.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ ├── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ │ └── xcuserdata │ │ │ └── weil.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ └── xcuserdata │ │ └── weil.xcuserdatad │ │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ ├── LWToolsDemo.xcscheme │ │ └── xcschememanagement.plist ├── LWToolsDemo.xcworkspace │ ├── contents.xcworkspacedata │ ├── xcshareddata │ │ └── IDEWorkspaceChecks.plist │ └── xcuserdata │ │ └── weil.xcuserdatad │ │ ├── UserInterfaceState.xcuserstate │ │ └── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist ├── LWToolsDemo │ ├── AnimationButtonDemo │ │ ├── LWAnimationButtonDemo.h │ │ └── LWAnimationButtonDemo.m │ ├── AnimationDemo │ │ ├── LWAnimationViewController.h │ │ └── LWAnimationViewController.m │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Assets.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ ├── Contents.json │ │ ├── detail_zan.imageset │ │ │ ├── Contents.json │ │ │ ├── detail_zan@2x.png │ │ │ └── detail_zan@3x.png │ │ └── detail_zan_selected.imageset │ │ │ ├── Contents.json │ │ │ ├── detail_zan_selected@2x.png │ │ │ └── detail_zan_selected@3x.png │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── Info.plist │ ├── PhotoBrowser │ │ ├── Expression │ │ │ ├── Expression01.jpeg │ │ │ ├── Expression02.jpeg │ │ │ ├── Expression03.jpeg │ │ │ ├── Expression04.jpeg │ │ │ ├── Expression05.jpeg │ │ │ ├── Expression06.jpeg │ │ │ ├── Expression07.jpeg │ │ │ ├── Expression08.jpeg │ │ │ ├── Expression09.jpeg │ │ │ ├── Expression10.jpeg │ │ │ └── Expression11.jpeg │ │ ├── LWPhotosViewController.h │ │ ├── LWPhotosViewController.m │ │ ├── LYPictureFirstPageCell.h │ │ └── LYPictureFirstPageCell.m │ ├── RefreshDemo │ │ ├── LWRereshAnimationDemo.h │ │ └── LWRereshAnimationDemo.m │ ├── SegmentControlDemo │ │ ├── LWSegmentViewController.h │ │ └── LWSegmentViewController.m │ ├── ViewController.h │ ├── ViewController.m │ ├── ViewImageDemo │ │ ├── LWViewImageController.h │ │ └── LWViewImageController.m │ └── main.m ├── Podfile ├── Podfile.lock └── Pods │ ├── Headers │ ├── Private │ │ ├── LWAnimation │ │ │ ├── LWAnimationStyleBase.h │ │ │ ├── LWAnimationView.h │ │ │ ├── LWAnimationViewBallBeat.h │ │ │ ├── LWAnimationViewBallClipRotate.h │ │ │ ├── LWAnimationViewBallClipRotateMultiple.h │ │ │ ├── LWAnimationViewBallClipRotatePulse.h │ │ │ ├── LWAnimationViewBallGridBeat.h │ │ │ ├── LWAnimationViewBallGridPulse.h │ │ │ ├── LWAnimationViewBallPulse.h │ │ │ ├── LWAnimationViewBallPulseRise.h │ │ │ ├── LWAnimationViewBallPulseSyn.h │ │ │ ├── LWAnimationViewBallRotate.h │ │ │ ├── LWAnimationViewBallRotateChase.h │ │ │ ├── LWAnimationViewBallSaleMultiple.h │ │ │ ├── LWAnimationViewBallScale.h │ │ │ ├── LWAnimationViewBallScaleRipple.h │ │ │ ├── LWAnimationViewBallScaleRippleMultiple.h │ │ │ ├── LWAnimationViewBallSpinFadeLoad.h │ │ │ ├── LWAnimationViewLineAudioEqualizer.h │ │ │ ├── LWAnimationViewLinePulseOut.h │ │ │ ├── LWAnimationViewLineScale.h │ │ │ └── LWAnimationViewLineScaleParty.h │ │ ├── LWPhotoBrowser │ │ │ ├── LWPhotoBrowser.h │ │ │ ├── LWPhotoBrowserController.h │ │ │ ├── LWPhotoBrowserDrivenInteractive.h │ │ │ ├── LWPhotoBrowserInteractiveTransition.h │ │ │ ├── LWPhotoBrowserPopTransition.h │ │ │ ├── LWPhotoBrowserPushTransition.h │ │ │ ├── LWPhotoBrowserTransition.h │ │ │ ├── LWPhotoModel.h │ │ │ ├── LWPhotoViewCell.h │ │ │ └── LWPhotoZoomView.h │ │ ├── MJRefresh │ │ │ ├── MJRefresh.h │ │ │ ├── MJRefreshAutoFooter.h │ │ │ ├── MJRefreshAutoGifFooter.h │ │ │ ├── MJRefreshAutoNormalFooter.h │ │ │ ├── MJRefreshAutoStateFooter.h │ │ │ ├── MJRefreshBackFooter.h │ │ │ ├── MJRefreshBackGifFooter.h │ │ │ ├── MJRefreshBackNormalFooter.h │ │ │ ├── MJRefreshBackStateFooter.h │ │ │ ├── MJRefreshComponent.h │ │ │ ├── MJRefreshConst.h │ │ │ ├── MJRefreshFooter.h │ │ │ ├── MJRefreshGifHeader.h │ │ │ ├── MJRefreshHeader.h │ │ │ ├── MJRefreshNormalHeader.h │ │ │ ├── MJRefreshStateHeader.h │ │ │ ├── NSBundle+MJRefresh.h │ │ │ ├── UIScrollView+MJExtension.h │ │ │ ├── UIScrollView+MJRefresh.h │ │ │ └── UIView+MJExtension.h │ │ ├── Masonry │ │ │ ├── MASCompositeConstraint.h │ │ │ ├── MASConstraint+Private.h │ │ │ ├── MASConstraint.h │ │ │ ├── MASConstraintMaker.h │ │ │ ├── MASLayoutConstraint.h │ │ │ ├── MASUtilities.h │ │ │ ├── MASViewAttribute.h │ │ │ ├── MASViewConstraint.h │ │ │ ├── Masonry.h │ │ │ ├── NSArray+MASAdditions.h │ │ │ ├── NSArray+MASShorthandAdditions.h │ │ │ ├── NSLayoutConstraint+MASDebugAdditions.h │ │ │ ├── View+MASAdditions.h │ │ │ ├── View+MASShorthandAdditions.h │ │ │ └── ViewController+MASAdditions.h │ │ └── SDWebImage │ │ │ ├── NSButton+WebCache.h │ │ │ ├── NSData+ImageContentType.h │ │ │ ├── NSImage+WebCache.h │ │ │ ├── SDAnimatedImageRep.h │ │ │ ├── SDImageCache.h │ │ │ ├── SDImageCacheConfig.h │ │ │ ├── SDWebImageCoder.h │ │ │ ├── SDWebImageCoderHelper.h │ │ │ ├── SDWebImageCodersManager.h │ │ │ ├── SDWebImageCompat.h │ │ │ ├── SDWebImageDownloader.h │ │ │ ├── SDWebImageDownloaderOperation.h │ │ │ ├── SDWebImageFrame.h │ │ │ ├── SDWebImageGIFCoder.h │ │ │ ├── SDWebImageImageIOCoder.h │ │ │ ├── SDWebImageManager.h │ │ │ ├── SDWebImageOperation.h │ │ │ ├── SDWebImagePrefetcher.h │ │ │ ├── SDWebImageTransition.h │ │ │ ├── UIButton+WebCache.h │ │ │ ├── UIImage+ForceDecode.h │ │ │ ├── UIImage+GIF.h │ │ │ ├── UIImage+MultiFormat.h │ │ │ ├── UIImageView+HighlightedWebCache.h │ │ │ ├── UIImageView+WebCache.h │ │ │ ├── UIView+WebCache.h │ │ │ └── UIView+WebCacheOperation.h │ └── Public │ │ ├── LWAnimation │ │ ├── LWAnimationStyleBase.h │ │ ├── LWAnimationView.h │ │ ├── LWAnimationViewBallBeat.h │ │ ├── LWAnimationViewBallClipRotate.h │ │ ├── LWAnimationViewBallClipRotateMultiple.h │ │ ├── LWAnimationViewBallClipRotatePulse.h │ │ ├── LWAnimationViewBallGridBeat.h │ │ ├── LWAnimationViewBallGridPulse.h │ │ ├── LWAnimationViewBallPulse.h │ │ ├── LWAnimationViewBallPulseRise.h │ │ ├── LWAnimationViewBallPulseSyn.h │ │ ├── LWAnimationViewBallRotate.h │ │ ├── LWAnimationViewBallRotateChase.h │ │ ├── LWAnimationViewBallSaleMultiple.h │ │ ├── LWAnimationViewBallScale.h │ │ ├── LWAnimationViewBallScaleRipple.h │ │ ├── LWAnimationViewBallScaleRippleMultiple.h │ │ ├── LWAnimationViewBallSpinFadeLoad.h │ │ ├── LWAnimationViewLineAudioEqualizer.h │ │ ├── LWAnimationViewLinePulseOut.h │ │ ├── LWAnimationViewLineScale.h │ │ └── LWAnimationViewLineScaleParty.h │ │ ├── LWPhotoBrowser │ │ ├── LWPhotoBrowser.h │ │ ├── LWPhotoBrowserController.h │ │ ├── LWPhotoBrowserDrivenInteractive.h │ │ ├── LWPhotoBrowserInteractiveTransition.h │ │ ├── LWPhotoBrowserPopTransition.h │ │ ├── LWPhotoBrowserPushTransition.h │ │ ├── LWPhotoBrowserTransition.h │ │ ├── LWPhotoModel.h │ │ ├── LWPhotoViewCell.h │ │ └── LWPhotoZoomView.h │ │ ├── MJRefresh │ │ ├── MJRefresh.h │ │ ├── MJRefreshAutoFooter.h │ │ ├── MJRefreshAutoGifFooter.h │ │ ├── MJRefreshAutoNormalFooter.h │ │ ├── MJRefreshAutoStateFooter.h │ │ ├── MJRefreshBackFooter.h │ │ ├── MJRefreshBackGifFooter.h │ │ ├── MJRefreshBackNormalFooter.h │ │ ├── MJRefreshBackStateFooter.h │ │ ├── MJRefreshComponent.h │ │ ├── MJRefreshConst.h │ │ ├── MJRefreshFooter.h │ │ ├── MJRefreshGifHeader.h │ │ ├── MJRefreshHeader.h │ │ ├── MJRefreshNormalHeader.h │ │ ├── MJRefreshStateHeader.h │ │ ├── NSBundle+MJRefresh.h │ │ ├── UIScrollView+MJExtension.h │ │ ├── UIScrollView+MJRefresh.h │ │ └── UIView+MJExtension.h │ │ ├── Masonry │ │ ├── MASCompositeConstraint.h │ │ ├── MASConstraint+Private.h │ │ ├── MASConstraint.h │ │ ├── MASConstraintMaker.h │ │ ├── MASLayoutConstraint.h │ │ ├── MASUtilities.h │ │ ├── MASViewAttribute.h │ │ ├── MASViewConstraint.h │ │ ├── Masonry.h │ │ ├── NSArray+MASAdditions.h │ │ ├── NSArray+MASShorthandAdditions.h │ │ ├── NSLayoutConstraint+MASDebugAdditions.h │ │ ├── View+MASAdditions.h │ │ ├── View+MASShorthandAdditions.h │ │ └── ViewController+MASAdditions.h │ │ └── SDWebImage │ │ ├── NSButton+WebCache.h │ │ ├── NSData+ImageContentType.h │ │ ├── NSImage+WebCache.h │ │ ├── SDAnimatedImageRep.h │ │ ├── SDImageCache.h │ │ ├── SDImageCacheConfig.h │ │ ├── SDWebImageCoder.h │ │ ├── SDWebImageCoderHelper.h │ │ ├── SDWebImageCodersManager.h │ │ ├── SDWebImageCompat.h │ │ ├── SDWebImageDownloader.h │ │ ├── SDWebImageDownloaderOperation.h │ │ ├── SDWebImageFrame.h │ │ ├── SDWebImageGIFCoder.h │ │ ├── SDWebImageImageIOCoder.h │ │ ├── SDWebImageManager.h │ │ ├── SDWebImageOperation.h │ │ ├── SDWebImagePrefetcher.h │ │ ├── SDWebImageTransition.h │ │ ├── UIButton+WebCache.h │ │ ├── UIImage+ForceDecode.h │ │ ├── UIImage+GIF.h │ │ ├── UIImage+MultiFormat.h │ │ ├── UIImageView+HighlightedWebCache.h │ │ ├── UIImageView+WebCache.h │ │ ├── UIView+WebCache.h │ │ └── UIView+WebCacheOperation.h │ ├── LWAnimation │ ├── LICENSE.md │ └── LWAnimation │ │ ├── LWAnimationStyleBase.h │ │ ├── LWAnimationStyleBase.m │ │ ├── LWAnimationView.h │ │ ├── LWAnimationView.m │ │ ├── LWAnimationViewBallBeat.h │ │ ├── LWAnimationViewBallBeat.m │ │ ├── LWAnimationViewBallClipRotate.h │ │ ├── LWAnimationViewBallClipRotate.m │ │ ├── LWAnimationViewBallClipRotateMultiple.h │ │ ├── LWAnimationViewBallClipRotateMultiple.m │ │ ├── LWAnimationViewBallClipRotatePulse.h │ │ ├── LWAnimationViewBallClipRotatePulse.m │ │ ├── LWAnimationViewBallGridBeat.h │ │ ├── LWAnimationViewBallGridBeat.m │ │ ├── LWAnimationViewBallGridPulse.h │ │ ├── LWAnimationViewBallGridPulse.m │ │ ├── LWAnimationViewBallPulse.h │ │ ├── LWAnimationViewBallPulse.m │ │ ├── LWAnimationViewBallPulseRise.h │ │ ├── LWAnimationViewBallPulseRise.m │ │ ├── LWAnimationViewBallPulseSyn.h │ │ ├── LWAnimationViewBallPulseSyn.m │ │ ├── LWAnimationViewBallRotate.h │ │ ├── LWAnimationViewBallRotate.m │ │ ├── LWAnimationViewBallRotateChase.h │ │ ├── LWAnimationViewBallRotateChase.m │ │ ├── LWAnimationViewBallSaleMultiple.h │ │ ├── LWAnimationViewBallSaleMultiple.m │ │ ├── LWAnimationViewBallScale.h │ │ ├── LWAnimationViewBallScale.m │ │ ├── LWAnimationViewBallScaleRipple.h │ │ ├── LWAnimationViewBallScaleRipple.m │ │ ├── LWAnimationViewBallScaleRippleMultiple.h │ │ ├── LWAnimationViewBallScaleRippleMultiple.m │ │ ├── LWAnimationViewBallSpinFadeLoad.h │ │ ├── LWAnimationViewBallSpinFadeLoad.m │ │ ├── LWAnimationViewLineAudioEqualizer.h │ │ ├── LWAnimationViewLineAudioEqualizer.m │ │ ├── LWAnimationViewLinePulseOut.h │ │ ├── LWAnimationViewLinePulseOut.m │ │ ├── LWAnimationViewLineScale.h │ │ ├── LWAnimationViewLineScale.m │ │ ├── LWAnimationViewLineScaleParty.h │ │ └── LWAnimationViewLineScaleParty.m │ ├── LWPhotoBrowser │ ├── Classes │ │ └── LWPhotoBroswer │ │ │ ├── Controller │ │ │ ├── LWPhotoBrowserController.h │ │ │ └── LWPhotoBrowserController.m │ │ │ ├── LWPhotoBrowser.h │ │ │ ├── Model │ │ │ ├── LWPhotoModel.h │ │ │ └── LWPhotoModel.m │ │ │ ├── Transition │ │ │ ├── LWPhotoBrowserDrivenInteractive.h │ │ │ ├── LWPhotoBrowserDrivenInteractive.m │ │ │ ├── LWPhotoBrowserInteractiveTransition.h │ │ │ ├── LWPhotoBrowserInteractiveTransition.m │ │ │ ├── LWPhotoBrowserPopTransition.h │ │ │ ├── LWPhotoBrowserPopTransition.m │ │ │ ├── LWPhotoBrowserPushTransition.h │ │ │ ├── LWPhotoBrowserPushTransition.m │ │ │ ├── LWPhotoBrowserTransition.h │ │ │ └── LWPhotoBrowserTransition.m │ │ │ └── View │ │ │ ├── LWPhotoViewCell.h │ │ │ ├── LWPhotoViewCell.m │ │ │ ├── LWPhotoZoomView.h │ │ │ └── LWPhotoZoomView.m │ ├── LICENSE.md │ └── README.md │ ├── MJRefresh │ ├── LICENSE │ ├── MJRefresh │ │ ├── Base │ │ │ ├── MJRefreshAutoFooter.h │ │ │ ├── MJRefreshAutoFooter.m │ │ │ ├── MJRefreshBackFooter.h │ │ │ ├── MJRefreshBackFooter.m │ │ │ ├── MJRefreshComponent.h │ │ │ ├── MJRefreshComponent.m │ │ │ ├── MJRefreshFooter.h │ │ │ ├── MJRefreshFooter.m │ │ │ ├── MJRefreshHeader.h │ │ │ └── MJRefreshHeader.m │ │ ├── Custom │ │ │ ├── Footer │ │ │ │ ├── Auto │ │ │ │ │ ├── MJRefreshAutoGifFooter.h │ │ │ │ │ ├── MJRefreshAutoGifFooter.m │ │ │ │ │ ├── MJRefreshAutoNormalFooter.h │ │ │ │ │ ├── MJRefreshAutoNormalFooter.m │ │ │ │ │ ├── MJRefreshAutoStateFooter.h │ │ │ │ │ └── MJRefreshAutoStateFooter.m │ │ │ │ └── Back │ │ │ │ │ ├── MJRefreshBackGifFooter.h │ │ │ │ │ ├── MJRefreshBackGifFooter.m │ │ │ │ │ ├── MJRefreshBackNormalFooter.h │ │ │ │ │ ├── MJRefreshBackNormalFooter.m │ │ │ │ │ ├── MJRefreshBackStateFooter.h │ │ │ │ │ └── MJRefreshBackStateFooter.m │ │ │ └── Header │ │ │ │ ├── MJRefreshGifHeader.h │ │ │ │ ├── MJRefreshGifHeader.m │ │ │ │ ├── MJRefreshNormalHeader.h │ │ │ │ ├── MJRefreshNormalHeader.m │ │ │ │ ├── MJRefreshStateHeader.h │ │ │ │ └── MJRefreshStateHeader.m │ │ ├── MJRefresh.bundle │ │ │ ├── arrow@2x.png │ │ │ ├── en.lproj │ │ │ │ └── Localizable.strings │ │ │ ├── zh-Hans.lproj │ │ │ │ └── Localizable.strings │ │ │ └── zh-Hant.lproj │ │ │ │ └── Localizable.strings │ │ ├── MJRefresh.h │ │ ├── MJRefreshConst.h │ │ ├── MJRefreshConst.m │ │ ├── NSBundle+MJRefresh.h │ │ ├── NSBundle+MJRefresh.m │ │ ├── UIScrollView+MJExtension.h │ │ ├── UIScrollView+MJExtension.m │ │ ├── UIScrollView+MJRefresh.h │ │ ├── UIScrollView+MJRefresh.m │ │ ├── UIView+MJExtension.h │ │ └── UIView+MJExtension.m │ └── README.md │ ├── Manifest.lock │ ├── Masonry │ ├── LICENSE │ ├── Masonry │ │ ├── MASCompositeConstraint.h │ │ ├── MASCompositeConstraint.m │ │ ├── MASConstraint+Private.h │ │ ├── MASConstraint.h │ │ ├── MASConstraint.m │ │ ├── MASConstraintMaker.h │ │ ├── MASConstraintMaker.m │ │ ├── MASLayoutConstraint.h │ │ ├── MASLayoutConstraint.m │ │ ├── MASUtilities.h │ │ ├── MASViewAttribute.h │ │ ├── MASViewAttribute.m │ │ ├── MASViewConstraint.h │ │ ├── MASViewConstraint.m │ │ ├── Masonry.h │ │ ├── NSArray+MASAdditions.h │ │ ├── NSArray+MASAdditions.m │ │ ├── NSArray+MASShorthandAdditions.h │ │ ├── NSLayoutConstraint+MASDebugAdditions.h │ │ ├── NSLayoutConstraint+MASDebugAdditions.m │ │ ├── View+MASAdditions.h │ │ ├── View+MASAdditions.m │ │ ├── View+MASShorthandAdditions.h │ │ ├── ViewController+MASAdditions.h │ │ └── ViewController+MASAdditions.m │ └── README.md │ ├── Pods.xcodeproj │ ├── project.pbxproj │ └── xcuserdata │ │ └── weil.xcuserdatad │ │ └── xcschemes │ │ ├── LWAnimation.xcscheme │ │ ├── LWPhotoBrowser.xcscheme │ │ ├── MJRefresh.xcscheme │ │ ├── Masonry.xcscheme │ │ ├── Pods-LWToolsDemo.xcscheme │ │ ├── SDWebImage.xcscheme │ │ └── xcschememanagement.plist │ ├── SDWebImage │ ├── LICENSE │ ├── README.md │ └── SDWebImage │ │ ├── NSButton+WebCache.h │ │ ├── NSButton+WebCache.m │ │ ├── NSData+ImageContentType.h │ │ ├── NSData+ImageContentType.m │ │ ├── NSImage+WebCache.h │ │ ├── NSImage+WebCache.m │ │ ├── SDAnimatedImageRep.h │ │ ├── SDAnimatedImageRep.m │ │ ├── SDImageCache.h │ │ ├── SDImageCache.m │ │ ├── SDImageCacheConfig.h │ │ ├── SDImageCacheConfig.m │ │ ├── SDWebImageCoder.h │ │ ├── SDWebImageCoder.m │ │ ├── SDWebImageCoderHelper.h │ │ ├── SDWebImageCoderHelper.m │ │ ├── SDWebImageCodersManager.h │ │ ├── SDWebImageCodersManager.m │ │ ├── SDWebImageCompat.h │ │ ├── SDWebImageCompat.m │ │ ├── SDWebImageDownloader.h │ │ ├── SDWebImageDownloader.m │ │ ├── SDWebImageDownloaderOperation.h │ │ ├── SDWebImageDownloaderOperation.m │ │ ├── SDWebImageFrame.h │ │ ├── SDWebImageFrame.m │ │ ├── SDWebImageGIFCoder.h │ │ ├── SDWebImageGIFCoder.m │ │ ├── SDWebImageImageIOCoder.h │ │ ├── SDWebImageImageIOCoder.m │ │ ├── SDWebImageManager.h │ │ ├── SDWebImageManager.m │ │ ├── SDWebImageOperation.h │ │ ├── SDWebImagePrefetcher.h │ │ ├── SDWebImagePrefetcher.m │ │ ├── SDWebImageTransition.h │ │ ├── SDWebImageTransition.m │ │ ├── UIButton+WebCache.h │ │ ├── UIButton+WebCache.m │ │ ├── UIImage+ForceDecode.h │ │ ├── UIImage+ForceDecode.m │ │ ├── UIImage+GIF.h │ │ ├── UIImage+GIF.m │ │ ├── UIImage+MultiFormat.h │ │ ├── UIImage+MultiFormat.m │ │ ├── UIImageView+HighlightedWebCache.h │ │ ├── UIImageView+HighlightedWebCache.m │ │ ├── UIImageView+WebCache.h │ │ ├── UIImageView+WebCache.m │ │ ├── UIView+WebCache.h │ │ ├── UIView+WebCache.m │ │ ├── UIView+WebCacheOperation.h │ │ └── UIView+WebCacheOperation.m │ └── Target Support Files │ ├── LWAnimation │ ├── LWAnimation-dummy.m │ ├── LWAnimation-prefix.pch │ └── LWAnimation.xcconfig │ ├── LWPhotoBrowser │ ├── LWPhotoBrowser-dummy.m │ ├── LWPhotoBrowser-prefix.pch │ └── LWPhotoBrowser.xcconfig │ ├── MJRefresh │ ├── MJRefresh-dummy.m │ ├── MJRefresh-prefix.pch │ └── MJRefresh.xcconfig │ ├── Masonry │ ├── Masonry-dummy.m │ ├── Masonry-prefix.pch │ └── Masonry.xcconfig │ ├── Pods-LWToolsDemo │ ├── Pods-LWToolsDemo-acknowledgements.markdown │ ├── Pods-LWToolsDemo-acknowledgements.plist │ ├── Pods-LWToolsDemo-dummy.m │ ├── Pods-LWToolsDemo-frameworks.sh │ ├── Pods-LWToolsDemo-resources.sh │ ├── Pods-LWToolsDemo.debug.xcconfig │ └── Pods-LWToolsDemo.release.xcconfig │ └── SDWebImage │ ├── SDWebImage-dummy.m │ ├── SDWebImage-prefix.pch │ └── SDWebImage.xcconfig ├── LWTopChangeDemo ├── LWTopChangeDemo.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ ├── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ │ └── xcuserdata │ │ │ └── weil.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ └── xcuserdata │ │ └── weil.xcuserdatad │ │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ └── xcschememanagement.plist └── LWTopChangeDemo │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ └── Contents.json │ └── Contents.json │ ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard │ ├── Info.plist │ ├── LWTopView.h │ ├── LWTopView.m │ ├── ViewController.h │ ├── ViewController.m │ └── main.m ├── README.md ├── topAnimation.gif ├── 从View生成图片.gif ├── 刷新动画.gif ├── 多种加载动画.gif ├── 点赞动画.gif └── 类似微信图片浏览.gif /Classes/EncryDesEncryTool/DesEncryTool.h: -------------------------------------------------------------------------------- 1 | // 2 | // DesEncryTool.h 3 | // AllYoga 4 | // 5 | // Created by weil on 2018/2/27. 6 | // Copyright © 2018年 AllYoga. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface DesEncryTool : NSObject 12 | /** 给文件解密 **/ 13 | + (void)descryFile:(NSString *)filePath; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Classes/EncryDesEncryTool/DesEncryTool.m: -------------------------------------------------------------------------------- 1 | // 2 | // DesEncryTool.m 3 | // AllYoga 4 | // 5 | // Created by weil on 2018/2/27. 6 | // Copyright © 2018年 AllYoga. All rights reserved. 7 | // 8 | 9 | #import "DesEncryTool.h" 10 | #import "EncryTool.h" 11 | #import "EncryDesEncryTool.h" 12 | #import "YGDeviceSpaceTool.h" 13 | 14 | @implementation DesEncryTool 15 | + (void)descryFile:(NSString *)filePath { 16 | //先判断文件是否加密 17 | if (![EncryTool isFileEncry:filePath]) { 18 | return; 19 | } 20 | //开始解密 21 | NSUInteger offset = [EncryDesEncryTool PrefixDataLength]; 22 | //1.读取前缀之后的数据 23 | NSFileHandle *readHandle = [NSFileHandle fileHandleForReadingAtPath:filePath]; 24 | if (!readHandle) { 25 | return; 26 | } 27 | [readHandle seekToFileOffset:0]; 28 | NSData *fileData = [readHandle readDataOfLength:encry_length]; 29 | long long fileDataLength = [readHandle seekToEndOfFile];//获取文件的总长度 30 | [readHandle closeFile]; 31 | if (!fileData || fileData.length < encry_length || fileDataLength >= [YGDeviceSpaceTool deviceFreeSpace]) { 32 | return; 33 | } 34 | //2.取反 35 | unsigned char *byte = (unsigned char *)[fileData bytes]; 36 | for (int index = 0; index < encry_length; index++,byte++) { 37 | *byte = (*byte) ^ index; 38 | } 39 | NSFileHandle *writeHandle = [NSFileHandle fileHandleForWritingAtPath:filePath]; 40 | if (!writeHandle) { 41 | return; 42 | } 43 | [writeHandle writeData:fileData]; 44 | [writeHandle truncateFileAtOffset:fileDataLength - offset]; 45 | [writeHandle closeFile]; 46 | } 47 | @end 48 | -------------------------------------------------------------------------------- /Classes/EncryDesEncryTool/EncryDesEncryTool.h: -------------------------------------------------------------------------------- 1 | // 2 | // EncryDesEncryTool.h 3 | // AllYoga 4 | // 5 | // Created by weil on 2018/2/27. 6 | // Copyright © 2018年 AllYoga. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | static NSString *const prefix_encry = @"AllYoga"; 12 | static NSUInteger const encry_length = 100; 13 | 14 | @interface EncryDesEncryTool : NSObject 15 | /** 计算所加字节的长度 **/ 16 | + (NSUInteger)PrefixDataLength; 17 | @end 18 | -------------------------------------------------------------------------------- /Classes/EncryDesEncryTool/EncryDesEncryTool.m: -------------------------------------------------------------------------------- 1 | // 2 | // EncryDesEncryTool.m 3 | // AllYoga 4 | // 5 | // Created by weil on 2018/2/27. 6 | // Copyright © 2018年 AllYoga. All rights reserved. 7 | // 8 | 9 | #import "EncryDesEncryTool.h" 10 | 11 | @implementation EncryDesEncryTool 12 | + (NSUInteger)PrefixDataLength { 13 | NSUInteger length = -1; 14 | length = [prefix_encry dataUsingEncoding:NSUTF8StringEncoding].length; 15 | return length; 16 | } 17 | @end 18 | -------------------------------------------------------------------------------- /Classes/EncryDesEncryTool/EncryTool.h: -------------------------------------------------------------------------------- 1 | // 2 | // EncryTool.h 3 | // AllYoga 4 | // 5 | // Created by weil on 2018/2/27. 6 | // Copyright © 2018年 AllYoga. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface EncryTool : NSObject 12 | /** 判断文件是否加密过 **/ 13 | + (BOOL)isFileEncry:(NSString *)filePath; 14 | /** 给文件加密 **/ 15 | + (void)encryFile:(NSString *)filePath; 16 | /** 给加密过的文件追加后缀 **/ 17 | + (void)appendSuffixToFile:(NSString *)filePath; 18 | @end 19 | -------------------------------------------------------------------------------- /Classes/EncryDesEncryTool/YGDeviceSpaceTool.h: -------------------------------------------------------------------------------- 1 | // 2 | // YGDeviceSpaceTool.h 3 | // AllYoga 4 | // 5 | // Created by weil on 2018/3/14. 6 | // Copyright © 2018年 AllYoga. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface YGDeviceSpaceTool : NSObject 12 | /** 判断本机空闲空间是否足够 **/ 13 | + (BOOL)deviceSpaceIsEnough:(long long)size; 14 | /** 计算本机剩余存储空间 **/ 15 | + (long long)deviceFreeSpace; 16 | @end 17 | -------------------------------------------------------------------------------- /Classes/EncryDesEncryTool/YGDeviceSpaceTool.m: -------------------------------------------------------------------------------- 1 | // 2 | // YGDeviceSpaceTool.m 3 | // AllYoga 4 | // 5 | // Created by weil on 2018/3/14. 6 | // Copyright © 2018年 AllYoga. All rights reserved. 7 | // 8 | 9 | #import "YGDeviceSpaceTool.h" 10 | #import 11 | #import 12 | #import 13 | 14 | @implementation YGDeviceSpaceTool 15 | 16 | + (BOOL)deviceSpaceIsEnough:(long long)size { 17 | struct statfs buf; 18 | long long freeSpace = -1; 19 | if (statfs("/var", &buf) >= 0) { 20 | freeSpace = (long long)(buf.f_bsize * buf.f_bfree); 21 | } 22 | if (freeSpace <= size) { 23 | return NO; 24 | } 25 | return YES; 26 | } 27 | 28 | + (long long)deviceFreeSpace { 29 | struct statfs buf; 30 | long long freeSpace = -1; 31 | if (statfs("/var", &buf) >= 0) { 32 | freeSpace = (long long)(buf.f_bsize * buf.f_bfree); 33 | } 34 | return freeSpace; 35 | } 36 | 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /Classes/Extensions/UIScrollView+LWExtension.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIScrollView+LWExtension.h 3 | // LWToolsDemo 4 | // 5 | // Created by weil on 2018/6/1. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIScrollView (LWExtension) 12 | - (UIImage *)captureScrollView; 13 | @end 14 | -------------------------------------------------------------------------------- /Classes/Extensions/UIScrollView+LWExtension.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIScrollView+LWExtension.m 3 | // LWToolsDemo 4 | // 5 | // Created by weil on 2018/6/1. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "UIScrollView+LWExtension.h" 10 | 11 | @implementation UIScrollView (LWExtension) 12 | - (UIImage *)captureScrollView { 13 | UIImage *image = nil; 14 | UIGraphicsBeginImageContextWithOptions(self.contentSize, NO, [UIScreen mainScreen].scale); 15 | CGPoint savedContentOffset = self.contentOffset; 16 | CGRect savedFrame = self.frame; 17 | self.contentOffset = CGPointZero; 18 | self.frame = CGRectMake(0, 0, self.contentSize.width, self.contentSize.height); 19 | [self.layer renderInContext:UIGraphicsGetCurrentContext()]; 20 | image = UIGraphicsGetImageFromCurrentImageContext(); 21 | self.contentOffset = savedContentOffset; 22 | self.frame = savedFrame; 23 | UIGraphicsEndImageContext(); 24 | return image; 25 | } 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Classes/Extensions/UIView+LWFrame.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+LWFrame.h 3 | // LWToolsDemo 4 | // 5 | // Created by weil on 2018/5/8. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIView (LWFrame) 12 | 13 | @property (nonatomic,assign) CGFloat left; 14 | @property (nonatomic,assign) CGFloat top; 15 | @property (nonatomic,assign) CGFloat right; 16 | @property (nonatomic,assign) CGFloat bottom; 17 | @property (nonatomic,assign) CGFloat centerX; 18 | @property (nonatomic,assign) CGFloat centerY; 19 | @property (nonatomic,assign) CGSize size; 20 | @property (nonatomic,assign) CGPoint origin; 21 | @property (nonatomic,assign) CGFloat width; 22 | @property (nonatomic,assign) CGFloat height; 23 | 24 | /** 从view生成一张图片 **/ 25 | - (UIImage *)getImageFromView; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Classes/Views/LWAnimationButton.h: -------------------------------------------------------------------------------- 1 | // 2 | // LWAnimationButton.h 3 | // LWToolsDemo 4 | // 5 | // Created by weil on 2018/5/8. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LWAnimationButton : UIButton 12 | @property (nonatomic,strong) UIImage *particleImage; 13 | @property (nonatomic,assign) CGFloat particleScale; 14 | @property (nonatomic,assign) CGFloat particleScaleRange; 15 | /** 开始动画 **/ 16 | - (void)startAnimation; 17 | /** 弹出 **/ 18 | - (void)popOutSideWithDuration:(NSTimeInterval)duration; 19 | /** 弹入 **/ 20 | - (void)popInSideWithDuration:(NSTimeInterval)duration; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Classes/Views/LWEmitterView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LWEmitterView.h 3 | // LWToolsDemo 4 | // 5 | // Created by weil on 2018/5/8. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LWEmitterView : UIView 12 | @property (nonatomic,strong) UIImage *particleImage; 13 | @property (nonatomic,assign) CGFloat particleScale; 14 | @property (nonatomic,assign) CGFloat particleScaleRange; 15 | /** 开启粒子动画 **/ 16 | - (void)startFireAnimation; 17 | @end 18 | -------------------------------------------------------------------------------- /Classes/Views/LWLineLabel.h: -------------------------------------------------------------------------------- 1 | // 2 | // LWLineLabel.h 3 | // LWToolsDemo 4 | // 5 | // Created by weil on 2018/5/24. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LWLineLabel : UIControl 12 | @property (nonatomic,strong) UIFont *textFont; 13 | @property (nonatomic,strong) UIColor *textColor; 14 | @property (nonatomic,strong) UIColor *lineColor; 15 | @property (nonatomic,copy) NSString *text; 16 | @end 17 | -------------------------------------------------------------------------------- /Classes/Views/LWLineLabel.m: -------------------------------------------------------------------------------- 1 | // 2 | // LWLineLabel.m 3 | // LWToolsDemo 4 | // 5 | // Created by weil on 2018/5/24. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWLineLabel.h" 10 | 11 | @interface LWLineLabel () 12 | @property (nonatomic,strong) UILabel *textLabel; 13 | @property (nonatomic,strong) UIView *lineView; 14 | @end 15 | 16 | @implementation LWLineLabel 17 | 18 | - (instancetype)init { 19 | self = [super init]; 20 | if (self) { 21 | [self _initSubviews]; 22 | } 23 | return self; 24 | } 25 | - (instancetype)initWithFrame:(CGRect)frame { 26 | self = [super initWithFrame:frame]; 27 | if (self) { 28 | [self _initSubviews]; 29 | } 30 | return self; 31 | } 32 | - (void)_initSubviews { 33 | _textLabel = [[UILabel alloc] init]; 34 | _textLabel.textAlignment = NSTextAlignmentCenter; 35 | [self addSubview:_textLabel]; 36 | 37 | _lineView = [[UIView alloc] init]; 38 | [self addSubview:_lineView]; 39 | } 40 | - (void)setTextFont:(UIFont *)textFont { 41 | _textFont = textFont; 42 | _textLabel.font = textFont; 43 | } 44 | - (void)setTextColor:(UIColor *)textColor { 45 | _textColor = textColor; 46 | _textLabel.textColor = textColor; 47 | } 48 | - (void)setLineColor:(UIColor *)lineColor { 49 | _lineColor = lineColor; 50 | _lineView.backgroundColor = lineColor; 51 | } 52 | - (void)setText:(NSString *)text { 53 | _text = text; 54 | _textLabel.text = text; 55 | } 56 | 57 | - (void)layoutSubviews { 58 | [super layoutSubviews]; 59 | _textLabel.frame = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height - 1); 60 | _lineView.frame = CGRectMake(0, self.frame.size.height - 0.5, self.frame.size.width, 0.5); 61 | } 62 | @end 63 | -------------------------------------------------------------------------------- /Classes/Views/LWRefreshFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // LWRefreshFooter.h 3 | // LWToolsDemo 4 | // 5 | // Created by weil on 2018/5/22. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshBackFooter.h" 10 | #import "LWAnimationView.h" 11 | 12 | @interface LWRefreshFooter : MJRefreshBackFooter 13 | //填充色 14 | @property (nonatomic,strong) UIColor *loadingColor; 15 | @property (nonatomic,assign) CGFloat loadingSize; 16 | @property (nonatomic,assign) LWAnimationViewStyle style; 17 | @end 18 | -------------------------------------------------------------------------------- /Classes/Views/LWRefreshHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // LWRefreshHeader.h 3 | // LWToolsDemo 4 | // 5 | // Created by weil on 2018/5/22. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshHeader.h" 10 | #import "LWAnimationView.h" 11 | 12 | @interface LWRefreshHeader : MJRefreshHeader 13 | //填充色 14 | @property (nonatomic,strong) UIColor *loadingColor; 15 | @property (nonatomic,assign) CGFloat loadingSize; 16 | @property (nonatomic,assign) LWAnimationViewStyle style; 17 | @end 18 | -------------------------------------------------------------------------------- /Classes/Views/LWSegmentControl.h: -------------------------------------------------------------------------------- 1 | // 2 | // LWSegmentControl.h 3 | // LWToolsDemo 4 | // 5 | // Created by weil on 2018/5/9. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LWSegmentControl : UIView 12 | /** 正常时候文字大小 **/ 13 | @property (nonatomic,strong) UIFont *normalFont; 14 | /** 选中时候文字大小 **/ 15 | @property (nonatomic,strong) UIFont *selectedFont; 16 | /** 正常时候文字颜色 **/ 17 | @property (nonatomic,strong) UIColor *normalColor; 18 | /** 选中时候文字颜色 **/ 19 | @property (nonatomic,strong) UIColor *selectedColor; 20 | /** 顶部细线的颜色 **/ 21 | @property (nonatomic,strong) UIColor *lineViewColor; 22 | /** 指示器的颜色 **/ 23 | @property (nonatomic,strong) UIColor *progressColor; 24 | /** 两个item之间的间距 **/ 25 | @property (nonatomic,assign) CGFloat itemMargin; 26 | /** 当前选中的item的下标 **/ 27 | @property (nonatomic,assign,readonly) NSInteger currentIndex; 28 | /** 是否开启文字渐变动画 ,默认是YES**/ 29 | @property (nonatomic,assign) BOOL enableTextAnimation; 30 | /** 顶部间距,默认20,状态栏高度 **/ 31 | @property (nonatomic,assign) CGFloat topMargin; 32 | /** 选中item的回调 **/ 33 | @property (nonatomic,copy) void(^didClickItemAtIndex)(NSInteger index); 34 | /** 是否显示底部细线 **/ 35 | - (void)setLineViewShow:(BOOL)show; 36 | /** 是否显示指示器 **/ 37 | - (void)setProgressShow:(BOOL)show; 38 | - (instancetype)initWithFrame:(CGRect)frame items:(NSArray *)items; 39 | - (void)setItems:(NSArray *)items; 40 | /** 刷新 **/ 41 | - (void)reloadItems; 42 | /** 设置选中的下标 **/ 43 | - (void)setCurrentSelectedIndex:(NSInteger)index; 44 | /** 显示红点 **/ 45 | - (void)showBadgeAtIndex:(NSInteger)index; 46 | /** 隐藏红点 **/ 47 | - (void)hideBadgeViewAtIndex:(NSInteger)index; 48 | @end 49 | -------------------------------------------------------------------------------- /Classes/Views/LWWindowAlert.h: -------------------------------------------------------------------------------- 1 | // 2 | // LWWindowAlert.h 3 | // LWToolsDemo 4 | // 5 | // Created by weil on 2018/6/12. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LWWindowAlert : NSObject 12 | + (void)enableCustomWindowAlert; 13 | + (void)disableCustomWindowAlert; 14 | @end 15 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 顾语流年 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /LWTools.podspec: -------------------------------------------------------------------------------- 1 | 2 | Pod::Spec.new do |s| 3 | 4 | s.name = "LWTools" 5 | s.version = "2.1.1.9" 6 | s.summary = "一些常用的工具类" 7 | s.description = "1.对文件的简单加密,解密功能 2.判断设备剩余空间的大小 3.添加view分类 4.粒子动画特效的按钮 5.从一张view中生成图片 6.增加标签选择功能(可显示小红点) 7.类似微信图片浏览功能 8.多种动画效果 9.自定义基于MJRefresh的上拉加载下拉刷新动画 10.自定义window,放到状态栏位置,点击scrollView滚动到顶部" 8 | 9 | s.homepage = "https://github.com/LittleCuteCat/LWTools" 10 | 11 | s.license = { :type => "MIT", :file => "LICENSE" } 12 | 13 | s.author = { "LittleCuteCat" => "weil218@163.com" } 14 | 15 | s.platform = :ios, "8.0" 16 | 17 | s.source = { :git => "https://github.com/LittleCuteCat/LWTools.git", :tag => "#{s.version}" } 18 | 19 | s.requires_arc = true 20 | 21 | s.source_files = "Classes","Classes/**/*.{h,m}" 22 | 23 | s.dependency 'LWAnimation' 24 | 25 | s.dependency 'LWPhotoBrowser' 26 | 27 | s.dependency 'MJRefresh' 28 | 29 | s.frameworks = 'UIKit','Foundation' 30 | 31 | end 32 | -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo.xcodeproj/project.xcworkspace/xcuserdata/weil.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coderWeil/LWTools/bbdc7676ca5775c59c556ed1e9521f256cd1327f/LWToolsDemo/LWToolsDemo.xcodeproj/project.xcworkspace/xcuserdata/weil.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo.xcodeproj/xcuserdata/weil.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo.xcodeproj/xcuserdata/weil.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | LWToolsDemo.xcscheme 8 | 9 | orderHint 10 | 3 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 3322A5BC20A1864B0093407B 16 | 17 | primary 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo.xcworkspace/xcuserdata/weil.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coderWeil/LWTools/bbdc7676ca5775c59c556ed1e9521f256cd1327f/LWToolsDemo/LWToolsDemo.xcworkspace/xcuserdata/weil.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo.xcworkspace/xcuserdata/weil.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo/AnimationButtonDemo/LWAnimationButtonDemo.h: -------------------------------------------------------------------------------- 1 | // 2 | // LWAnimationButtonDemo.h 3 | // LWToolsDemo 4 | // 5 | // Created by weil on 2018/5/9. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LWAnimationButtonDemo : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo/AnimationButtonDemo/LWAnimationButtonDemo.m: -------------------------------------------------------------------------------- 1 | // 2 | // LWAnimationButtonDemo.m 3 | // LWToolsDemo 4 | // 5 | // Created by weil on 2018/5/9. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWAnimationButtonDemo.h" 10 | #import "LWAnimationButton.h" 11 | #import "UIView+LWFrame.h" 12 | 13 | @interface LWAnimationButtonDemo () 14 | @property (nonatomic,strong) LWAnimationButton *animationButton; 15 | @end 16 | 17 | @implementation LWAnimationButtonDemo 18 | 19 | - (void)viewDidLoad { 20 | [super viewDidLoad]; 21 | self.view.backgroundColor = [UIColor whiteColor]; 22 | _animationButton = [LWAnimationButton buttonWithType:UIButtonTypeCustom]; 23 | _animationButton.titleLabel.font = [UIFont systemFontOfSize:12]; 24 | _animationButton.particleImage = [UIImage imageNamed:@"detail_zan_selected"]; 25 | _animationButton.particleScale = 0.05; 26 | _animationButton.particleScaleRange = 0.02f; 27 | [_animationButton setImage:[UIImage imageNamed:@"detail_zan"] forState:UIControlStateNormal]; 28 | [_animationButton setImage:[UIImage imageNamed:@"detail_zan_selected"] forState:UIControlStateSelected]; 29 | [_animationButton addTarget:self action:@selector(zanAction) forControlEvents:UIControlEventTouchUpInside]; 30 | [self.view addSubview:_animationButton]; 31 | _animationButton.center = CGPointMake(self.view.width * 0.5, self.view.height * 0.5); 32 | _animationButton.bounds = CGRectMake(0, 0, 50, 20); 33 | } 34 | 35 | - (void)zanAction { 36 | if (_animationButton.selected) { 37 | [_animationButton popInSideWithDuration:0.5]; 38 | }else { 39 | [_animationButton popOutSideWithDuration:0.5]; 40 | [_animationButton startAnimation]; 41 | } 42 | _animationButton.selected = !_animationButton.selected; 43 | } 44 | 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo/AnimationDemo/LWAnimationViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LWAnimationViewController.h 3 | // LWToolsDemo 4 | // 5 | // Created by weil on 2018/5/10. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LWAnimationViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // LWToolsDemo 4 | // 5 | // Created by weil on 2018/5/8. 6 | // Copyright © 2018年 weil. 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 | -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo/Assets.xcassets/detail_zan.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "detail_zan@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "detail_zan@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo/Assets.xcassets/detail_zan.imageset/detail_zan@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coderWeil/LWTools/bbdc7676ca5775c59c556ed1e9521f256cd1327f/LWToolsDemo/LWToolsDemo/Assets.xcassets/detail_zan.imageset/detail_zan@2x.png -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo/Assets.xcassets/detail_zan.imageset/detail_zan@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coderWeil/LWTools/bbdc7676ca5775c59c556ed1e9521f256cd1327f/LWToolsDemo/LWToolsDemo/Assets.xcassets/detail_zan.imageset/detail_zan@3x.png -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo/Assets.xcassets/detail_zan_selected.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "detail_zan_selected@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "detail_zan_selected@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo/Assets.xcassets/detail_zan_selected.imageset/detail_zan_selected@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coderWeil/LWTools/bbdc7676ca5775c59c556ed1e9521f256cd1327f/LWToolsDemo/LWToolsDemo/Assets.xcassets/detail_zan_selected.imageset/detail_zan_selected@2x.png -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo/Assets.xcassets/detail_zan_selected.imageset/detail_zan_selected@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coderWeil/LWTools/bbdc7676ca5775c59c556ed1e9521f256cd1327f/LWToolsDemo/LWToolsDemo/Assets.xcassets/detail_zan_selected.imageset/detail_zan_selected@3x.png -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo/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 | -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UILaunchStoryboardName 24 | LaunchScreen 25 | UIMainStoryboardFile 26 | Main 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | UISupportedInterfaceOrientations~ipad 38 | 39 | UIInterfaceOrientationPortrait 40 | UIInterfaceOrientationPortraitUpsideDown 41 | UIInterfaceOrientationLandscapeLeft 42 | UIInterfaceOrientationLandscapeRight 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo/PhotoBrowser/Expression/Expression01.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coderWeil/LWTools/bbdc7676ca5775c59c556ed1e9521f256cd1327f/LWToolsDemo/LWToolsDemo/PhotoBrowser/Expression/Expression01.jpeg -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo/PhotoBrowser/Expression/Expression02.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coderWeil/LWTools/bbdc7676ca5775c59c556ed1e9521f256cd1327f/LWToolsDemo/LWToolsDemo/PhotoBrowser/Expression/Expression02.jpeg -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo/PhotoBrowser/Expression/Expression03.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coderWeil/LWTools/bbdc7676ca5775c59c556ed1e9521f256cd1327f/LWToolsDemo/LWToolsDemo/PhotoBrowser/Expression/Expression03.jpeg -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo/PhotoBrowser/Expression/Expression04.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coderWeil/LWTools/bbdc7676ca5775c59c556ed1e9521f256cd1327f/LWToolsDemo/LWToolsDemo/PhotoBrowser/Expression/Expression04.jpeg -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo/PhotoBrowser/Expression/Expression05.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coderWeil/LWTools/bbdc7676ca5775c59c556ed1e9521f256cd1327f/LWToolsDemo/LWToolsDemo/PhotoBrowser/Expression/Expression05.jpeg -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo/PhotoBrowser/Expression/Expression06.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coderWeil/LWTools/bbdc7676ca5775c59c556ed1e9521f256cd1327f/LWToolsDemo/LWToolsDemo/PhotoBrowser/Expression/Expression06.jpeg -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo/PhotoBrowser/Expression/Expression07.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coderWeil/LWTools/bbdc7676ca5775c59c556ed1e9521f256cd1327f/LWToolsDemo/LWToolsDemo/PhotoBrowser/Expression/Expression07.jpeg -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo/PhotoBrowser/Expression/Expression08.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coderWeil/LWTools/bbdc7676ca5775c59c556ed1e9521f256cd1327f/LWToolsDemo/LWToolsDemo/PhotoBrowser/Expression/Expression08.jpeg -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo/PhotoBrowser/Expression/Expression09.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coderWeil/LWTools/bbdc7676ca5775c59c556ed1e9521f256cd1327f/LWToolsDemo/LWToolsDemo/PhotoBrowser/Expression/Expression09.jpeg -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo/PhotoBrowser/Expression/Expression10.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coderWeil/LWTools/bbdc7676ca5775c59c556ed1e9521f256cd1327f/LWToolsDemo/LWToolsDemo/PhotoBrowser/Expression/Expression10.jpeg -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo/PhotoBrowser/Expression/Expression11.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coderWeil/LWTools/bbdc7676ca5775c59c556ed1e9521f256cd1327f/LWToolsDemo/LWToolsDemo/PhotoBrowser/Expression/Expression11.jpeg -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo/PhotoBrowser/LWPhotosViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LWPhotosViewController.h 3 | // TransitionDemo 4 | // 5 | // Created by weil on 2018/5/7. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LWPhotosViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo/PhotoBrowser/LYPictureFirstPageCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // LYPictureFirstPageCell.h 3 | // LYCustomTransitionDemo 4 | // 5 | // Created by liyang on 2017/12/5. 6 | // Copyright © 2017年 liyang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LYPictureFirstPageCell : UICollectionViewCell 12 | 13 | @property (nonatomic, strong) UIImageView *imageView; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo/PhotoBrowser/LYPictureFirstPageCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // LYPictureFirstPageCell.m 3 | // LYCustomTransitionDemo 4 | // 5 | // Created by liyang on 2017/12/5. 6 | // Copyright © 2017年 liyang. All rights reserved. 7 | // 8 | 9 | #import "LYPictureFirstPageCell.h" 10 | 11 | @implementation LYPictureFirstPageCell 12 | 13 | - (instancetype)initWithFrame:(CGRect)frame { 14 | self = [super initWithFrame:frame]; 15 | if (self) { 16 | self.backgroundColor = [UIColor blackColor]; 17 | [self setupView]; 18 | } 19 | return self; 20 | } 21 | - (void)setupView { 22 | [self.contentView addSubview:self.imageView]; 23 | } 24 | 25 | #pragma mark - Setter and getter 26 | 27 | - (UIImageView *)imageView { 28 | if (!_imageView) { 29 | _imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; 30 | } 31 | return _imageView; 32 | } 33 | @end 34 | 35 | -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo/RefreshDemo/LWRereshAnimationDemo.h: -------------------------------------------------------------------------------- 1 | // 2 | // LWRereshAnimationDemo.h 3 | // LWToolsDemo 4 | // 5 | // Created by weil on 2018/5/22. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LWRereshAnimationDemo : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo/SegmentControlDemo/LWSegmentViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LWSegmentViewController.h 3 | // LWToolsDemo 4 | // 5 | // Created by weil on 2018/5/9. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LWSegmentViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo/SegmentControlDemo/LWSegmentViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // LWSegmentViewController.m 3 | // LWToolsDemo 4 | // 5 | // Created by weil on 2018/5/9. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWSegmentViewController.h" 10 | #import "LWSegmentControl.h" 11 | #import "UIView+LWFrame.h" 12 | 13 | @interface LWSegmentViewController () 14 | @property (nonatomic,strong) LWSegmentControl *segmentControl; 15 | @end 16 | 17 | @implementation LWSegmentViewController 18 | 19 | - (void)viewDidLoad { 20 | [super viewDidLoad]; 21 | self.view.backgroundColor = [UIColor whiteColor]; 22 | _segmentControl = [[LWSegmentControl alloc] initWithFrame:CGRectMake(0, 100, self.view.width, 50) items:@[@"标题1",@"标题标题标题",@"课程(103节)"]]; 23 | _segmentControl.normalFont = [UIFont systemFontOfSize:12]; 24 | _segmentControl.selectedFont = [UIFont systemFontOfSize:12]; 25 | _segmentControl.normalColor = [UIColor lightGrayColor]; 26 | _segmentControl.selectedColor = [UIColor blackColor]; 27 | _segmentControl.progressColor = [UIColor blackColor]; 28 | _segmentControl.lineViewColor = [UIColor lightGrayColor]; 29 | _segmentControl.itemMargin = 10; 30 | _segmentControl.enableTextAnimation = NO; 31 | _segmentControl.didClickItemAtIndex = ^(NSInteger index) { 32 | NSLog(@"%zd",index); 33 | }; 34 | [_segmentControl setLineViewShow:YES]; 35 | [_segmentControl setProgressShow:YES]; 36 | [_segmentControl reloadItems]; 37 | [self.view addSubview:_segmentControl]; 38 | [_segmentControl setCurrentSelectedIndex:1]; 39 | [_segmentControl showBadgeAtIndex:0]; 40 | [_segmentControl showBadgeAtIndex:2]; 41 | } 42 | 43 | @end 44 | -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // LWToolsDemo 4 | // 5 | // Created by weil on 2018/5/8. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo/ViewImageDemo/LWViewImageController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LWViewImageController.h 3 | // LWToolsDemo 4 | // 5 | // Created by weil on 2018/5/9. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LWViewImageController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LWToolsDemo/LWToolsDemo/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // LWToolsDemo 4 | // 5 | // Created by weil on 2018/5/8. 6 | // Copyright © 2018年 weil. 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 | -------------------------------------------------------------------------------- /LWToolsDemo/Podfile: -------------------------------------------------------------------------------- 1 | platform:ios,'8.0' 2 | 3 | target 'LWToolsDemo' do 4 | pod 'SDWebImage' 5 | pod 'MJRefresh' 6 | pod 'Masonry' 7 | pod 'LWPhotoBrowser' 8 | pod 'LWAnimation' 9 | end 10 | -------------------------------------------------------------------------------- /LWToolsDemo/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - LWAnimation (0.0.1) 3 | - LWPhotoBrowser (0.0.1): 4 | - SDWebImage 5 | - Masonry (1.1.0) 6 | - MJRefresh (3.1.15.3) 7 | - SDWebImage (4.3.3): 8 | - SDWebImage/Core (= 4.3.3) 9 | - SDWebImage/Core (4.3.3) 10 | 11 | DEPENDENCIES: 12 | - LWAnimation 13 | - LWPhotoBrowser 14 | - Masonry 15 | - MJRefresh 16 | - SDWebImage 17 | 18 | SPEC REPOS: 19 | https://github.com/cocoapods/specs.git: 20 | - LWAnimation 21 | - LWPhotoBrowser 22 | - Masonry 23 | - MJRefresh 24 | - SDWebImage 25 | 26 | SPEC CHECKSUMS: 27 | LWAnimation: 175be22009ec5294831e4443108c4edeae1508f9 28 | LWPhotoBrowser: c23ee5f1ac5de756c4879a3344f0147f2d79a8a6 29 | Masonry: 678fab65091a9290e40e2832a55e7ab731aad201 30 | MJRefresh: b48380ae2b927b46c4ef000de9adb8dc748e1df7 31 | SDWebImage: de4d90b5bff3571eae7bd16202b1f43135409fa5 32 | 33 | PODFILE CHECKSUM: adb45e39612626f9d14ac390c607069f5249d6a1 34 | 35 | COCOAPODS: 1.5.2 36 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/LWAnimation/LWAnimationStyleBase.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationStyleBase.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/LWAnimation/LWAnimationView.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationView.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/LWAnimation/LWAnimationViewBallBeat.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewBallBeat.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/LWAnimation/LWAnimationViewBallClipRotate.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewBallClipRotate.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/LWAnimation/LWAnimationViewBallClipRotateMultiple.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewBallClipRotateMultiple.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/LWAnimation/LWAnimationViewBallClipRotatePulse.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewBallClipRotatePulse.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/LWAnimation/LWAnimationViewBallGridBeat.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewBallGridBeat.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/LWAnimation/LWAnimationViewBallGridPulse.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewBallGridPulse.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/LWAnimation/LWAnimationViewBallPulse.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewBallPulse.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/LWAnimation/LWAnimationViewBallPulseRise.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewBallPulseRise.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/LWAnimation/LWAnimationViewBallPulseSyn.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewBallPulseSyn.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/LWAnimation/LWAnimationViewBallRotate.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewBallRotate.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/LWAnimation/LWAnimationViewBallRotateChase.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewBallRotateChase.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/LWAnimation/LWAnimationViewBallSaleMultiple.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewBallSaleMultiple.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/LWAnimation/LWAnimationViewBallScale.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewBallScale.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/LWAnimation/LWAnimationViewBallScaleRipple.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewBallScaleRipple.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/LWAnimation/LWAnimationViewBallScaleRippleMultiple.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewBallScaleRippleMultiple.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/LWAnimation/LWAnimationViewBallSpinFadeLoad.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewBallSpinFadeLoad.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/LWAnimation/LWAnimationViewLineAudioEqualizer.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewLineAudioEqualizer.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/LWAnimation/LWAnimationViewLinePulseOut.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewLinePulseOut.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/LWAnimation/LWAnimationViewLineScale.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewLineScale.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/LWAnimation/LWAnimationViewLineScaleParty.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewLineScaleParty.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/LWPhotoBrowser/LWPhotoBrowser.h: -------------------------------------------------------------------------------- 1 | ../../../LWPhotoBrowser/Classes/LWPhotoBroswer/LWPhotoBrowser.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/LWPhotoBrowser/LWPhotoBrowserController.h: -------------------------------------------------------------------------------- 1 | ../../../LWPhotoBrowser/Classes/LWPhotoBroswer/Controller/LWPhotoBrowserController.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/LWPhotoBrowser/LWPhotoBrowserDrivenInteractive.h: -------------------------------------------------------------------------------- 1 | ../../../LWPhotoBrowser/Classes/LWPhotoBroswer/Transition/LWPhotoBrowserDrivenInteractive.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/LWPhotoBrowser/LWPhotoBrowserInteractiveTransition.h: -------------------------------------------------------------------------------- 1 | ../../../LWPhotoBrowser/Classes/LWPhotoBroswer/Transition/LWPhotoBrowserInteractiveTransition.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/LWPhotoBrowser/LWPhotoBrowserPopTransition.h: -------------------------------------------------------------------------------- 1 | ../../../LWPhotoBrowser/Classes/LWPhotoBroswer/Transition/LWPhotoBrowserPopTransition.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/LWPhotoBrowser/LWPhotoBrowserPushTransition.h: -------------------------------------------------------------------------------- 1 | ../../../LWPhotoBrowser/Classes/LWPhotoBroswer/Transition/LWPhotoBrowserPushTransition.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/LWPhotoBrowser/LWPhotoBrowserTransition.h: -------------------------------------------------------------------------------- 1 | ../../../LWPhotoBrowser/Classes/LWPhotoBroswer/Transition/LWPhotoBrowserTransition.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/LWPhotoBrowser/LWPhotoModel.h: -------------------------------------------------------------------------------- 1 | ../../../LWPhotoBrowser/Classes/LWPhotoBroswer/Model/LWPhotoModel.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/LWPhotoBrowser/LWPhotoViewCell.h: -------------------------------------------------------------------------------- 1 | ../../../LWPhotoBrowser/Classes/LWPhotoBroswer/View/LWPhotoViewCell.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/LWPhotoBrowser/LWPhotoZoomView.h: -------------------------------------------------------------------------------- 1 | ../../../LWPhotoBrowser/Classes/LWPhotoBroswer/View/LWPhotoZoomView.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/MJRefresh/MJRefresh.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/MJRefresh.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/MJRefresh/MJRefreshAutoFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshAutoFooter.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/MJRefresh/MJRefreshAutoGifFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/MJRefresh/MJRefreshAutoNormalFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/MJRefresh/MJRefreshAutoStateFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/MJRefresh/MJRefreshBackFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshBackFooter.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/MJRefresh/MJRefreshBackGifFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/MJRefresh/MJRefreshBackNormalFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/MJRefresh/MJRefreshBackStateFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/MJRefresh/MJRefreshComponent.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshComponent.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/MJRefresh/MJRefreshConst.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/MJRefreshConst.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/MJRefresh/MJRefreshFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshFooter.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/MJRefresh/MJRefreshGifHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Header/MJRefreshGifHeader.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/MJRefresh/MJRefreshHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshHeader.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/MJRefresh/MJRefreshNormalHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Header/MJRefreshNormalHeader.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/MJRefresh/MJRefreshStateHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Header/MJRefreshStateHeader.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/MJRefresh/NSBundle+MJRefresh.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/NSBundle+MJRefresh.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/MJRefresh/UIScrollView+MJExtension.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/UIScrollView+MJExtension.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/MJRefresh/UIScrollView+MJRefresh.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/UIScrollView+MJRefresh.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/MJRefresh/UIView+MJExtension.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/UIView+MJExtension.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/Masonry/MASCompositeConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASCompositeConstraint.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/Masonry/MASConstraint+Private.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraint+Private.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/Masonry/MASConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraint.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/Masonry/MASConstraintMaker.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraintMaker.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/Masonry/MASLayoutConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASLayoutConstraint.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/Masonry/MASUtilities.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASUtilities.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/Masonry/MASViewAttribute.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASViewAttribute.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/Masonry/MASViewConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASViewConstraint.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/Masonry/Masonry.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/Masonry.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/Masonry/NSArray+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSArray+MASAdditions.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/Masonry/NSArray+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSArray+MASShorthandAdditions.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/Masonry/NSLayoutConstraint+MASDebugAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSLayoutConstraint+MASDebugAdditions.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/Masonry/View+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/View+MASAdditions.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/Masonry/View+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/View+MASShorthandAdditions.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/Masonry/ViewController+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/ViewController+MASAdditions.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/SDWebImage/NSButton+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/NSButton+WebCache.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/SDWebImage/NSData+ImageContentType.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/NSData+ImageContentType.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/SDWebImage/NSImage+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/NSImage+WebCache.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/SDWebImage/SDAnimatedImageRep.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDAnimatedImageRep.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/SDWebImage/SDImageCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDImageCache.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/SDWebImage/SDImageCacheConfig.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDImageCacheConfig.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/SDWebImage/SDWebImageCoder.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageCoder.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/SDWebImage/SDWebImageCoderHelper.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageCoderHelper.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/SDWebImage/SDWebImageCodersManager.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageCodersManager.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/SDWebImage/SDWebImageCompat.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageCompat.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/SDWebImage/SDWebImageDownloader.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageDownloader.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/SDWebImage/SDWebImageDownloaderOperation.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageDownloaderOperation.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/SDWebImage/SDWebImageFrame.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageFrame.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/SDWebImage/SDWebImageGIFCoder.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageGIFCoder.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/SDWebImage/SDWebImageImageIOCoder.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageImageIOCoder.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/SDWebImage/SDWebImageManager.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageManager.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/SDWebImage/SDWebImageOperation.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageOperation.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/SDWebImage/SDWebImagePrefetcher.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImagePrefetcher.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/SDWebImage/SDWebImageTransition.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageTransition.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/SDWebImage/UIButton+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIButton+WebCache.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/SDWebImage/UIImage+ForceDecode.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImage+ForceDecode.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/SDWebImage/UIImage+GIF.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImage+GIF.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/SDWebImage/UIImage+MultiFormat.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImage+MultiFormat.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/SDWebImage/UIImageView+HighlightedWebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImageView+HighlightedWebCache.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/SDWebImage/UIImageView+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImageView+WebCache.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/SDWebImage/UIView+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIView+WebCache.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Private/SDWebImage/UIView+WebCacheOperation.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIView+WebCacheOperation.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/LWAnimation/LWAnimationStyleBase.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationStyleBase.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/LWAnimation/LWAnimationView.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationView.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/LWAnimation/LWAnimationViewBallBeat.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewBallBeat.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/LWAnimation/LWAnimationViewBallClipRotate.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewBallClipRotate.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/LWAnimation/LWAnimationViewBallClipRotateMultiple.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewBallClipRotateMultiple.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/LWAnimation/LWAnimationViewBallClipRotatePulse.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewBallClipRotatePulse.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/LWAnimation/LWAnimationViewBallGridBeat.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewBallGridBeat.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/LWAnimation/LWAnimationViewBallGridPulse.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewBallGridPulse.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/LWAnimation/LWAnimationViewBallPulse.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewBallPulse.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/LWAnimation/LWAnimationViewBallPulseRise.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewBallPulseRise.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/LWAnimation/LWAnimationViewBallPulseSyn.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewBallPulseSyn.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/LWAnimation/LWAnimationViewBallRotate.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewBallRotate.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/LWAnimation/LWAnimationViewBallRotateChase.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewBallRotateChase.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/LWAnimation/LWAnimationViewBallSaleMultiple.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewBallSaleMultiple.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/LWAnimation/LWAnimationViewBallScale.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewBallScale.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/LWAnimation/LWAnimationViewBallScaleRipple.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewBallScaleRipple.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/LWAnimation/LWAnimationViewBallScaleRippleMultiple.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewBallScaleRippleMultiple.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/LWAnimation/LWAnimationViewBallSpinFadeLoad.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewBallSpinFadeLoad.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/LWAnimation/LWAnimationViewLineAudioEqualizer.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewLineAudioEqualizer.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/LWAnimation/LWAnimationViewLinePulseOut.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewLinePulseOut.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/LWAnimation/LWAnimationViewLineScale.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewLineScale.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/LWAnimation/LWAnimationViewLineScaleParty.h: -------------------------------------------------------------------------------- 1 | ../../../LWAnimation/LWAnimation/LWAnimationViewLineScaleParty.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/LWPhotoBrowser/LWPhotoBrowser.h: -------------------------------------------------------------------------------- 1 | ../../../LWPhotoBrowser/Classes/LWPhotoBroswer/LWPhotoBrowser.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/LWPhotoBrowser/LWPhotoBrowserController.h: -------------------------------------------------------------------------------- 1 | ../../../LWPhotoBrowser/Classes/LWPhotoBroswer/Controller/LWPhotoBrowserController.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/LWPhotoBrowser/LWPhotoBrowserDrivenInteractive.h: -------------------------------------------------------------------------------- 1 | ../../../LWPhotoBrowser/Classes/LWPhotoBroswer/Transition/LWPhotoBrowserDrivenInteractive.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/LWPhotoBrowser/LWPhotoBrowserInteractiveTransition.h: -------------------------------------------------------------------------------- 1 | ../../../LWPhotoBrowser/Classes/LWPhotoBroswer/Transition/LWPhotoBrowserInteractiveTransition.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/LWPhotoBrowser/LWPhotoBrowserPopTransition.h: -------------------------------------------------------------------------------- 1 | ../../../LWPhotoBrowser/Classes/LWPhotoBroswer/Transition/LWPhotoBrowserPopTransition.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/LWPhotoBrowser/LWPhotoBrowserPushTransition.h: -------------------------------------------------------------------------------- 1 | ../../../LWPhotoBrowser/Classes/LWPhotoBroswer/Transition/LWPhotoBrowserPushTransition.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/LWPhotoBrowser/LWPhotoBrowserTransition.h: -------------------------------------------------------------------------------- 1 | ../../../LWPhotoBrowser/Classes/LWPhotoBroswer/Transition/LWPhotoBrowserTransition.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/LWPhotoBrowser/LWPhotoModel.h: -------------------------------------------------------------------------------- 1 | ../../../LWPhotoBrowser/Classes/LWPhotoBroswer/Model/LWPhotoModel.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/LWPhotoBrowser/LWPhotoViewCell.h: -------------------------------------------------------------------------------- 1 | ../../../LWPhotoBrowser/Classes/LWPhotoBroswer/View/LWPhotoViewCell.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/LWPhotoBrowser/LWPhotoZoomView.h: -------------------------------------------------------------------------------- 1 | ../../../LWPhotoBrowser/Classes/LWPhotoBroswer/View/LWPhotoZoomView.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/MJRefresh/MJRefresh.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/MJRefresh.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/MJRefresh/MJRefreshAutoFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshAutoFooter.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/MJRefresh/MJRefreshAutoGifFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/MJRefresh/MJRefreshAutoNormalFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/MJRefresh/MJRefreshAutoStateFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/MJRefresh/MJRefreshBackFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshBackFooter.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/MJRefresh/MJRefreshBackGifFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/MJRefresh/MJRefreshBackNormalFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/MJRefresh/MJRefreshBackStateFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/MJRefresh/MJRefreshComponent.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshComponent.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/MJRefresh/MJRefreshConst.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/MJRefreshConst.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/MJRefresh/MJRefreshFooter.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshFooter.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/MJRefresh/MJRefreshGifHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Header/MJRefreshGifHeader.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/MJRefresh/MJRefreshHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Base/MJRefreshHeader.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/MJRefresh/MJRefreshNormalHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Header/MJRefreshNormalHeader.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/MJRefresh/MJRefreshStateHeader.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/Custom/Header/MJRefreshStateHeader.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/MJRefresh/NSBundle+MJRefresh.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/NSBundle+MJRefresh.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/MJRefresh/UIScrollView+MJExtension.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/UIScrollView+MJExtension.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/MJRefresh/UIScrollView+MJRefresh.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/UIScrollView+MJRefresh.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/MJRefresh/UIView+MJExtension.h: -------------------------------------------------------------------------------- 1 | ../../../MJRefresh/MJRefresh/UIView+MJExtension.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/Masonry/MASCompositeConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASCompositeConstraint.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/Masonry/MASConstraint+Private.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraint+Private.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/Masonry/MASConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraint.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/Masonry/MASConstraintMaker.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraintMaker.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/Masonry/MASLayoutConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASLayoutConstraint.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/Masonry/MASUtilities.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASUtilities.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/Masonry/MASViewAttribute.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASViewAttribute.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/Masonry/MASViewConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASViewConstraint.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/Masonry/Masonry.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/Masonry.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/Masonry/NSArray+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSArray+MASAdditions.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/Masonry/NSArray+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSArray+MASShorthandAdditions.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/Masonry/NSLayoutConstraint+MASDebugAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSLayoutConstraint+MASDebugAdditions.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/Masonry/View+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/View+MASAdditions.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/Masonry/View+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/View+MASShorthandAdditions.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/Masonry/ViewController+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/ViewController+MASAdditions.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/SDWebImage/NSButton+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/NSButton+WebCache.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/SDWebImage/NSData+ImageContentType.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/NSData+ImageContentType.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/SDWebImage/NSImage+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/NSImage+WebCache.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/SDWebImage/SDAnimatedImageRep.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDAnimatedImageRep.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/SDWebImage/SDImageCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDImageCache.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/SDWebImage/SDImageCacheConfig.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDImageCacheConfig.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/SDWebImage/SDWebImageCoder.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageCoder.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/SDWebImage/SDWebImageCoderHelper.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageCoderHelper.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/SDWebImage/SDWebImageCodersManager.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageCodersManager.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/SDWebImage/SDWebImageCompat.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageCompat.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/SDWebImage/SDWebImageDownloader.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageDownloader.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/SDWebImage/SDWebImageDownloaderOperation.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageDownloaderOperation.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/SDWebImage/SDWebImageFrame.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageFrame.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/SDWebImage/SDWebImageGIFCoder.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageGIFCoder.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/SDWebImage/SDWebImageImageIOCoder.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageImageIOCoder.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/SDWebImage/SDWebImageManager.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageManager.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/SDWebImage/SDWebImageOperation.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageOperation.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/SDWebImage/SDWebImagePrefetcher.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImagePrefetcher.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/SDWebImage/SDWebImageTransition.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageTransition.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/SDWebImage/UIButton+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIButton+WebCache.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/SDWebImage/UIImage+ForceDecode.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImage+ForceDecode.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/SDWebImage/UIImage+GIF.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImage+GIF.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/SDWebImage/UIImage+MultiFormat.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImage+MultiFormat.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/SDWebImage/UIImageView+HighlightedWebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImageView+HighlightedWebCache.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/SDWebImage/UIImageView+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImageView+WebCache.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/SDWebImage/UIView+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIView+WebCache.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Headers/Public/SDWebImage/UIView+WebCacheOperation.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIView+WebCacheOperation.h -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWAnimation/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Weil 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWAnimation/LWAnimation/LWAnimationStyleBase.h: -------------------------------------------------------------------------------- 1 | // 2 | // LWAnimationStyleBase.h 3 | // AnimationDemo 4 | // 5 | // Created by weil on 2018/3/28. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface LWAnimationStyleBase : NSObject 13 | + (void)setupAnimation:(CALayer *)layer size:(CGSize)size color:(UIColor *)color; 14 | //线性 15 | + (CALayer *)customLineLayerWith:(CGSize)size color:(UIColor *)color; 16 | //圆形 17 | + (CALayer *)customCircleLayerWith:(CGSize)size color:(UIColor *)color; 18 | 19 | + (CALayer *)customThirdOfFourLayer:(CGSize)size color:(UIColor *)color; 20 | 21 | + (CALayer *)customRingTwoHalfVertical:(CGSize)size color:(UIColor *)color; 22 | 23 | + (CALayer *)customRingTwoHalfHorizontal:(CGSize)size color:(UIColor *)color; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWAnimation/LWAnimation/LWAnimationView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LWAnimationView.h 3 | // AnimationDemo 4 | // 5 | // Created by weil on 2018/3/28. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef NS_ENUM(NSUInteger,LWAnimationViewStyle) { 12 | LWAnimationViewStyleLineScale, 13 | LWAnimationViewStyleLineScaleParty, 14 | LWAnimationViewStyleLinePulseOut, 15 | LWAnimationViewStyleLineAudioEqualizer, 16 | LWAnimationViewStyleBallBeat, 17 | LWAnimationViewStyleBallClipRotate, 18 | LWAnimationViewStyleBallClipRotateMultiple, 19 | LWAnimationViewStyleBallClipRotatePulse, 20 | LWAnimationViewStyleBallGridBeat, 21 | LWAnimationViewStyleBallGridPulse, 22 | LWAnimationViewStyleBallPulse, 23 | LWAnimationviewstyleBallPulseRise, 24 | LWAnimationViewStyleBallPulseSyn, 25 | LWAnimationViewStyleBallRotate, 26 | LWAnimationViewStyleBallRotateChase, 27 | LWAnimationViewStyleBallScale, 28 | LWAnimationViewStyleBallScaleMultiple, 29 | LWAnimationViewStyleBallScaleRipple, 30 | LWAnimationViewStyleBallScaleRippleMultiple, 31 | LWAnimationViewStyleBallSpinFadeLoad 32 | }; 33 | 34 | @interface LWAnimationView : UIView 35 | @property (nonatomic,assign) CGFloat padding; 36 | @property (nonatomic,strong) UIColor *color; 37 | @property (nonatomic,assign,readonly) BOOL isAnimating; 38 | @property (nonatomic,assign) LWAnimationViewStyle animationStyle; 39 | - (void)startAnimation; 40 | - (void)stopAnimation; 41 | @end 42 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWAnimation/LWAnimation/LWAnimationViewBallBeat.h: -------------------------------------------------------------------------------- 1 | // 2 | // WLAnimationViewBallBeat.h 3 | // AnimationDemo 4 | // 5 | // Created by weil on 2018/3/28. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWAnimationStyleBase.h" 10 | //小球渐变动画 11 | @interface LWAnimationViewBallBeat : LWAnimationStyleBase 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWAnimation/LWAnimation/LWAnimationViewBallClipRotate.h: -------------------------------------------------------------------------------- 1 | // 2 | // WLAnimationViewBallClipRotate.h 3 | // AnimationDemo 4 | // 5 | // Created by weil on 2018/3/29. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWAnimationStyleBase.h" 10 | //不完整圆形动画 11 | @interface LWAnimationViewBallClipRotate : LWAnimationStyleBase 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWAnimation/LWAnimation/LWAnimationViewBallClipRotate.m: -------------------------------------------------------------------------------- 1 | // 2 | // WLAnimationViewBallClipRotate.m 3 | // AnimationDemo 4 | // 5 | // Created by weil on 2018/3/29. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWAnimationViewBallClipRotate.h" 10 | 11 | @implementation LWAnimationViewBallClipRotate 12 | + (void)setupAnimation:(CALayer *)layer size:(CGSize)size color:(UIColor *)color { 13 | CFTimeInterval duration = 0.75; 14 | CAKeyframeAnimation *scaleAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform.scale"]; 15 | scaleAnimation.keyTimes = @[@0,@0.5,@1]; 16 | scaleAnimation.values = @[@1,@0.6,@1]; 17 | CAKeyframeAnimation *rotationAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation.z"]; 18 | rotationAnimation.keyTimes = scaleAnimation.keyTimes; 19 | rotationAnimation.values = @[@0,@(M_PI),@(M_PI * 2)]; 20 | 21 | CAAnimationGroup *animationGroup = [CAAnimationGroup animation]; 22 | animationGroup.animations = @[scaleAnimation,rotationAnimation]; 23 | animationGroup.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; 24 | animationGroup.duration = duration; 25 | animationGroup.repeatCount = HUGE; 26 | animationGroup.removedOnCompletion = NO; 27 | CALayer *circleLayer = [self customThirdOfFourLayer:size color:color]; 28 | circleLayer.frame = CGRectMake((layer.bounds.size.width - size.width) / 2, (layer.bounds.size.height - size.height) / 2, size.width, size.height); 29 | [circleLayer addAnimation:animationGroup forKey:@"animation"]; 30 | [layer addSublayer:circleLayer]; 31 | } 32 | @end 33 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWAnimation/LWAnimation/LWAnimationViewBallClipRotateMultiple.h: -------------------------------------------------------------------------------- 1 | // 2 | // WLAnimationViewBallClipRotateMultiple.h 3 | // AnimationDemo 4 | // 5 | // Created by weil on 2018/3/29. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWAnimationStyleBase.h" 10 | //内圆外环动画 11 | @interface LWAnimationViewBallClipRotateMultiple : LWAnimationStyleBase 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWAnimation/LWAnimation/LWAnimationViewBallClipRotatePulse.h: -------------------------------------------------------------------------------- 1 | // 2 | // WLAnimationViewBallClipRotatePulse.h 3 | // AnimationDemo 4 | // 5 | // Created by weil on 2018/3/29. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWAnimationStyleBase.h" 10 | //双圆环动画 11 | @interface LWAnimationViewBallClipRotatePulse : LWAnimationStyleBase 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWAnimation/LWAnimation/LWAnimationViewBallGridBeat.h: -------------------------------------------------------------------------------- 1 | // 2 | // WLAnimationViewBallGridBeat.h 3 | // AnimationDemo 4 | // 5 | // Created by weil on 2018/3/29. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWAnimationStyleBase.h" 10 | //九宫格渐变效果 11 | @interface LWAnimationViewBallGridBeat : LWAnimationStyleBase 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWAnimation/LWAnimation/LWAnimationViewBallGridBeat.m: -------------------------------------------------------------------------------- 1 | // 2 | // WLAnimationViewBallGridBeat.m 3 | // AnimationDemo 4 | // 5 | // Created by weil on 2018/3/29. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWAnimationViewBallGridBeat.h" 10 | 11 | @implementation LWAnimationViewBallGridBeat 12 | + (void)setupAnimation:(CALayer *)layer size:(CGSize)size color:(UIColor *)color { 13 | CGFloat circleSpacing = 2.0; 14 | CGFloat circleSize = (size.width - circleSpacing * 2) / 3; 15 | CGFloat x = (layer.bounds.size.width - size.width) /2; 16 | CGFloat y = (layer.bounds.size.height - size.height) / 2; 17 | NSArray *durations = @[@0.96, @0.93, @1.19, @1.13, @1.34, @0.94, @1.2, @0.82, @1.19]; 18 | CFTimeInterval beginTime = CACurrentMediaTime(); 19 | NSArray *beginTimes = @[@0.36, @0.4, @0.68, @0.41, @0.71, @(-0.15), @(-0.12), @0.01, @0.32]; 20 | CAMediaTimingFunction *timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]; 21 | CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"opacity"]; 22 | animation.keyTimes = @[@0,@0.5,@1]; 23 | animation.timingFunctions = @[timingFunction,timingFunction]; 24 | animation.values = @[@1,@0.7,@1]; 25 | animation.repeatCount = HUGE; 26 | animation.removedOnCompletion = NO; 27 | for (int i = 0; i < 3; i++) { 28 | for (int j = 0; j < 3; j++) { 29 | CALayer *circleLayer = [self customCircleLayerWith:CGSizeMake(circleSize, circleSize) color:color]; 30 | circleLayer.frame = CGRectMake(x + circleSize * j+ circleSpacing * j, y + circleSize * i + circleSpacing * i, circleSize, circleSize); 31 | animation.duration = [durations[3 * i + j] doubleValue]; 32 | animation.beginTime = beginTime + [beginTimes[3 * i + j] doubleValue]; 33 | [circleLayer addAnimation:animation forKey:@"animation"]; 34 | [layer addSublayer:circleLayer]; 35 | } 36 | } 37 | } 38 | @end 39 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWAnimation/LWAnimation/LWAnimationViewBallGridPulse.h: -------------------------------------------------------------------------------- 1 | // 2 | // WLAnimationViewBallGridPulse.h 3 | // AnimationDemo 4 | // 5 | // Created by weil on 2018/3/29. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWAnimationStyleBase.h" 10 | //九宫格无规律跳动 11 | @interface LWAnimationViewBallGridPulse : LWAnimationStyleBase 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWAnimation/LWAnimation/LWAnimationViewBallPulse.h: -------------------------------------------------------------------------------- 1 | // 2 | // WLAnimationViewBallPulse.h 3 | // AnimationDemo 4 | // 5 | // Created by weil on 2018/3/29. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWAnimationStyleBase.h" 10 | //圆形尺寸渐变动画 11 | @interface LWAnimationViewBallPulse : LWAnimationStyleBase 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWAnimation/LWAnimation/LWAnimationViewBallPulse.m: -------------------------------------------------------------------------------- 1 | // 2 | // WLAnimationViewBallPulse.m 3 | // AnimationDemo 4 | // 5 | // Created by weil on 2018/3/29. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWAnimationViewBallPulse.h" 10 | 11 | @implementation LWAnimationViewBallPulse 12 | + (void)setupAnimation:(CALayer *)layer size:(CGSize)size color:(UIColor *)color { 13 | CGFloat circleSpacing = 2; 14 | CGFloat circleSize = (size.width - 2 * circleSpacing) / 3; 15 | CGFloat x = (layer.bounds.size.width - size.width) / 2; 16 | CGFloat y = (layer.bounds.size.height - size.height) / 2; 17 | CFTimeInterval duration = 0.75; 18 | CFTimeInterval beginTime = CACurrentMediaTime(); 19 | NSArray *beginTimes = @[@0.12,@0.24,@0.36]; 20 | CAMediaTimingFunction *timingFunction = [CAMediaTimingFunction functionWithControlPoints:0.2 :0.68 :0.18 :1.08]; 21 | CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"transform.scale"]; 22 | animation.keyTimes = @[@0,@0.3,@1]; 23 | animation.timingFunctions = @[timingFunction,timingFunction]; 24 | animation.values = @[@1,@0.3,@1]; 25 | animation.duration = duration; 26 | animation.repeatCount = HUGE; 27 | animation.removedOnCompletion = NO; 28 | for (int i = 0; i < 3; i++) { 29 | CALayer *circleLayer = [self customCircleLayerWith:CGSizeMake(circleSize, circleSize) color:color]; 30 | circleLayer.frame = CGRectMake(x + circleSize * i + circleSpacing * i, y, circleSize, circleSize); 31 | animation.beginTime = beginTime + [beginTimes[i] doubleValue]; 32 | [circleLayer addAnimation:animation forKey:@"animation"]; 33 | [layer addSublayer:circleLayer]; 34 | } 35 | } 36 | @end 37 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWAnimation/LWAnimation/LWAnimationViewBallPulseRise.h: -------------------------------------------------------------------------------- 1 | // 2 | // WLAnimationViewBallPulseRise.h 3 | // AnimationDemo 4 | // 5 | // Created by weil on 2018/3/29. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWAnimationStyleBase.h" 10 | //小球翻转动画 11 | @interface LWAnimationViewBallPulseRise : LWAnimationStyleBase 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWAnimation/LWAnimation/LWAnimationViewBallPulseSyn.h: -------------------------------------------------------------------------------- 1 | // 2 | // WLAnimationViewBallPulseSyn.h 3 | // AnimationDemo 4 | // 5 | // Created by weil on 2018/3/29. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWAnimationStyleBase.h" 10 | //类似弹簧抖动效果 11 | @interface LWAnimationViewBallPulseSyn : LWAnimationStyleBase 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWAnimation/LWAnimation/LWAnimationViewBallPulseSyn.m: -------------------------------------------------------------------------------- 1 | // 2 | // WLAnimationViewBallPulseSyn.m 3 | // AnimationDemo 4 | // 5 | // Created by weil on 2018/3/29. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWAnimationViewBallPulseSyn.h" 10 | 11 | @implementation LWAnimationViewBallPulseSyn 12 | + (void)setupAnimation:(CALayer *)layer size:(CGSize)size color:(UIColor *)color { 13 | CGFloat circleSpacing = 2; 14 | CGFloat circleSize = (size.width - 2 * circleSpacing) / 3; 15 | CGFloat x = (layer.bounds.size.width - size.width) / 2; 16 | CGFloat y = (layer.bounds.size.width - circleSize) / 2; 17 | CGFloat deltaY = (size.height / 2 - circleSize/2) / 2; 18 | CFTimeInterval duration = 0.6; 19 | CFTimeInterval beginTime = CACurrentMediaTime(); 20 | NSArray *beginTimes = @[@0.07,@0.14,@0.21]; 21 | CAMediaTimingFunction *timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 22 | CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"transform.translation.y"]; 23 | animation.keyTimes = @[@0,@0.33,@0.66,@1]; 24 | animation.timingFunctions = @[timingFunction,timingFunction,timingFunction]; 25 | animation.duration = duration; 26 | animation.values = @[@0,@(deltaY),@(-deltaY),@0]; 27 | animation.repeatCount = HUGE; 28 | animation.removedOnCompletion = NO; 29 | for (int i = 0; i < 3; i++) { 30 | CALayer *circleLayer = [self customCircleLayerWith:CGSizeMake(circleSize, circleSize) color:color]; 31 | circleLayer.frame = CGRectMake(x + circleSize * i + circleSpacing * i, y, circleSize, circleSize); 32 | animation.beginTime = beginTime + [beginTimes[i] doubleValue]; 33 | [circleLayer addAnimation:animation forKey:@"animation"]; 34 | [layer addSublayer:circleLayer]; 35 | } 36 | } 37 | @end 38 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWAnimation/LWAnimation/LWAnimationViewBallRotate.h: -------------------------------------------------------------------------------- 1 | // 2 | // WLAnimationViewBallRotate.h 3 | // AnimationDemo 4 | // 5 | // Created by weil on 2018/3/29. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWAnimationStyleBase.h" 10 | //小球围绕中心旋转 11 | @interface LWAnimationViewBallRotate : LWAnimationStyleBase 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWAnimation/LWAnimation/LWAnimationViewBallRotateChase.h: -------------------------------------------------------------------------------- 1 | // 2 | // WLAnimationViewBallRotateChase.h 3 | // AnimationDemo 4 | // 5 | // Created by weil on 2018/3/30. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWAnimationStyleBase.h" 10 | //小球呈环状动画 11 | @interface LWAnimationViewBallRotateChase : LWAnimationStyleBase 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWAnimation/LWAnimation/LWAnimationViewBallSaleMultiple.h: -------------------------------------------------------------------------------- 1 | // 2 | // WLAnimationViewBallSaleMultiple.h 3 | // AnimationDemo 4 | // 5 | // Created by weil on 2018/3/30. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWAnimationStyleBase.h" 10 | //波纹由圆心散开的涟漪效果 11 | @interface LWAnimationViewBallSaleMultiple : LWAnimationStyleBase 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWAnimation/LWAnimation/LWAnimationViewBallSaleMultiple.m: -------------------------------------------------------------------------------- 1 | // 2 | // WLAnimationViewBallSaleMultiple.m 3 | // AnimationDemo 4 | // 5 | // Created by weil on 2018/3/30. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWAnimationViewBallSaleMultiple.h" 10 | 11 | @implementation LWAnimationViewBallSaleMultiple 12 | + (void)setupAnimation:(CALayer *)layer size:(CGSize)size color:(UIColor *)color { 13 | CFTimeInterval duration = 1.5; 14 | CFTimeInterval beginTime = CACurrentMediaTime(); 15 | NSArray *beginTimes = @[@0,@0.2,@0.4]; 16 | 17 | CABasicAnimation *scaleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"]; 18 | scaleAnimation.duration = duration; 19 | scaleAnimation.fromValue = @0; 20 | scaleAnimation.toValue = @1; 21 | 22 | CAKeyframeAnimation *opacityAnimation = [CAKeyframeAnimation animationWithKeyPath:@"opacity"]; 23 | opacityAnimation.duration = duration; 24 | opacityAnimation.keyTimes = @[@0,@0.05,@1]; 25 | opacityAnimation.values = @[@0,@1,@0]; 26 | 27 | CAAnimationGroup *animationGroup =[CAAnimationGroup animation]; 28 | animationGroup.animations = @[scaleAnimation,opacityAnimation]; 29 | animationGroup.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; 30 | animationGroup.duration = duration; 31 | animationGroup.repeatCount = HUGE; 32 | animationGroup.removedOnCompletion = NO; 33 | 34 | for (int i = 0; i < 3; i++) { 35 | CALayer *circleLayer = [self customCircleLayerWith:size color:color]; 36 | circleLayer.frame = CGRectMake((layer.bounds.size.width - size.width) / 2, (layer.bounds.size.height - size.height) / 2, size.width, size.height); 37 | animationGroup.beginTime = beginTime + [beginTimes[i] doubleValue]; 38 | circleLayer.opacity = 0; 39 | [circleLayer addAnimation:animationGroup forKey:@"animation"]; 40 | [layer addSublayer:circleLayer]; 41 | } 42 | } 43 | @end 44 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWAnimation/LWAnimation/LWAnimationViewBallScale.h: -------------------------------------------------------------------------------- 1 | // 2 | // WLAnimationViewBallScale.h 3 | // AnimationDemo 4 | // 5 | // Created by weil on 2018/3/30. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWAnimationStyleBase.h" 10 | //圆形scale和opacity动画 11 | @interface LWAnimationViewBallScale : LWAnimationStyleBase 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWAnimation/LWAnimation/LWAnimationViewBallScale.m: -------------------------------------------------------------------------------- 1 | // 2 | // WLAnimationViewBallScale.m 3 | // AnimationDemo 4 | // 5 | // Created by weil on 2018/3/30. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWAnimationViewBallScale.h" 10 | 11 | @implementation LWAnimationViewBallScale 12 | + (void)setupAnimation:(CALayer *)layer size:(CGSize)size color:(UIColor *)color { 13 | CFTimeInterval duration = 1; 14 | CABasicAnimation *scaleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"]; 15 | scaleAnimation.duration = duration; 16 | scaleAnimation.fromValue = @0; 17 | scaleAnimation.toValue = @1; 18 | 19 | CABasicAnimation *opacityAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"]; 20 | opacityAnimation.duration = duration; 21 | opacityAnimation.fromValue = @1; 22 | opacityAnimation.toValue = @0; 23 | 24 | CAAnimationGroup *animationGroup = [CAAnimationGroup animation]; 25 | animationGroup.animations = @[scaleAnimation,opacityAnimation]; 26 | animationGroup.duration = duration; 27 | animationGroup.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 28 | animationGroup.repeatCount = HUGE; 29 | animationGroup.removedOnCompletion = NO; 30 | 31 | CALayer *circleLayer = [self customCircleLayerWith:size color:color]; 32 | circleLayer.frame = CGRectMake((layer.bounds.size.width - size.width)/ 2, (layer.bounds.size.height - size.height) / 2, size.width, size.height); 33 | [circleLayer addAnimation:animationGroup forKey:@"animation"]; 34 | [layer addSublayer:circleLayer]; 35 | } 36 | @end 37 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWAnimation/LWAnimation/LWAnimationViewBallScaleRipple.h: -------------------------------------------------------------------------------- 1 | // 2 | // WLAnimationViewBallScaleRipple.h 3 | // AnimationDemo 4 | // 5 | // Created by weil on 2018/3/30. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWAnimationStyleBase.h" 10 | 11 | @interface LWAnimationViewBallScaleRipple : LWAnimationStyleBase 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWAnimation/LWAnimation/LWAnimationViewBallScaleRipple.m: -------------------------------------------------------------------------------- 1 | // 2 | // WLAnimationViewBallScaleRipple.m 3 | // AnimationDemo 4 | // 5 | // Created by weil on 2018/3/30. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWAnimationViewBallScaleRipple.h" 10 | 11 | @implementation LWAnimationViewBallScaleRipple 12 | + (void)setupAnimation:(CALayer *)layer size:(CGSize)size color:(UIColor *)color { 13 | CFTimeInterval duration = 1.0; 14 | CAMediaTimingFunction *timingFunction = [CAMediaTimingFunction functionWithControlPoints:0.21 :0.53 :0.56 :0.8]; 15 | 16 | CAKeyframeAnimation *scaleAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform.scale"]; 17 | scaleAnimation.duration = duration; 18 | scaleAnimation.keyTimes = @[@0,@0.7]; 19 | scaleAnimation.timingFunction = timingFunction; 20 | scaleAnimation.values = @[@0,@0.7,@1]; 21 | 22 | CAKeyframeAnimation *opacityAnimation = [CAKeyframeAnimation animationWithKeyPath:@"opacity"]; 23 | opacityAnimation.duration = duration; 24 | opacityAnimation.keyTimes = @[@0,@0.7,@1]; 25 | opacityAnimation.timingFunctions = @[timingFunction,timingFunction]; 26 | opacityAnimation.values = @[@1,@0.7,@0]; 27 | 28 | CAAnimationGroup *animationGroup = [CAAnimationGroup animation]; 29 | animationGroup.animations = @[scaleAnimation,opacityAnimation]; 30 | animationGroup.duration = duration; 31 | animationGroup.repeatCount = HUGE; 32 | animationGroup.removedOnCompletion = NO; 33 | 34 | CALayer *circleLayer = [self customCircleLayerWith:size color:color]; 35 | circleLayer.frame = CGRectMake((layer.bounds.size.width - size.width) / 2, (layer.bounds.size.height - size.height) / 2, size.width, size.height); 36 | [circleLayer addAnimation:animationGroup forKey:@"animation"]; 37 | [layer addSublayer:circleLayer]; 38 | } 39 | @end 40 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWAnimation/LWAnimation/LWAnimationViewBallScaleRippleMultiple.h: -------------------------------------------------------------------------------- 1 | // 2 | // WLAnimationViewBallScaleRippleMultiple.h 3 | // AnimationDemo 4 | // 5 | // Created by weil on 2018/3/30. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWAnimationStyleBase.h" 10 | 11 | @interface LWAnimationViewBallScaleRippleMultiple : LWAnimationStyleBase 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWAnimation/LWAnimation/LWAnimationViewBallSpinFadeLoad.h: -------------------------------------------------------------------------------- 1 | // 2 | // WLAnimationViewBallSpinFadeLoad.h 3 | // AnimationDemo 4 | // 5 | // Created by weil on 2018/3/30. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWAnimationStyleBase.h" 10 | 11 | @interface LWAnimationViewBallSpinFadeLoad : LWAnimationStyleBase 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWAnimation/LWAnimation/LWAnimationViewLineAudioEqualizer.h: -------------------------------------------------------------------------------- 1 | // 2 | // WLAnimationViewLineAudioEqualizer.h 3 | // AnimationDemo 4 | // 5 | // Created by weil on 2018/3/28. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWAnimationStyleBase.h" 10 | //收音机音频动画 11 | @interface LWAnimationViewLineAudioEqualizer : LWAnimationStyleBase 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWAnimation/LWAnimation/LWAnimationViewLineAudioEqualizer.m: -------------------------------------------------------------------------------- 1 | // 2 | // WLAnimationViewLineAudioEqualizer.m 3 | // AnimationDemo 4 | // 5 | // Created by weil on 2018/3/28. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWAnimationViewLineAudioEqualizer.h" 10 | 11 | @implementation LWAnimationViewLineAudioEqualizer 12 | + (void)setupAnimation:(CALayer *)layer size:(CGSize)size color:(UIColor *)color { 13 | CGFloat lineSize = size.width / 9; 14 | CGFloat x = (layer.bounds.size.width - lineSize * 7) / 2; 15 | CGFloat y = (layer.bounds.size.height - size.height) / 2; 16 | NSArray *durations = @[@4.3,@2.5,@3.0,@5.0]; 17 | NSArray *values = @[@0,@0.7,@0.4,@0.05,@0.95,@0.4,@0.15,@0.18,@0.5,@0.1]; 18 | NSMutableArray *pathArr = @[].mutableCopy; 19 | for (int i = 0; i < 4; i++) { 20 | CAKeyframeAnimation *animation = [CAKeyframeAnimation animation]; 21 | animation.keyPath = @"path"; 22 | animation.additive = YES; 23 | for (int j = 0; j < values.count; j++) { 24 | CGFloat heightFactor = [values[j] floatValue]; 25 | CGFloat height = size.height * heightFactor; 26 | CGPoint point = CGPointMake(0, size.height - height); 27 | UIBezierPath *path = [UIBezierPath bezierPathWithRect:CGRectMake(point.x, point.y, lineSize, height)]; 28 | [pathArr addObject:(id)path.CGPath]; 29 | } 30 | animation.values = pathArr; 31 | animation.duration = [durations[i] doubleValue]; 32 | animation.repeatCount = HUGE; 33 | animation.removedOnCompletion = NO; 34 | CALayer *lineLayer = [self customLineLayerWith:CGSizeMake(lineSize, size.height) color:color]; 35 | CGRect frame = CGRectMake(x + lineSize * 2 * i, y, lineSize, size.height); 36 | lineLayer.frame = frame; 37 | [lineLayer addAnimation:animation forKey:@"animation"]; 38 | [layer addSublayer:lineLayer]; 39 | } 40 | } 41 | @end 42 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWAnimation/LWAnimation/LWAnimationViewLinePulseOut.h: -------------------------------------------------------------------------------- 1 | // 2 | // WLAnimationViewLinePulseOut.h 3 | // AnimationDemo 4 | // 5 | // Created by weil on 2018/3/28. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWAnimationStyleBase.h" 10 | //脉冲动画 11 | @interface LWAnimationViewLinePulseOut : LWAnimationStyleBase 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWAnimation/LWAnimation/LWAnimationViewLinePulseOut.m: -------------------------------------------------------------------------------- 1 | // 2 | // WLAnimationViewLinePulseOut.m 3 | // AnimationDemo 4 | // 5 | // Created by weil on 2018/3/28. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWAnimationViewLinePulseOut.h" 10 | 11 | @implementation LWAnimationViewLinePulseOut 12 | + (void)setupAnimation:(CALayer *)layer size:(CGSize)size color:(UIColor *)color { 13 | CGFloat lineSize = size.width / 9; 14 | CGFloat x = (layer.bounds.size.width - size.width) / 2; 15 | CGFloat y = (layer.bounds.size.height - size.height) / 2; 16 | CFTimeInterval duration = 1; 17 | CFTimeInterval beginTime = CACurrentMediaTime(); 18 | NSArray *beginTimes = @[@0.4,@0.2,@0,@0.2,@0.4]; 19 | CAMediaTimingFunction *timeFunction = [CAMediaTimingFunction functionWithControlPoints:0.85 :0.25 :0.37 :0.85]; 20 | CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"transform.scale.y"]; 21 | animation.keyTimes = @[@0,@0.5,@1]; 22 | animation.timingFunctions = @[timeFunction,timeFunction]; 23 | animation.values = @[@1,@0.4,@1]; 24 | animation.duration = duration; 25 | animation.repeatCount = HUGE; 26 | animation.removedOnCompletion = NO; 27 | for (int i = 0; i < 5; i++) { 28 | CALayer *lineLayer = [self customLineLayerWith:CGSizeMake(lineSize, size.height) color:color]; 29 | CGRect frame = CGRectMake(x + lineSize * 2 * i, y, lineSize, size.height); 30 | animation.beginTime = beginTime + [beginTimes[i] doubleValue]; 31 | lineLayer.frame = frame; 32 | [lineLayer addAnimation:animation forKey:@"animation"]; 33 | [layer addSublayer:lineLayer]; 34 | } 35 | } 36 | @end 37 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWAnimation/LWAnimation/LWAnimationViewLineScale.h: -------------------------------------------------------------------------------- 1 | // 2 | // WLAnimationViewLineScale.h 3 | // AnimationDemo 4 | // 5 | // Created by weil on 2018/3/28. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWAnimationStyleBase.h" 10 | //波浪线性动画 11 | @interface LWAnimationViewLineScale : LWAnimationStyleBase 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWAnimation/LWAnimation/LWAnimationViewLineScale.m: -------------------------------------------------------------------------------- 1 | // 2 | // WLAnimationViewLineScale.m 3 | // AnimationDemo 4 | // 5 | // Created by weil on 2018/3/28. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWAnimationViewLineScale.h" 10 | 11 | @implementation LWAnimationViewLineScale 12 | + (void)setupAnimation:(CALayer *)layer size:(CGSize)size color:(UIColor *)color { 13 | CGFloat lineSize = size.width / 9; 14 | CGFloat x = (layer.bounds.size.width - size.width) / 2; 15 | CGFloat y = (layer.bounds.size.height - size.height) / 2; 16 | CFTimeInterval duration = 1; 17 | CFTimeInterval beginTime = CACurrentMediaTime(); 18 | NSArray *beginTimes = @[@0.1,@0.2,@0.3,@0.4,@0.5]; 19 | CAMediaTimingFunction *timingFunction = [CAMediaTimingFunction functionWithControlPoints:0.2 :0.68 :0.18 :1.08]; 20 | CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"transform.scale.y"]; 21 | animation.keyTimes = @[@0,@0.5,@1]; 22 | animation.timingFunctions = @[timingFunction,timingFunction]; 23 | animation.values = @[@1,@0.4,@1]; 24 | animation.duration = duration; 25 | animation.repeatCount = HUGE; 26 | animation.removedOnCompletion = NO; 27 | for (int i = 0; i < 5; i++) { 28 | CALayer *lineLayer = [self customLineLayerWith:CGSizeMake(lineSize, size.height) color:color]; 29 | CGRect frame = CGRectMake(x + lineSize * 2 * i, y, lineSize, size.height); 30 | animation.beginTime = beginTime + [beginTimes[i] doubleValue]; 31 | lineLayer.frame = frame; 32 | [lineLayer addAnimation:animation forKey:@"animation"]; 33 | [layer addSublayer:lineLayer]; 34 | } 35 | } 36 | 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWAnimation/LWAnimation/LWAnimationViewLineScaleParty.h: -------------------------------------------------------------------------------- 1 | // 2 | // WLAnimationViewLineScaleParty.h 3 | // AnimationDemo 4 | // 5 | // Created by weil on 2018/3/28. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWAnimationStyleBase.h" 10 | //长度,宽度同时线性动画 11 | @interface LWAnimationViewLineScaleParty : LWAnimationStyleBase 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWAnimation/LWAnimation/LWAnimationViewLineScaleParty.m: -------------------------------------------------------------------------------- 1 | // 2 | // WLAnimationViewLineScaleParty.m 3 | // AnimationDemo 4 | // 5 | // Created by weil on 2018/3/28. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWAnimationViewLineScaleParty.h" 10 | 11 | @implementation LWAnimationViewLineScaleParty 12 | + (void)setupAnimation:(CALayer *)layer size:(CGSize)size color:(UIColor *)color { 13 | CGFloat lineSize = size.width / 7; 14 | CGFloat x = (layer.bounds.size.width - size.width) / 2; 15 | CGFloat y = (layer.bounds.size.height - size.height) / 2; 16 | NSArray *durations = @[@1.26,@0.43,@1.01,@0.73]; 17 | CFTimeInterval beginTime = CACurrentMediaTime(); 18 | NSArray *beginTimes = @[@0.77,@0.29,@0.28,@0.74]; 19 | CAMediaTimingFunction *timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]; 20 | CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"transform.scale"]; 21 | animation.keyTimes = @[@0,@0.5,@1]; 22 | animation.timingFunctions = @[timingFunction,timingFunction]; 23 | animation.values = @[@1,@0.5,@1]; 24 | animation.repeatCount = HUGE; 25 | animation.removedOnCompletion = NO; 26 | for (int i = 0; i < 4; i++) { 27 | CALayer *lineLayer = [self customLineLayerWith:CGSizeMake(lineSize, size.height) color:color]; 28 | CGRect frame = CGRectMake(x + lineSize * 2 * i, y, lineSize, size.height); 29 | animation.beginTime = beginTime + [beginTimes[i] doubleValue]; 30 | animation.duration = [durations[i] doubleValue]; 31 | lineLayer.frame = frame; 32 | [lineLayer addAnimation:animation forKey:@"animation"]; 33 | [layer addSublayer:lineLayer]; 34 | } 35 | 36 | } 37 | @end 38 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWPhotoBrowser/Classes/LWPhotoBroswer/Controller/LWPhotoBrowserController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LWPhotoBrowserController.h 3 | // TransitionDemo 4 | // 5 | // Created by weil on 2018/5/7. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "LWPhotoBrowserInteractiveTransition.h" 11 | 12 | @class LWPhotoModel; 13 | @interface LWPhotoBrowserController : UIViewController 14 | @property (nonatomic,strong) LWPhotoBrowserInteractiveTransition *animatedTransition; 15 | @property (nonatomic,strong) NSArray *photosArray; 16 | @end 17 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWPhotoBrowser/Classes/LWPhotoBroswer/LWPhotoBrowser.h: -------------------------------------------------------------------------------- 1 | // 2 | // WLPhotoBrowser.h 3 | // TransitionDemo 4 | // 5 | // Created by weil on 2018/5/7. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #ifndef WLPhotoBrowser_h 10 | #define WLPhotoBrowser_h 11 | 12 | #import "LWPhotoBrowserController.h" 13 | #import "LWPhotoBrowserTransition.h" 14 | #import "LWPhotoModel.h" 15 | #import "LWPhotoBrowserInteractiveTransition.h" 16 | 17 | 18 | #endif /* WLPhotoBrowser_h */ 19 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWPhotoBrowser/Classes/LWPhotoBroswer/Model/LWPhotoModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // LWPhotoModel.h 3 | // TransitionDemo 4 | // 5 | // Created by weil on 2018/5/7. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface LWPhotoModel : NSObject 13 | @property (nonatomic,copy) NSString *image_url; 14 | @property (nonatomic,copy) NSString *image_thumb_url; 15 | @property (nonatomic,strong) UIImage *image; 16 | @end 17 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWPhotoBrowser/Classes/LWPhotoBroswer/Model/LWPhotoModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // LWPhotoModel.m 3 | // TransitionDemo 4 | // 5 | // Created by weil on 2018/5/7. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWPhotoModel.h" 10 | 11 | @implementation LWPhotoModel 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWPhotoBrowser/Classes/LWPhotoBroswer/Transition/LWPhotoBrowserDrivenInteractive.h: -------------------------------------------------------------------------------- 1 | // 2 | // LWPhotoBrowserDrivenInteractive.h 3 | // TransitionDemo 4 | // 5 | // Created by weil on 2018/5/7. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class LWPhotoBrowserTransition; 12 | @interface LWPhotoBrowserDrivenInteractive : UIPercentDrivenInteractiveTransition 13 | - (instancetype)initWithTransition:(LWPhotoBrowserTransition *)transition; 14 | @end 15 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWPhotoBrowser/Classes/LWPhotoBroswer/Transition/LWPhotoBrowserInteractiveTransition.h: -------------------------------------------------------------------------------- 1 | // 2 | // LWPhotoBrowserInteractiveTransition.h 3 | // TransitionDemo 4 | // 5 | // Created by weil on 2018/5/7. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "LWPhotoBrowserTransition.h" 11 | @interface LWPhotoBrowserInteractiveTransition : NSObject 12 | @property (nonatomic,strong) LWPhotoBrowserTransition *photoBrowserTransition; 13 | @end 14 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWPhotoBrowser/Classes/LWPhotoBroswer/Transition/LWPhotoBrowserPopTransition.h: -------------------------------------------------------------------------------- 1 | // 2 | // LWPhotoBrowserPopTransition.h 3 | // TransitionDemo 4 | // 5 | // Created by weil on 2018/5/7. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @class LWPhotoBrowserTransition; 13 | @interface LWPhotoBrowserPopTransition : NSObject 14 | @property (nonatomic,strong) LWPhotoBrowserTransition *photoBrowserTransition; 15 | @end 16 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWPhotoBrowser/Classes/LWPhotoBroswer/Transition/LWPhotoBrowserPushTransition.h: -------------------------------------------------------------------------------- 1 | // 2 | // LWPhotoBrowserPushTransition.h 3 | // TransitionDemo 4 | // 5 | // Created by weil on 2018/5/7. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @class LWPhotoBrowserTransition; 13 | @interface LWPhotoBrowserPushTransition : NSObject 14 | @property (nonatomic,strong) LWPhotoBrowserTransition *photoBrowserTransition; 15 | @end 16 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWPhotoBrowser/Classes/LWPhotoBroswer/Transition/LWPhotoBrowserTransition.h: -------------------------------------------------------------------------------- 1 | // 2 | // LWPhotoBrowserTransition.h 3 | // TransitionDemo 4 | // 5 | // Created by weil on 2018/5/7. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | #define LW_SCREENWIDTH ([UIScreen mainScreen].bounds.size.width) 13 | #define LW_SCREENHEIGHT ([UIScreen mainScreen].bounds.size.height) 14 | 15 | @interface LWPhotoBrowserTransition : NSObject 16 | 17 | /** 转场过渡所需要的图片,分为两种,进入图片浏览和退出图片浏览的时候都需要传值,进入的时候是原图,退出的时候是浏览后的图 **/ 18 | @property (nonatomic,strong) UIImage *transitionImage; 19 | /**浏览图片的下标 **/ 20 | @property (nonatomic,assign) NSInteger transitionImageIndex; 21 | /** 进入图片浏览器所需要传的值,标识一组图片的原始位置,方便退出的时候定位**/ 22 | @property (nonatomic,strong) NSArray *sourceImagesFrames; 23 | /** 退出图片浏览时候的滑动手势 **/ 24 | @property (nonatomic,strong) UIPanGestureRecognizer *panGestureRecognizer; 25 | /** 退出时,当前滑动对应图片的frame **/ 26 | @property (nonatomic,assign) CGRect currentPanGesImageFrame; 27 | /** 通过下标计算出来的图片的frame,这个主要是为定位和动画做准备 **/ 28 | @property (nonatomic,assign,readonly) CGRect sourImageFrame; 29 | /** 通过下标计算的在浏览器中显示的图片的frame **/ 30 | @property (nonatomic,assign,readonly) CGRect destImageFrame; 31 | /** 是否开启弹簧效果 **/ 32 | @property (nonatomic,assign,getter=isOpenSpring) BOOL openSpring; 33 | /** 动画时长 **/ 34 | @property (nonatomic,assign) CGFloat duration; 35 | @end 36 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWPhotoBrowser/Classes/LWPhotoBroswer/Transition/LWPhotoBrowserTransition.m: -------------------------------------------------------------------------------- 1 | // 2 | // LWPhotoBrowserTransition.m 3 | // TransitionDemo 4 | // 5 | // Created by weil on 2018/5/7. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import "LWPhotoBrowserTransition.h" 10 | 11 | @implementation LWPhotoBrowserTransition 12 | 13 | - (instancetype)init { 14 | self = [super init]; 15 | if (self) { 16 | _duration = 0.5; 17 | _openSpring = YES; 18 | } 19 | return self; 20 | } 21 | 22 | //返回imageView在window上全屏显示时的frame 23 | - (CGRect)backScreenImageViewRectWithImage:(UIImage *)image{ 24 | 25 | CGSize size = image.size; 26 | CGSize newSize; 27 | if (size.width > LW_SCREENWIDTH) { 28 | newSize.width = LW_SCREENWIDTH; 29 | }else { 30 | newSize.width = size.width; 31 | } 32 | newSize.height = newSize.width / size.width * size.height; 33 | CGFloat imageY = (LW_SCREENHEIGHT - newSize.height) * 0.5; 34 | CGFloat imageX = (LW_SCREENWIDTH - newSize.width) * 0.5; 35 | if (imageX < 0) { 36 | imageX = 0; 37 | } 38 | if (imageY < 0) { 39 | imageY = 0; 40 | } 41 | CGRect rect = CGRectMake(0, imageY, newSize.width, newSize.height); 42 | 43 | return rect; 44 | } 45 | 46 | - (void)setTransitionImage:(UIImage *)transitionImage { 47 | _transitionImage = transitionImage; 48 | _destImageFrame = [self backScreenImageViewRectWithImage:transitionImage]; 49 | } 50 | - (void)setTransitionImageIndex:(NSInteger)transitionImageIndex { 51 | _transitionImageIndex = transitionImageIndex; 52 | _sourImageFrame = [_sourceImagesFrames[transitionImageIndex] CGRectValue]; 53 | } 54 | 55 | @end 56 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWPhotoBrowser/Classes/LWPhotoBroswer/View/LWPhotoViewCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // LWPhotoViewCell.h 3 | // TransitionDemo 4 | // 5 | // Created by weil on 2018/5/7. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "LWPhotoZoomView.h" 11 | #import "LWPhotoModel.h" 12 | 13 | @protocol LWPhotoViewCellDelegate 14 | @optional 15 | - (void)didClickImageView:(NSInteger)index; 16 | @end 17 | 18 | @interface LWPhotoViewCell : UICollectionViewCell 19 | @property (nonatomic,weak) id delegate; 20 | @property (nonatomic,assign) NSInteger index; 21 | @property (nonatomic,strong) LWPhotoZoomView *photoZoomView; 22 | - (void)updateCellWithModel:(LWPhotoModel *)model; 23 | @end 24 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWPhotoBrowser/Classes/LWPhotoBroswer/View/LWPhotoZoomView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LWPhotoZoomView.h 3 | // TransitionDemo 4 | // 5 | // Created by weil on 2018/5/7. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import 10 | #define LW_SCREENWIDTH ([UIScreen mainScreen].bounds.size.width) 11 | #define LW_SCREENHEIGHT ([UIScreen mainScreen].bounds.size.height) 12 | @interface LWPhotoZoomView : UIScrollView 13 | @property (nonatomic,strong) UIImageView *zoomImageView; 14 | @property (nonatomic,copy) void(^tapImageBlock)(void); 15 | - (void)adjustImageViewFrame; 16 | @end 17 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWPhotoBrowser/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Weil 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/LWPhotoBrowser/README.md: -------------------------------------------------------------------------------- 1 | # LWPhotoBrowser 2 | 类似微信图片相册浏览的功能,包含放缩,捏合和下拉退出等 3 | 调用方式 4 | ``` 5 | //封装参数对象 6 | LWPhotoBrowserTransition *transitionParameter = [[LWPhotoBrowserTransition alloc] init]; 7 | transitionParameter.transitionImage = cell.imageView.image; 8 | transitionParameter.sourceImagesFrames = [self firstImageViewFrames]; 9 | transitionParameter.transitionImageIndex = index; 10 | // transitionParameter.openSpring = NO; 11 | // transitionParameter.duration = 0.25; 12 | self.animatedTransition = nil; 13 | self.animatedTransition.photoBrowserTransition = transitionParameter; 14 | 15 | //传输必要参数 16 | LWPhotoBrowserController *pictVC = [[LWPhotoBrowserController alloc] init]; 17 | pictVC.photosArray = [self browseSouceModelItemArray]; 18 | pictVC.animatedTransition = self.animatedTransition; 19 | 20 | //设置代理 21 | pictVC.transitioningDelegate = self.animatedTransition; 22 | [self presentViewController:pictVC animated:YES completion:nil]; 23 | 24 | ``` 25 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/MJRefresh/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013-2015 MJRefresh (https://github.com/CoderMJLee/MJRefresh) 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/MJRefresh/MJRefresh/Base/MJRefreshAutoFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshAutoFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshFooter.h" 10 | 11 | @interface MJRefreshAutoFooter : MJRefreshFooter 12 | /** 是否自动刷新(默认为YES) */ 13 | @property (assign, nonatomic, getter=isAutomaticallyRefresh) BOOL automaticallyRefresh; 14 | 15 | /** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */ 16 | @property (assign, nonatomic) CGFloat appearencePercentTriggerAutoRefresh MJRefreshDeprecated("请使用triggerAutomaticallyRefreshPercent属性"); 17 | 18 | /** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */ 19 | @property (assign, nonatomic) CGFloat triggerAutomaticallyRefreshPercent; 20 | 21 | /** 是否每一次拖拽只发一次请求 */ 22 | @property (assign, nonatomic, getter=isOnlyRefreshPerDrag) BOOL onlyRefreshPerDrag; 23 | @end 24 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/MJRefresh/MJRefresh/Base/MJRefreshBackFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshBackFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshFooter.h" 10 | 11 | @interface MJRefreshBackFooter : MJRefreshFooter 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/MJRefresh/MJRefresh/Base/MJRefreshFooter.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // MJRefreshFooter.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 15/3/5. 7 | // Copyright (c) 2015年 小码哥. All rights reserved. 8 | // 上拉刷新控件 9 | 10 | #import "MJRefreshComponent.h" 11 | 12 | @interface MJRefreshFooter : MJRefreshComponent 13 | /** 创建footer */ 14 | + (instancetype)footerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock; 15 | /** 创建footer */ 16 | + (instancetype)footerWithRefreshingTarget:(id)target refreshingAction:(SEL)action; 17 | 18 | /** 提示没有更多的数据 */ 19 | - (void)endRefreshingWithNoMoreData; 20 | - (void)noticeNoMoreData MJRefreshDeprecated("使用endRefreshingWithNoMoreData"); 21 | 22 | /** 重置没有更多的数据(消除没有更多数据的状态) */ 23 | - (void)resetNoMoreData; 24 | 25 | /** 忽略多少scrollView的contentInset的bottom */ 26 | @property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetBottom; 27 | 28 | /** 自动根据有无数据来显示和隐藏(有数据就显示,没有数据隐藏。默认是NO) */ 29 | @property (assign, nonatomic, getter=isAutomaticallyHidden) BOOL automaticallyHidden MJRefreshDeprecated("不建议使用此属性,开发者请自行控制footer的显示和隐藏。基于安全考虑,在未来的某些版本此属性可能作废"); 30 | @end 31 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/MJRefresh/MJRefresh/Base/MJRefreshHeader.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // MJRefreshHeader.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 15/3/4. 7 | // Copyright (c) 2015年 小码哥. All rights reserved. 8 | // 下拉刷新控件:负责监控用户下拉的状态 9 | 10 | #import "MJRefreshComponent.h" 11 | 12 | @interface MJRefreshHeader : MJRefreshComponent 13 | /** 创建header */ 14 | + (instancetype)headerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock; 15 | /** 创建header */ 16 | + (instancetype)headerWithRefreshingTarget:(id)target refreshingAction:(SEL)action; 17 | 18 | /** 这个key用来存储上一次下拉刷新成功的时间 */ 19 | @property (copy, nonatomic) NSString *lastUpdatedTimeKey; 20 | /** 上一次下拉刷新成功的时间 */ 21 | @property (strong, nonatomic, readonly) NSDate *lastUpdatedTime; 22 | 23 | /** 忽略多少scrollView的contentInset的top */ 24 | @property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetTop; 25 | @end 26 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshAutoGifFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshAutoStateFooter.h" 10 | 11 | @interface MJRefreshAutoGifFooter : MJRefreshAutoStateFooter 12 | @property (weak, nonatomic, readonly) UIImageView *gifView; 13 | 14 | /** 设置state状态下的动画图片images 动画持续时间duration*/ 15 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state; 16 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state; 17 | @end 18 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshAutoNormalFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshAutoStateFooter.h" 10 | 11 | @interface MJRefreshAutoNormalFooter : MJRefreshAutoStateFooter 12 | /** 菊花的样式 */ 13 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle; 14 | @end 15 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshAutoStateFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/6/13. 6 | // Copyright © 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshAutoFooter.h" 10 | 11 | @interface MJRefreshAutoStateFooter : MJRefreshAutoFooter 12 | /** 文字距离圈圈、箭头的距离 */ 13 | @property (assign, nonatomic) CGFloat labelLeftInset; 14 | /** 显示刷新状态的label */ 15 | @property (weak, nonatomic, readonly) UILabel *stateLabel; 16 | 17 | /** 设置state状态下的文字 */ 18 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state; 19 | 20 | /** 隐藏刷新状态的文字 */ 21 | @property (assign, nonatomic, getter=isRefreshingTitleHidden) BOOL refreshingTitleHidden; 22 | @end 23 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshBackGifFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshBackStateFooter.h" 10 | 11 | @interface MJRefreshBackGifFooter : MJRefreshBackStateFooter 12 | @property (weak, nonatomic, readonly) UIImageView *gifView; 13 | 14 | /** 设置state状态下的动画图片images 动画持续时间duration*/ 15 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state; 16 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state; 17 | @end 18 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshBackNormalFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshBackStateFooter.h" 10 | 11 | @interface MJRefreshBackNormalFooter : MJRefreshBackStateFooter 12 | @property (weak, nonatomic, readonly) UIImageView *arrowView; 13 | /** 菊花的样式 */ 14 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle; 15 | @end 16 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshBackStateFooter.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/6/13. 6 | // Copyright © 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshBackFooter.h" 10 | 11 | @interface MJRefreshBackStateFooter : MJRefreshBackFooter 12 | /** 文字距离圈圈、箭头的距离 */ 13 | @property (assign, nonatomic) CGFloat labelLeftInset; 14 | /** 显示刷新状态的label */ 15 | @property (weak, nonatomic, readonly) UILabel *stateLabel; 16 | /** 设置state状态下的文字 */ 17 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state; 18 | 19 | /** 获取state状态下的title */ 20 | - (NSString *)titleForState:(MJRefreshState)state; 21 | @end 22 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/MJRefresh/MJRefresh/Custom/Header/MJRefreshGifHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshGifHeader.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshStateHeader.h" 10 | 11 | @interface MJRefreshGifHeader : MJRefreshStateHeader 12 | @property (weak, nonatomic, readonly) UIImageView *gifView; 13 | 14 | /** 设置state状态下的动画图片images 动画持续时间duration*/ 15 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state; 16 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state; 17 | @end 18 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/MJRefresh/MJRefresh/Custom/Header/MJRefreshNormalHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshNormalHeader.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshStateHeader.h" 10 | 11 | @interface MJRefreshNormalHeader : MJRefreshStateHeader 12 | @property (weak, nonatomic, readonly) UIImageView *arrowView; 13 | /** 菊花的样式 */ 14 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle; 15 | @end 16 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/MJRefresh/MJRefresh/Custom/Header/MJRefreshStateHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshStateHeader.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshHeader.h" 10 | 11 | @interface MJRefreshStateHeader : MJRefreshHeader 12 | #pragma mark - 刷新时间相关 13 | /** 利用这个block来决定显示的更新时间文字 */ 14 | @property (copy, nonatomic) NSString *(^lastUpdatedTimeText)(NSDate *lastUpdatedTime); 15 | /** 显示上一次刷新时间的label */ 16 | @property (weak, nonatomic, readonly) UILabel *lastUpdatedTimeLabel; 17 | 18 | #pragma mark - 状态相关 19 | /** 文字距离圈圈、箭头的距离 */ 20 | @property (assign, nonatomic) CGFloat labelLeftInset; 21 | /** 显示刷新状态的label */ 22 | @property (weak, nonatomic, readonly) UILabel *stateLabel; 23 | /** 设置state状态下的文字 */ 24 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state; 25 | @end 26 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/arrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coderWeil/LWTools/bbdc7676ca5775c59c556ed1e9521f256cd1327f/LWToolsDemo/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/arrow@2x.png -------------------------------------------------------------------------------- /LWToolsDemo/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/en.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coderWeil/LWTools/bbdc7676ca5775c59c556ed1e9521f256cd1327f/LWToolsDemo/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/en.lproj/Localizable.strings -------------------------------------------------------------------------------- /LWToolsDemo/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hans.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coderWeil/LWTools/bbdc7676ca5775c59c556ed1e9521f256cd1327f/LWToolsDemo/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hans.lproj/Localizable.strings -------------------------------------------------------------------------------- /LWToolsDemo/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hant.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | "MJRefreshHeaderIdleText" = "下拉可以刷新"; 2 | "MJRefreshHeaderPullingText" = "鬆開立即刷新"; 3 | "MJRefreshHeaderRefreshingText" = "正在刷新數據中..."; 4 | 5 | "MJRefreshAutoFooterIdleText" = "點擊或上拉加載更多"; 6 | "MJRefreshAutoFooterRefreshingText" = "正在加載更多的數據..."; 7 | "MJRefreshAutoFooterNoMoreDataText" = "已經全部加載完畢"; 8 | 9 | "MJRefreshBackFooterIdleText" = "上拉可以加載更多"; 10 | "MJRefreshBackFooterPullingText" = "鬆開立即加載更多"; 11 | "MJRefreshBackFooterRefreshingText" = "正在加載更多的數據..."; 12 | "MJRefreshBackFooterNoMoreDataText" = "已經全部加載完畢"; 13 | 14 | "MJRefreshHeaderLastTimeText" = "最後更新:"; 15 | "MJRefreshHeaderDateTodayText" = "今天"; 16 | "MJRefreshHeaderNoneLastDateText" = "無記錄"; 17 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/MJRefresh/MJRefresh/MJRefresh.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | 4 | #import "UIScrollView+MJRefresh.h" 5 | #import "UIScrollView+MJExtension.h" 6 | #import "UIView+MJExtension.h" 7 | 8 | #import "MJRefreshNormalHeader.h" 9 | #import "MJRefreshGifHeader.h" 10 | 11 | #import "MJRefreshBackNormalFooter.h" 12 | #import "MJRefreshBackGifFooter.h" 13 | #import "MJRefreshAutoNormalFooter.h" 14 | #import "MJRefreshAutoGifFooter.h" -------------------------------------------------------------------------------- /LWToolsDemo/Pods/MJRefresh/MJRefresh/MJRefreshConst.m: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | #import 4 | 5 | const CGFloat MJRefreshLabelLeftInset = 25; 6 | const CGFloat MJRefreshHeaderHeight = 54.0; 7 | const CGFloat MJRefreshFooterHeight = 44.0; 8 | const CGFloat MJRefreshFastAnimationDuration = 0.25; 9 | const CGFloat MJRefreshSlowAnimationDuration = 0.4; 10 | 11 | NSString *const MJRefreshKeyPathContentOffset = @"contentOffset"; 12 | NSString *const MJRefreshKeyPathContentInset = @"contentInset"; 13 | NSString *const MJRefreshKeyPathContentSize = @"contentSize"; 14 | NSString *const MJRefreshKeyPathPanState = @"state"; 15 | 16 | NSString *const MJRefreshHeaderLastUpdatedTimeKey = @"MJRefreshHeaderLastUpdatedTimeKey"; 17 | 18 | NSString *const MJRefreshHeaderIdleText = @"MJRefreshHeaderIdleText"; 19 | NSString *const MJRefreshHeaderPullingText = @"MJRefreshHeaderPullingText"; 20 | NSString *const MJRefreshHeaderRefreshingText = @"MJRefreshHeaderRefreshingText"; 21 | 22 | NSString *const MJRefreshAutoFooterIdleText = @"MJRefreshAutoFooterIdleText"; 23 | NSString *const MJRefreshAutoFooterRefreshingText = @"MJRefreshAutoFooterRefreshingText"; 24 | NSString *const MJRefreshAutoFooterNoMoreDataText = @"MJRefreshAutoFooterNoMoreDataText"; 25 | 26 | NSString *const MJRefreshBackFooterIdleText = @"MJRefreshBackFooterIdleText"; 27 | NSString *const MJRefreshBackFooterPullingText = @"MJRefreshBackFooterPullingText"; 28 | NSString *const MJRefreshBackFooterRefreshingText = @"MJRefreshBackFooterRefreshingText"; 29 | NSString *const MJRefreshBackFooterNoMoreDataText = @"MJRefreshBackFooterNoMoreDataText"; 30 | 31 | NSString *const MJRefreshHeaderLastTimeText = @"MJRefreshHeaderLastTimeText"; 32 | NSString *const MJRefreshHeaderDateTodayText = @"MJRefreshHeaderDateTodayText"; 33 | NSString *const MJRefreshHeaderNoneLastDateText = @"MJRefreshHeaderNoneLastDateText"; -------------------------------------------------------------------------------- /LWToolsDemo/Pods/MJRefresh/MJRefresh/NSBundle+MJRefresh.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSBundle+MJRefresh.h 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 16/6/13. 6 | // Copyright © 2016年 小码哥. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSBundle (MJRefresh) 12 | + (instancetype)mj_refreshBundle; 13 | + (UIImage *)mj_arrowImage; 14 | + (NSString *)mj_localizedStringForKey:(NSString *)key value:(NSString *)value; 15 | + (NSString *)mj_localizedStringForKey:(NSString *)key; 16 | @end 17 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/MJRefresh/MJRefresh/UIScrollView+MJExtension.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // UIScrollView+Extension.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 14-5-28. 7 | // Copyright (c) 2014年 小码哥. All rights reserved. 8 | // 9 | 10 | #import 11 | 12 | @interface UIScrollView (MJExtension) 13 | @property (readonly, nonatomic) UIEdgeInsets mj_inset; 14 | 15 | @property (assign, nonatomic) CGFloat mj_insetT; 16 | @property (assign, nonatomic) CGFloat mj_insetB; 17 | @property (assign, nonatomic) CGFloat mj_insetL; 18 | @property (assign, nonatomic) CGFloat mj_insetR; 19 | 20 | @property (assign, nonatomic) CGFloat mj_offsetX; 21 | @property (assign, nonatomic) CGFloat mj_offsetY; 22 | 23 | @property (assign, nonatomic) CGFloat mj_contentW; 24 | @property (assign, nonatomic) CGFloat mj_contentH; 25 | @end 26 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/MJRefresh/MJRefresh/UIScrollView+MJRefresh.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // UIScrollView+MJRefresh.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 15/3/4. 7 | // Copyright (c) 2015年 小码哥. All rights reserved. 8 | // 给ScrollView增加下拉刷新、上拉刷新的功能 9 | 10 | #import 11 | #import "MJRefreshConst.h" 12 | 13 | @class MJRefreshHeader, MJRefreshFooter; 14 | 15 | @interface UIScrollView (MJRefresh) 16 | /** 下拉刷新控件 */ 17 | @property (strong, nonatomic) MJRefreshHeader *mj_header; 18 | @property (strong, nonatomic) MJRefreshHeader *header MJRefreshDeprecated("使用mj_header"); 19 | /** 上拉刷新控件 */ 20 | @property (strong, nonatomic) MJRefreshFooter *mj_footer; 21 | @property (strong, nonatomic) MJRefreshFooter *footer MJRefreshDeprecated("使用mj_footer"); 22 | 23 | #pragma mark - other 24 | - (NSInteger)mj_totalDataCount; 25 | @property (copy, nonatomic) void (^mj_reloadDataBlock)(NSInteger totalDataCount); 26 | @end 27 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/MJRefresh/MJRefresh/UIView+MJExtension.h: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // UIView+Extension.h 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 14-5-28. 7 | // Copyright (c) 2014年 小码哥. All rights reserved. 8 | // 9 | 10 | #import 11 | 12 | @interface UIView (MJExtension) 13 | @property (assign, nonatomic) CGFloat mj_x; 14 | @property (assign, nonatomic) CGFloat mj_y; 15 | @property (assign, nonatomic) CGFloat mj_w; 16 | @property (assign, nonatomic) CGFloat mj_h; 17 | @property (assign, nonatomic) CGSize mj_size; 18 | @property (assign, nonatomic) CGPoint mj_origin; 19 | @end 20 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/MJRefresh/MJRefresh/UIView+MJExtension.m: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | // UIView+Extension.m 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 14-5-28. 7 | // Copyright (c) 2014年 小码哥. All rights reserved. 8 | // 9 | 10 | #import "UIView+MJExtension.h" 11 | 12 | @implementation UIView (MJExtension) 13 | - (void)setMj_x:(CGFloat)mj_x 14 | { 15 | CGRect frame = self.frame; 16 | frame.origin.x = mj_x; 17 | self.frame = frame; 18 | } 19 | 20 | - (CGFloat)mj_x 21 | { 22 | return self.frame.origin.x; 23 | } 24 | 25 | - (void)setMj_y:(CGFloat)mj_y 26 | { 27 | CGRect frame = self.frame; 28 | frame.origin.y = mj_y; 29 | self.frame = frame; 30 | } 31 | 32 | - (CGFloat)mj_y 33 | { 34 | return self.frame.origin.y; 35 | } 36 | 37 | - (void)setMj_w:(CGFloat)mj_w 38 | { 39 | CGRect frame = self.frame; 40 | frame.size.width = mj_w; 41 | self.frame = frame; 42 | } 43 | 44 | - (CGFloat)mj_w 45 | { 46 | return self.frame.size.width; 47 | } 48 | 49 | - (void)setMj_h:(CGFloat)mj_h 50 | { 51 | CGRect frame = self.frame; 52 | frame.size.height = mj_h; 53 | self.frame = frame; 54 | } 55 | 56 | - (CGFloat)mj_h 57 | { 58 | return self.frame.size.height; 59 | } 60 | 61 | - (void)setMj_size:(CGSize)mj_size 62 | { 63 | CGRect frame = self.frame; 64 | frame.size = mj_size; 65 | self.frame = frame; 66 | } 67 | 68 | - (CGSize)mj_size 69 | { 70 | return self.frame.size; 71 | } 72 | 73 | - (void)setMj_origin:(CGPoint)mj_origin 74 | { 75 | CGRect frame = self.frame; 76 | frame.origin = mj_origin; 77 | self.frame = frame; 78 | } 79 | 80 | - (CGPoint)mj_origin 81 | { 82 | return self.frame.origin; 83 | } 84 | @end 85 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - LWAnimation (0.0.1) 3 | - LWPhotoBrowser (0.0.1): 4 | - SDWebImage 5 | - Masonry (1.1.0) 6 | - MJRefresh (3.1.15.3) 7 | - SDWebImage (4.3.3): 8 | - SDWebImage/Core (= 4.3.3) 9 | - SDWebImage/Core (4.3.3) 10 | 11 | DEPENDENCIES: 12 | - LWAnimation 13 | - LWPhotoBrowser 14 | - Masonry 15 | - MJRefresh 16 | - SDWebImage 17 | 18 | SPEC REPOS: 19 | https://github.com/cocoapods/specs.git: 20 | - LWAnimation 21 | - LWPhotoBrowser 22 | - Masonry 23 | - MJRefresh 24 | - SDWebImage 25 | 26 | SPEC CHECKSUMS: 27 | LWAnimation: 175be22009ec5294831e4443108c4edeae1508f9 28 | LWPhotoBrowser: c23ee5f1ac5de756c4879a3344f0147f2d79a8a6 29 | Masonry: 678fab65091a9290e40e2832a55e7ab731aad201 30 | MJRefresh: b48380ae2b927b46c4ef000de9adb8dc748e1df7 31 | SDWebImage: de4d90b5bff3571eae7bd16202b1f43135409fa5 32 | 33 | PODFILE CHECKSUM: adb45e39612626f9d14ac390c607069f5249d6a1 34 | 35 | COCOAPODS: 1.5.2 36 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Masonry/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011-2012 Masonry Team - https://github.com/Masonry 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Masonry/Masonry/MASCompositeConstraint.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASCompositeConstraint.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 21/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASConstraint.h" 10 | #import "MASUtilities.h" 11 | 12 | /** 13 | * A group of MASConstraint objects 14 | */ 15 | @interface MASCompositeConstraint : MASConstraint 16 | 17 | /** 18 | * Creates a composite with a predefined array of children 19 | * 20 | * @param children child MASConstraints 21 | * 22 | * @return a composite constraint 23 | */ 24 | - (id)initWithChildren:(NSArray *)children; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Masonry/Masonry/MASLayoutConstraint.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASLayoutConstraint.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 3/08/13. 6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved. 7 | // 8 | 9 | #import "MASUtilities.h" 10 | 11 | /** 12 | * When you are debugging or printing the constraints attached to a view this subclass 13 | * makes it easier to identify which constraints have been created via Masonry 14 | */ 15 | @interface MASLayoutConstraint : NSLayoutConstraint 16 | 17 | /** 18 | * a key to associate with this constraint 19 | */ 20 | @property (nonatomic, strong) id mas_key; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Masonry/Masonry/MASLayoutConstraint.m: -------------------------------------------------------------------------------- 1 | // 2 | // MASLayoutConstraint.m 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 3/08/13. 6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved. 7 | // 8 | 9 | #import "MASLayoutConstraint.h" 10 | 11 | @implementation MASLayoutConstraint 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Masonry/Masonry/MASViewAttribute.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASViewAttribute.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 21/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASUtilities.h" 10 | 11 | /** 12 | * An immutable tuple which stores the view and the related NSLayoutAttribute. 13 | * Describes part of either the left or right hand side of a constraint equation 14 | */ 15 | @interface MASViewAttribute : NSObject 16 | 17 | /** 18 | * The view which the reciever relates to. Can be nil if item is not a view. 19 | */ 20 | @property (nonatomic, weak, readonly) MAS_VIEW *view; 21 | 22 | /** 23 | * The item which the reciever relates to. 24 | */ 25 | @property (nonatomic, weak, readonly) id item; 26 | 27 | /** 28 | * The attribute which the reciever relates to 29 | */ 30 | @property (nonatomic, assign, readonly) NSLayoutAttribute layoutAttribute; 31 | 32 | /** 33 | * Convenience initializer. 34 | */ 35 | - (id)initWithView:(MAS_VIEW *)view layoutAttribute:(NSLayoutAttribute)layoutAttribute; 36 | 37 | /** 38 | * The designated initializer. 39 | */ 40 | - (id)initWithView:(MAS_VIEW *)view item:(id)item layoutAttribute:(NSLayoutAttribute)layoutAttribute; 41 | 42 | /** 43 | * Determine whether the layoutAttribute is a size attribute 44 | * 45 | * @return YES if layoutAttribute is equal to NSLayoutAttributeWidth or NSLayoutAttributeHeight 46 | */ 47 | - (BOOL)isSizeAttribute; 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Masonry/Masonry/MASViewAttribute.m: -------------------------------------------------------------------------------- 1 | // 2 | // MASViewAttribute.m 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 21/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASViewAttribute.h" 10 | 11 | @implementation MASViewAttribute 12 | 13 | - (id)initWithView:(MAS_VIEW *)view layoutAttribute:(NSLayoutAttribute)layoutAttribute { 14 | self = [self initWithView:view item:view layoutAttribute:layoutAttribute]; 15 | return self; 16 | } 17 | 18 | - (id)initWithView:(MAS_VIEW *)view item:(id)item layoutAttribute:(NSLayoutAttribute)layoutAttribute { 19 | self = [super init]; 20 | if (!self) return nil; 21 | 22 | _view = view; 23 | _item = item; 24 | _layoutAttribute = layoutAttribute; 25 | 26 | return self; 27 | } 28 | 29 | - (BOOL)isSizeAttribute { 30 | return self.layoutAttribute == NSLayoutAttributeWidth 31 | || self.layoutAttribute == NSLayoutAttributeHeight; 32 | } 33 | 34 | - (BOOL)isEqual:(MASViewAttribute *)viewAttribute { 35 | if ([viewAttribute isKindOfClass:self.class]) { 36 | return self.view == viewAttribute.view 37 | && self.layoutAttribute == viewAttribute.layoutAttribute; 38 | } 39 | return [super isEqual:viewAttribute]; 40 | } 41 | 42 | - (NSUInteger)hash { 43 | return MAS_NSUINTROTATE([self.view hash], MAS_NSUINT_BIT / 2) ^ self.layoutAttribute; 44 | } 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Masonry/Masonry/MASViewConstraint.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASViewConstraint.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 20/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASViewAttribute.h" 10 | #import "MASConstraint.h" 11 | #import "MASLayoutConstraint.h" 12 | #import "MASUtilities.h" 13 | 14 | /** 15 | * A single constraint. 16 | * Contains the attributes neccessary for creating a NSLayoutConstraint and adding it to the appropriate view 17 | */ 18 | @interface MASViewConstraint : MASConstraint 19 | 20 | /** 21 | * First item/view and first attribute of the NSLayoutConstraint 22 | */ 23 | @property (nonatomic, strong, readonly) MASViewAttribute *firstViewAttribute; 24 | 25 | /** 26 | * Second item/view and second attribute of the NSLayoutConstraint 27 | */ 28 | @property (nonatomic, strong, readonly) MASViewAttribute *secondViewAttribute; 29 | 30 | /** 31 | * initialises the MASViewConstraint with the first part of the equation 32 | * 33 | * @param firstViewAttribute view.mas_left, view.mas_width etc. 34 | * 35 | * @return a new view constraint 36 | */ 37 | - (id)initWithFirstViewAttribute:(MASViewAttribute *)firstViewAttribute; 38 | 39 | /** 40 | * Returns all MASViewConstraints installed with this view as a first item. 41 | * 42 | * @param view A view to retrieve constraints for. 43 | * 44 | * @return An array of MASViewConstraints. 45 | */ 46 | + (NSArray *)installedConstraintsForView:(MAS_VIEW *)view; 47 | 48 | @end 49 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Masonry/Masonry/Masonry.h: -------------------------------------------------------------------------------- 1 | // 2 | // Masonry.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 20/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for Masonry. 12 | FOUNDATION_EXPORT double MasonryVersionNumber; 13 | 14 | //! Project version string for Masonry. 15 | FOUNDATION_EXPORT const unsigned char MasonryVersionString[]; 16 | 17 | #import "MASUtilities.h" 18 | #import "View+MASAdditions.h" 19 | #import "View+MASShorthandAdditions.h" 20 | #import "ViewController+MASAdditions.h" 21 | #import "NSArray+MASAdditions.h" 22 | #import "NSArray+MASShorthandAdditions.h" 23 | #import "MASConstraint.h" 24 | #import "MASCompositeConstraint.h" 25 | #import "MASViewAttribute.h" 26 | #import "MASViewConstraint.h" 27 | #import "MASConstraintMaker.h" 28 | #import "MASLayoutConstraint.h" 29 | #import "NSLayoutConstraint+MASDebugAdditions.h" 30 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Masonry/Masonry/NSArray+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSArray+MASShorthandAdditions.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 22/07/13. 6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved. 7 | // 8 | 9 | #import "NSArray+MASAdditions.h" 10 | 11 | #ifdef MAS_SHORTHAND 12 | 13 | /** 14 | * Shorthand array additions without the 'mas_' prefixes, 15 | * only enabled if MAS_SHORTHAND is defined 16 | */ 17 | @interface NSArray (MASShorthandAdditions) 18 | 19 | - (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *make))block; 20 | - (NSArray *)updateConstraints:(void(^)(MASConstraintMaker *make))block; 21 | - (NSArray *)remakeConstraints:(void(^)(MASConstraintMaker *make))block; 22 | 23 | @end 24 | 25 | @implementation NSArray (MASShorthandAdditions) 26 | 27 | - (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *))block { 28 | return [self mas_makeConstraints:block]; 29 | } 30 | 31 | - (NSArray *)updateConstraints:(void(^)(MASConstraintMaker *))block { 32 | return [self mas_updateConstraints:block]; 33 | } 34 | 35 | - (NSArray *)remakeConstraints:(void(^)(MASConstraintMaker *))block { 36 | return [self mas_remakeConstraints:block]; 37 | } 38 | 39 | @end 40 | 41 | #endif 42 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Masonry/Masonry/NSLayoutConstraint+MASDebugAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSLayoutConstraint+MASDebugAdditions.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 3/08/13. 6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved. 7 | // 8 | 9 | #import "MASUtilities.h" 10 | 11 | /** 12 | * makes debug and log output of NSLayoutConstraints more readable 13 | */ 14 | @interface NSLayoutConstraint (MASDebugAdditions) 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Masonry/Masonry/ViewController+MASAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+MASAdditions.h 3 | // Masonry 4 | // 5 | // Created by Craig Siemens on 2015-06-23. 6 | // 7 | // 8 | 9 | #import "MASUtilities.h" 10 | #import "MASConstraintMaker.h" 11 | #import "MASViewAttribute.h" 12 | 13 | #ifdef MAS_VIEW_CONTROLLER 14 | 15 | @interface MAS_VIEW_CONTROLLER (MASAdditions) 16 | 17 | /** 18 | * following properties return a new MASViewAttribute with appropriate UILayoutGuide and NSLayoutAttribute 19 | */ 20 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuide; 21 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuide; 22 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuideTop; 23 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuideBottom; 24 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuideTop; 25 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuideBottom; 26 | 27 | 28 | @end 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Masonry/Masonry/ViewController+MASAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+MASAdditions.m 3 | // Masonry 4 | // 5 | // Created by Craig Siemens on 2015-06-23. 6 | // 7 | // 8 | 9 | #import "ViewController+MASAdditions.h" 10 | 11 | #ifdef MAS_VIEW_CONTROLLER 12 | 13 | @implementation MAS_VIEW_CONTROLLER (MASAdditions) 14 | 15 | - (MASViewAttribute *)mas_topLayoutGuide { 16 | return [[MASViewAttribute alloc] initWithView:self.view item:self.topLayoutGuide layoutAttribute:NSLayoutAttributeBottom]; 17 | } 18 | - (MASViewAttribute *)mas_topLayoutGuideTop { 19 | return [[MASViewAttribute alloc] initWithView:self.view item:self.topLayoutGuide layoutAttribute:NSLayoutAttributeTop]; 20 | } 21 | - (MASViewAttribute *)mas_topLayoutGuideBottom { 22 | return [[MASViewAttribute alloc] initWithView:self.view item:self.topLayoutGuide layoutAttribute:NSLayoutAttributeBottom]; 23 | } 24 | 25 | - (MASViewAttribute *)mas_bottomLayoutGuide { 26 | return [[MASViewAttribute alloc] initWithView:self.view item:self.bottomLayoutGuide layoutAttribute:NSLayoutAttributeTop]; 27 | } 28 | - (MASViewAttribute *)mas_bottomLayoutGuideTop { 29 | return [[MASViewAttribute alloc] initWithView:self.view item:self.bottomLayoutGuide layoutAttribute:NSLayoutAttributeTop]; 30 | } 31 | - (MASViewAttribute *)mas_bottomLayoutGuideBottom { 32 | return [[MASViewAttribute alloc] initWithView:self.view item:self.bottomLayoutGuide layoutAttribute:NSLayoutAttributeBottom]; 33 | } 34 | 35 | 36 | 37 | @end 38 | 39 | #endif 40 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Pods.xcodeproj/xcuserdata/weil.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | LWAnimation.xcscheme 8 | 9 | isShown 10 | 11 | 12 | LWPhotoBrowser.xcscheme 13 | 14 | isShown 15 | 16 | 17 | MJRefresh.xcscheme 18 | 19 | isShown 20 | 21 | 22 | Masonry.xcscheme 23 | 24 | isShown 25 | 26 | 27 | Pods-LWToolsDemo.xcscheme 28 | 29 | isShown 30 | 31 | 32 | SDWebImage.xcscheme 33 | 34 | isShown 35 | 36 | 37 | 38 | SuppressBuildableAutocreation 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/SDWebImage/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2009-2017 Olivier Poitrey rs@dailymotion.com 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is furnished 8 | to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | 21 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/SDWebImage/SDWebImage/NSData+ImageContentType.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * (c) Fabrice Aneche 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 | #import "SDWebImageCompat.h" 12 | 13 | typedef NS_ENUM(NSInteger, SDImageFormat) { 14 | SDImageFormatUndefined = -1, 15 | SDImageFormatJPEG = 0, 16 | SDImageFormatPNG, 17 | SDImageFormatGIF, 18 | SDImageFormatTIFF, 19 | SDImageFormatWebP, 20 | SDImageFormatHEIC 21 | }; 22 | 23 | @interface NSData (ImageContentType) 24 | 25 | /** 26 | * Return image format 27 | * 28 | * @param data the input image data 29 | * 30 | * @return the image format as `SDImageFormat` (enum) 31 | */ 32 | + (SDImageFormat)sd_imageFormatForImageData:(nullable NSData *)data; 33 | 34 | /** 35 | Convert SDImageFormat to UTType 36 | 37 | @param format Format as SDImageFormat 38 | @return The UTType as CFStringRef 39 | */ 40 | + (nonnull CFStringRef)sd_UTTypeFromSDImageFormat:(SDImageFormat)format; 41 | 42 | @end 43 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/SDWebImage/SDWebImage/NSImage+WebCache.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 "SDWebImageCompat.h" 10 | 11 | #if SD_MAC 12 | 13 | #import 14 | 15 | @interface NSImage (WebCache) 16 | 17 | - (CGImageRef)CGImage; 18 | - (NSArray *)images; 19 | - (BOOL)isGIF; 20 | 21 | @end 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/SDWebImage/SDWebImage/NSImage+WebCache.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 "NSImage+WebCache.h" 10 | 11 | #if SD_MAC 12 | 13 | @implementation NSImage (WebCache) 14 | 15 | - (CGImageRef)CGImage { 16 | NSRect imageRect = NSMakeRect(0, 0, self.size.width, self.size.height); 17 | CGImageRef cgImage = [self CGImageForProposedRect:&imageRect context:NULL hints:nil]; 18 | return cgImage; 19 | } 20 | 21 | - (NSArray *)images { 22 | return nil; 23 | } 24 | 25 | - (BOOL)isGIF { 26 | BOOL isGIF = NO; 27 | for (NSImageRep *rep in self.representations) { 28 | if ([rep isKindOfClass:[NSBitmapImageRep class]]) { 29 | NSBitmapImageRep *bitmapRep = (NSBitmapImageRep *)rep; 30 | NSUInteger frameCount = [[bitmapRep valueForProperty:NSImageFrameCount] unsignedIntegerValue]; 31 | isGIF = frameCount > 1 ? YES : NO; 32 | break; 33 | } 34 | } 35 | return isGIF; 36 | } 37 | 38 | @end 39 | 40 | #endif 41 | 42 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/SDWebImage/SDWebImage/SDAnimatedImageRep.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 "SDWebImageCompat.h" 10 | 11 | #if SD_MAC 12 | 13 | // A subclass of `NSBitmapImageRep` to fix that GIF loop count issue because `NSBitmapImageRep` will reset `NSImageCurrentFrameDuration` by using `kCGImagePropertyGIFDelayTime` but not `kCGImagePropertyGIFUnclampedDelayTime`. 14 | // Built in GIF coder use this instead of `NSBitmapImageRep` for better GIF rendering. If you do not want this, only enable `SDWebImageImageIOCoder`, which just call `NSImage` API and actually use `NSBitmapImageRep` for GIF image. 15 | 16 | @interface SDAnimatedImageRep : NSBitmapImageRep 17 | 18 | @end 19 | 20 | #endif 21 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/SDWebImage/SDWebImage/SDImageCacheConfig.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 "SDWebImageCompat.h" 11 | 12 | @interface SDImageCacheConfig : NSObject 13 | 14 | /** 15 | * Decompressing images that are downloaded and cached can improve performance but can consume lot of memory. 16 | * Defaults to YES. Set this to NO if you are experiencing a crash due to excessive memory consumption. 17 | */ 18 | @property (assign, nonatomic) BOOL shouldDecompressImages; 19 | 20 | /** 21 | * disable iCloud backup [defaults to YES] 22 | */ 23 | @property (assign, nonatomic) BOOL shouldDisableiCloud; 24 | 25 | /** 26 | * use memory cache [defaults to YES] 27 | */ 28 | @property (assign, nonatomic) BOOL shouldCacheImagesInMemory; 29 | 30 | /** 31 | * The reading options while reading cache from disk. 32 | * Defaults to 0. You can set this to `NSDataReadingMappedIfSafe` to improve performance. 33 | */ 34 | @property (assign, nonatomic) NSDataReadingOptions diskCacheReadingOptions; 35 | 36 | /** 37 | * The writing options while writing cache to disk. 38 | * Defaults to `NSDataWritingAtomic`. You can set this to `NSDataWritingWithoutOverwriting` to prevent overwriting an existing file. 39 | */ 40 | @property (assign, nonatomic) NSDataWritingOptions diskCacheWritingOptions; 41 | 42 | /** 43 | * The maximum length of time to keep an image in the cache, in seconds. 44 | */ 45 | @property (assign, nonatomic) NSInteger maxCacheAge; 46 | 47 | /** 48 | * The maximum size of the cache, in bytes. 49 | */ 50 | @property (assign, nonatomic) NSUInteger maxCacheSize; 51 | 52 | @end 53 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/SDWebImage/SDWebImage/SDImageCacheConfig.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 "SDImageCacheConfig.h" 10 | 11 | static const NSInteger kDefaultCacheMaxCacheAge = 60 * 60 * 24 * 7; // 1 week 12 | 13 | @implementation SDImageCacheConfig 14 | 15 | - (instancetype)init { 16 | if (self = [super init]) { 17 | _shouldDecompressImages = YES; 18 | _shouldDisableiCloud = YES; 19 | _shouldCacheImagesInMemory = YES; 20 | _diskCacheReadingOptions = 0; 21 | _diskCacheWritingOptions = NSDataWritingAtomic; 22 | _maxCacheAge = kDefaultCacheMaxCacheAge; 23 | _maxCacheSize = 0; 24 | } 25 | return self; 26 | } 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/SDWebImage/SDWebImage/SDWebImageCoder.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 "SDWebImageCoder.h" 10 | 11 | NSString * const SDWebImageCoderScaleDownLargeImagesKey = @"scaleDownLargeImages"; 12 | 13 | CGColorSpaceRef SDCGColorSpaceGetDeviceRGB(void) { 14 | static CGColorSpaceRef colorSpace; 15 | static dispatch_once_t onceToken; 16 | dispatch_once(&onceToken, ^{ 17 | colorSpace = CGColorSpaceCreateDeviceRGB(); 18 | }); 19 | return colorSpace; 20 | } 21 | 22 | BOOL SDCGImageRefContainsAlpha(CGImageRef imageRef) { 23 | if (!imageRef) { 24 | return NO; 25 | } 26 | CGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo(imageRef); 27 | BOOL hasAlpha = !(alphaInfo == kCGImageAlphaNone || 28 | alphaInfo == kCGImageAlphaNoneSkipFirst || 29 | alphaInfo == kCGImageAlphaNoneSkipLast); 30 | return hasAlpha; 31 | } 32 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/SDWebImage/SDWebImage/SDWebImageFrame.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 "SDWebImageCompat.h" 11 | 12 | @interface SDWebImageFrame : NSObject 13 | 14 | // This class is used for creating animated images via `animatedImageWithFrames` in `SDWebImageCoderHelper`. Attention if you need to specify animated images loop count, use `sd_imageLoopCount` property in `UIImage+MultiFormat`. 15 | 16 | /** 17 | The image of current frame. You should not set an animated image. 18 | */ 19 | @property (nonatomic, strong, readonly, nonnull) UIImage *image; 20 | /** 21 | The duration of current frame to be displayed. The number is seconds but not milliseconds. You should not set this to zero. 22 | */ 23 | @property (nonatomic, readonly, assign) NSTimeInterval duration; 24 | 25 | /** 26 | Create a frame instance with specify image and duration 27 | 28 | @param image current frame's image 29 | @param duration current frame's duration 30 | @return frame instance 31 | */ 32 | + (instancetype _Nonnull)frameWithImage:(UIImage * _Nonnull)image duration:(NSTimeInterval)duration; 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/SDWebImage/SDWebImage/SDWebImageFrame.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 "SDWebImageFrame.h" 10 | 11 | @interface SDWebImageFrame () 12 | 13 | @property (nonatomic, strong, readwrite, nonnull) UIImage *image; 14 | @property (nonatomic, readwrite, assign) NSTimeInterval duration; 15 | 16 | @end 17 | 18 | @implementation SDWebImageFrame 19 | 20 | + (instancetype)frameWithImage:(UIImage *)image duration:(NSTimeInterval)duration { 21 | SDWebImageFrame *frame = [[SDWebImageFrame alloc] init]; 22 | frame.image = image; 23 | frame.duration = duration; 24 | 25 | return frame; 26 | } 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/SDWebImage/SDWebImage/SDWebImageGIFCoder.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 "SDWebImageCoder.h" 11 | 12 | /** 13 | Built in coder using ImageIO that supports GIF encoding/decoding 14 | @note `SDWebImageIOCoder` supports GIF but only as static (will use the 1st frame). 15 | @note Use `SDWebImageGIFCoder` for fully animated GIFs - less performant than `FLAnimatedImage` 16 | @note If you decide to make all `UIImageView`(including `FLAnimatedImageView`) instance support GIF. You should add this coder to `SDWebImageCodersManager` and make sure that it has a higher priority than `SDWebImageIOCoder` 17 | @note The recommended approach for animated GIFs is using `FLAnimatedImage`. It's more performant than `UIImageView` for GIF displaying 18 | */ 19 | @interface SDWebImageGIFCoder : NSObject 20 | 21 | + (nonnull instancetype)sharedCoder; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/SDWebImage/SDWebImage/SDWebImageImageIOCoder.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 "SDWebImageCoder.h" 11 | 12 | /** 13 | Built in coder that supports PNG, JPEG, TIFF, includes support for progressive decoding. 14 | 15 | GIF 16 | Also supports static GIF (meaning will only handle the 1st frame). 17 | For a full GIF support, we recommend `FLAnimatedImage` or our less performant `SDWebImageGIFCoder` 18 | 19 | HEIC 20 | This coder also supports HEIC format because ImageIO supports it natively. But it depends on the system capabilities, so it won't work on all devices, see: https://devstreaming-cdn.apple.com/videos/wwdc/2017/511tj33587vdhds/511/511_working_with_heif_and_hevc.pdf 21 | Decode(Software): !Simulator && (iOS 11 || tvOS 11 || macOS 10.13) 22 | Decode(Hardware): !Simulator && ((iOS 11 && A9Chip) || (macOS 10.13 && 6thGenerationIntelCPU)) 23 | Encode(Software): macOS 10.13 24 | Encode(Hardware): !Simulator && ((iOS 11 && A10FusionChip) || (macOS 10.13 && 6thGenerationIntelCPU)) 25 | */ 26 | @interface SDWebImageImageIOCoder : NSObject 27 | 28 | + (nonnull instancetype)sharedCoder; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/SDWebImage/SDWebImage/SDWebImageOperation.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 SDWebImageOperation 12 | 13 | - (void)cancel; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/SDWebImage/SDWebImage/UIImage+ForceDecode.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 "SDWebImageCompat.h" 10 | 11 | @interface UIImage (ForceDecode) 12 | 13 | + (nullable UIImage *)decodedImageWithImage:(nullable UIImage *)image; 14 | 15 | + (nullable UIImage *)decodedAndScaledDownImageWithImage:(nullable UIImage *)image; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/SDWebImage/SDWebImage/UIImage+ForceDecode.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 "UIImage+ForceDecode.h" 10 | #import "SDWebImageCodersManager.h" 11 | 12 | @implementation UIImage (ForceDecode) 13 | 14 | + (UIImage *)decodedImageWithImage:(UIImage *)image { 15 | if (!image) { 16 | return nil; 17 | } 18 | NSData *tempData; 19 | return [[SDWebImageCodersManager sharedInstance] decompressedImageWithImage:image data:&tempData options:@{SDWebImageCoderScaleDownLargeImagesKey: @(NO)}]; 20 | } 21 | 22 | + (UIImage *)decodedAndScaledDownImageWithImage:(UIImage *)image { 23 | if (!image) { 24 | return nil; 25 | } 26 | NSData *tempData; 27 | return [[SDWebImageCodersManager sharedInstance] decompressedImageWithImage:image data:&tempData options:@{SDWebImageCoderScaleDownLargeImagesKey: @(YES)}]; 28 | } 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/SDWebImage/SDWebImage/UIImage+GIF.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * (c) Laurin Brandner 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 "SDWebImageCompat.h" 11 | 12 | @interface UIImage (GIF) 13 | 14 | /** 15 | * Creates an animated UIImage from an NSData. 16 | * For static GIF, will create an UIImage with `images` array set to nil. For animated GIF, will create an UIImage with valid `images` array. 17 | */ 18 | + (UIImage *)sd_animatedGIFWithData:(NSData *)data; 19 | 20 | /** 21 | * Checks if an UIImage instance is a GIF. Will use the `images` array. 22 | */ 23 | - (BOOL)isGIF; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/SDWebImage/SDWebImage/UIImage+GIF.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * (c) Laurin Brandner 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 "UIImage+GIF.h" 11 | #import "SDWebImageGIFCoder.h" 12 | #import "NSImage+WebCache.h" 13 | 14 | @implementation UIImage (GIF) 15 | 16 | + (UIImage *)sd_animatedGIFWithData:(NSData *)data { 17 | if (!data) { 18 | return nil; 19 | } 20 | return [[SDWebImageGIFCoder sharedCoder] decodedImageWithData:data]; 21 | } 22 | 23 | - (BOOL)isGIF { 24 | return (self.images != nil); 25 | } 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/SDWebImage/SDWebImage/UIImage+MultiFormat.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 "SDWebImageCompat.h" 10 | #import "NSData+ImageContentType.h" 11 | 12 | @interface UIImage (MultiFormat) 13 | 14 | /** 15 | * UIKit: 16 | * For static image format, this value is always 0. 17 | * For animated image format, 0 means infinite looping. 18 | * Note that because of the limitations of categories this property can get out of sync if you create another instance with CGImage or other methods. 19 | * AppKit: 20 | * NSImage currently only support animated via GIF imageRep unlike UIImage. 21 | * The getter of this property will get the loop count from GIF imageRep 22 | * The setter of this property will set the loop count from GIF imageRep 23 | */ 24 | @property (nonatomic, assign) NSUInteger sd_imageLoopCount; 25 | 26 | + (nullable UIImage *)sd_imageWithData:(nullable NSData *)data; 27 | - (nullable NSData *)sd_imageData; 28 | - (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/SDWebImage/SDWebImage/UIView+WebCacheOperation.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 "SDWebImageCompat.h" 10 | 11 | #if SD_UIKIT || SD_MAC 12 | 13 | #import "SDWebImageManager.h" 14 | 15 | // These methods are used to support canceling for UIView image loading, it's designed to be used internal but not external. 16 | // All the stored operations are weak, so it will be dalloced after image loading finished. If you need to store operations, use your own class to keep a strong reference for them. 17 | @interface UIView (WebCacheOperation) 18 | 19 | /** 20 | * Set the image load operation (storage in a UIView based weak map table) 21 | * 22 | * @param operation the operation 23 | * @param key key for storing the operation 24 | */ 25 | - (void)sd_setImageLoadOperation:(nullable id)operation forKey:(nullable NSString *)key; 26 | 27 | /** 28 | * Cancel all operations for the current UIView and key 29 | * 30 | * @param key key for identifying the operations 31 | */ 32 | - (void)sd_cancelImageLoadOperationWithKey:(nullable NSString *)key; 33 | 34 | /** 35 | * Just remove the operations corresponding to the current UIView and key without cancelling them 36 | * 37 | * @param key key for identifying the operations 38 | */ 39 | - (void)sd_removeImageLoadOperationWithKey:(nullable NSString *)key; 40 | 41 | @end 42 | 43 | #endif 44 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Target Support Files/LWAnimation/LWAnimation-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_LWAnimation : NSObject 3 | @end 4 | @implementation PodsDummy_LWAnimation 5 | @end 6 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Target Support Files/LWAnimation/LWAnimation-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Target Support Files/LWAnimation/LWAnimation.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/LWAnimation 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/LWAnimation" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/LWAnimation" 4 | OTHER_LDFLAGS = -framework "Foundation" -framework "UIKit" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/LWAnimation 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Target Support Files/LWPhotoBrowser/LWPhotoBrowser-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_LWPhotoBrowser : NSObject 3 | @end 4 | @implementation PodsDummy_LWPhotoBrowser 5 | @end 6 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Target Support Files/LWPhotoBrowser/LWPhotoBrowser-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Target Support Files/LWPhotoBrowser/LWPhotoBrowser.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/LWPhotoBrowser 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/LWPhotoBrowser" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/LWPhotoBrowser" "${PODS_ROOT}/Headers/Public/SDWebImage" 4 | LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/LWPhotoBrowser 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Target Support Files/MJRefresh/MJRefresh-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_MJRefresh : NSObject 3 | @end 4 | @implementation PodsDummy_MJRefresh 5 | @end 6 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Target Support Files/MJRefresh/MJRefresh-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Target Support Files/MJRefresh/MJRefresh.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/MJRefresh" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MJRefresh" 4 | PODS_BUILD_DIR = ${BUILD_DIR} 5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/MJRefresh 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Target Support Files/Masonry/Masonry-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Masonry : NSObject 3 | @end 4 | @implementation PodsDummy_Masonry 5 | @end 6 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Target Support Files/Masonry/Masonry-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Target Support Files/Masonry/Masonry.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Masonry 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Masonry" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Masonry" 4 | OTHER_LDFLAGS = -framework "Foundation" -framework "UIKit" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Masonry 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Target Support Files/Pods-LWToolsDemo/Pods-LWToolsDemo-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_LWToolsDemo : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_LWToolsDemo 5 | @end 6 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Target Support Files/Pods-LWToolsDemo/Pods-LWToolsDemo.debug.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/LWAnimation" "${PODS_ROOT}/Headers/Public/LWPhotoBrowser" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SDWebImage" 3 | LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/LWAnimation" "${PODS_CONFIGURATION_BUILD_DIR}/LWPhotoBrowser" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" 4 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/LWAnimation" -isystem "${PODS_ROOT}/Headers/Public/LWPhotoBrowser" -isystem "${PODS_ROOT}/Headers/Public/MJRefresh" -isystem "${PODS_ROOT}/Headers/Public/Masonry" -isystem "${PODS_ROOT}/Headers/Public/SDWebImage" 5 | OTHER_LDFLAGS = $(inherited) -ObjC -l"LWAnimation" -l"LWPhotoBrowser" -l"MJRefresh" -l"Masonry" -l"SDWebImage" -framework "Foundation" -framework "ImageIO" -framework "UIKit" 6 | PODS_BUILD_DIR = ${BUILD_DIR} 7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Target Support Files/Pods-LWToolsDemo/Pods-LWToolsDemo.release.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/LWAnimation" "${PODS_ROOT}/Headers/Public/LWPhotoBrowser" "${PODS_ROOT}/Headers/Public/MJRefresh" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/SDWebImage" 3 | LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/LWAnimation" "${PODS_CONFIGURATION_BUILD_DIR}/LWPhotoBrowser" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" 4 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/LWAnimation" -isystem "${PODS_ROOT}/Headers/Public/LWPhotoBrowser" -isystem "${PODS_ROOT}/Headers/Public/MJRefresh" -isystem "${PODS_ROOT}/Headers/Public/Masonry" -isystem "${PODS_ROOT}/Headers/Public/SDWebImage" 5 | OTHER_LDFLAGS = $(inherited) -ObjC -l"LWAnimation" -l"LWPhotoBrowser" -l"MJRefresh" -l"Masonry" -l"SDWebImage" -framework "Foundation" -framework "ImageIO" -framework "UIKit" 6 | PODS_BUILD_DIR = ${BUILD_DIR} 7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Target Support Files/SDWebImage/SDWebImage-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_SDWebImage : NSObject 3 | @end 4 | @implementation PodsDummy_SDWebImage 5 | @end 6 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Target Support Files/SDWebImage/SDWebImage-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /LWToolsDemo/Pods/Target Support Files/SDWebImage/SDWebImage.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SDWebImage" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SDWebImage" 4 | OTHER_LDFLAGS = -framework "ImageIO" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/SDWebImage 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /LWTopChangeDemo/LWTopChangeDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /LWTopChangeDemo/LWTopChangeDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /LWTopChangeDemo/LWTopChangeDemo.xcodeproj/project.xcworkspace/xcuserdata/weil.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coderWeil/LWTools/bbdc7676ca5775c59c556ed1e9521f256cd1327f/LWTopChangeDemo/LWTopChangeDemo.xcodeproj/project.xcworkspace/xcuserdata/weil.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /LWTopChangeDemo/LWTopChangeDemo.xcodeproj/xcuserdata/weil.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /LWTopChangeDemo/LWTopChangeDemo.xcodeproj/xcuserdata/weil.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | LWTopChangeDemo.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /LWTopChangeDemo/LWTopChangeDemo/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // LWTopChangeDemo 4 | // 5 | // Created by weil on 2018/6/8. 6 | // Copyright © 2018年 weil. 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 | -------------------------------------------------------------------------------- /LWTopChangeDemo/LWTopChangeDemo/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /LWTopChangeDemo/LWTopChangeDemo/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 | -------------------------------------------------------------------------------- /LWTopChangeDemo/LWTopChangeDemo/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UILaunchStoryboardName 24 | LaunchScreen 25 | UIMainStoryboardFile 26 | Main 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | UISupportedInterfaceOrientations~ipad 38 | 39 | UIInterfaceOrientationPortrait 40 | UIInterfaceOrientationPortraitUpsideDown 41 | UIInterfaceOrientationLandscapeLeft 42 | UIInterfaceOrientationLandscapeRight 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /LWTopChangeDemo/LWTopChangeDemo/LWTopView.h: -------------------------------------------------------------------------------- 1 | // 2 | // LWTopView.h 3 | // LWTopChangeDemo 4 | // 5 | // Created by weil on 2018/6/8. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LWTopView : UIView 12 | - (void)updateTopViewWithScale:(CGFloat)scale; 13 | - (void)updateTopViewWithTitle:(NSString *)title; 14 | @end 15 | -------------------------------------------------------------------------------- /LWTopChangeDemo/LWTopChangeDemo/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // LWTopChangeDemo 4 | // 5 | // Created by weil on 2018/6/8. 6 | // Copyright © 2018年 weil. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /LWTopChangeDemo/LWTopChangeDemo/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // LWTopChangeDemo 4 | // 5 | // Created by weil on 2018/6/8. 6 | // Copyright © 2018年 weil. 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 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # LWTools 2 | 工作中常用的方法封装 3 | 4 | ### 1.view添加分类,方便布局 5 | ``` 6 | //例如: 7 | view.height 8 | view.width 9 | view.left 10 | view.top 11 | view.right 12 | view.bottom 13 | view.centerX 14 | view.centerY 15 | view.size 16 | view.origin 17 | ``` 18 | 19 | ### 2.手机可用存储空间的获取 20 | ``` 21 | //导入YGDeviceSpaceTool.h 22 | /** 计算本机剩余存储空间 **/ 23 | + (long long)deviceFreeSpace; 24 | /** 外界传入一个size,判断本机空闲空间是否足够 **/ 25 | + (BOOL)deviceSpaceIsEnough:(long long)size; 26 | 27 | ``` 28 | 29 | ### 3.文件的加密操作 30 | ``` 31 | /** 判断文件是否加密过 **/ 32 | + (BOOL)isFileEncry:(NSString *)filePath; 33 | /** 给文件加密 **/ 34 | + (void)encryFile:(NSString *)filePath; 35 | /** 给加密过的文件追加后缀 **/ 36 | + (void)appendSuffixToFile:(NSString *)filePath; 37 | ``` 38 | 39 | ### 4.文件的解密操作 40 | ``` 41 | /** 给文件解密 **/ 42 | + (void)descryFile:(NSString *)filePath; 43 | ``` 44 | 45 | ### 5.由view生成图片 46 | ![gif动图展示](https://github.com/guyuliunian/LWTools/blob/master/从View生成图片.gif) 47 | ``` 48 | - (UIImage *)getImageFromView { 49 | CGFloat scale = [UIScreen mainScreen].scale; 50 | UIGraphicsBeginImageContextWithOptions(self.lw_size, NO, scale); 51 | [self.layer renderInContext:UIGraphicsGetCurrentContext()]; 52 | UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 53 | return image; 54 | } 55 | ``` 56 | 57 | ### 6.简单的选择栏封装(不带滚动) 58 | 59 | ### 7.类似微信的图片浏览器 60 | ![gif动图展示](https://github.com/guyuliunian/LWTools/blob/master/类似微信图片浏览.gif) 61 | 62 | ### 8.多种加载动画效果示例 63 | ![gif动图展示](https://github.com/guyuliunian/LWTools/blob/master/多种加载动画.gif) 64 | 65 | ### 9.点赞动画 66 | ![gif动图展示](https://github.com/guyuliunian/LWTools/blob/master/点赞动画.gif) 67 | 68 | ### 10.scrollView长图生成 69 | 70 | ### 11.类似饿了么订单详情顶部的渐变动画效果 71 | 72 | ### 12. 自定义window,放在状态栏位置,实现点击状态栏,页面中scrollView滚动到顶部效果 73 | 调用方法: 74 | ``` 75 | [LWWindowAlert enableCustomWindowAlert]; 76 | ``` 77 | 如果不想要,调用下面: 78 | ``` 79 | [LWWindowAlert disableCustomWindowAlert]; 80 | ``` 81 | -------------------------------------------------------------------------------- /topAnimation.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coderWeil/LWTools/bbdc7676ca5775c59c556ed1e9521f256cd1327f/topAnimation.gif -------------------------------------------------------------------------------- /从View生成图片.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coderWeil/LWTools/bbdc7676ca5775c59c556ed1e9521f256cd1327f/从View生成图片.gif -------------------------------------------------------------------------------- /刷新动画.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coderWeil/LWTools/bbdc7676ca5775c59c556ed1e9521f256cd1327f/刷新动画.gif -------------------------------------------------------------------------------- /多种加载动画.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coderWeil/LWTools/bbdc7676ca5775c59c556ed1e9521f256cd1327f/多种加载动画.gif -------------------------------------------------------------------------------- /点赞动画.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coderWeil/LWTools/bbdc7676ca5775c59c556ed1e9521f256cd1327f/点赞动画.gif -------------------------------------------------------------------------------- /类似微信图片浏览.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coderWeil/LWTools/bbdc7676ca5775c59c556ed1e9521f256cd1327f/类似微信图片浏览.gif --------------------------------------------------------------------------------