├── Show ├── pay.png ├── detail.png ├── order.png ├── screen.png ├── zhuye.png └── shopcart.png ├── LYFStoreDemo ├── Assets.xcassets │ ├── Contents.json │ ├── material(素材) │ │ ├── Contents.json │ │ ├── Main │ │ │ ├── Contents.json │ │ │ ├── good.imageset │ │ │ │ ├── good@2x.png │ │ │ │ ├── good@3x.png │ │ │ │ └── Contents.json │ │ │ ├── omit.imageset │ │ │ │ ├── omit@2x.png │ │ │ │ └── Contents.json │ │ │ ├── post.imageset │ │ │ │ ├── post@2x.png │ │ │ │ ├── post@3x.png │ │ │ │ └── Contents.json │ │ │ ├── sale.imageset │ │ │ │ ├── sale@2x.png │ │ │ │ ├── sale@3x.png │ │ │ │ └── Contents.json │ │ │ ├── carry.imageset │ │ │ │ ├── carry@2x.png │ │ │ │ ├── carry@3x.png │ │ │ │ └── Contents.json │ │ │ ├── address.imageset │ │ │ │ ├── address@2x.png │ │ │ │ └── Contents.json │ │ │ ├── custom.imageset │ │ │ │ ├── custom@2x.png │ │ │ │ └── Contents.json │ │ │ ├── more_ad.imageset │ │ │ │ ├── more_ad@2x.png │ │ │ │ └── Contents.json │ │ │ ├── notice.imageset │ │ │ │ ├── notice@3x.png │ │ │ │ └── Contents.json │ │ │ ├── redAdd.imageset │ │ │ │ ├── redAdd@2x.png │ │ │ │ └── Contents.json │ │ │ ├── comments.imageset │ │ │ │ ├── comments@2x.png │ │ │ │ ├── comments@3x.png │ │ │ │ └── Contents.json │ │ │ ├── mainHead.imageset │ │ │ │ ├── mainHead@2x.png │ │ │ │ └── Contents.json │ │ │ ├── shareview.imageset │ │ │ │ ├── shareview@2x.png │ │ │ │ └── Contents.json │ │ │ ├── collection.imageset │ │ │ │ ├── collection@2x.png │ │ │ │ └── Contents.json │ │ │ ├── collection_N.imageset │ │ │ │ ├── collection_N@2x.png │ │ │ │ ├── collection_N@3x.png │ │ │ │ └── Contents.json │ │ │ ├── collection_S.imageset │ │ │ │ ├── collection_S@2x.png │ │ │ │ ├── collection_S@3x.png │ │ │ │ └── Contents.json │ │ │ ├── comments on.imageset │ │ │ │ ├── comments on@2x.png │ │ │ │ ├── comments on@3x.png │ │ │ │ └── Contents.json │ │ │ ├── buyDismiss.imageset │ │ │ │ ├── 逆购网app产品说明选择颜色尺寸弹窗.png │ │ │ │ └── Contents.json │ │ │ ├── collection on.imageset │ │ │ │ ├── collection on@2x.png │ │ │ │ └── Contents.json │ │ │ ├── collectionview.imageset │ │ │ │ ├── collectionview@2x.png │ │ │ │ └── Contents.json │ │ │ ├── pageControlDot.imageset │ │ │ │ ├── pageControlDot@2x.png │ │ │ │ ├── pageControlDot@3x.png │ │ │ │ └── Contents.json │ │ │ ├── add shopping on.imageset │ │ │ │ ├── add shopping on@2x.png │ │ │ │ ├── add shopping on@3x.png │ │ │ │ └── Contents.json │ │ │ ├── orderShopUnderLine.imageset │ │ │ │ ├── orderShopUnderLine@2x.png │ │ │ │ └── Contents.json │ │ │ └── pageControlCurrentDot.imageset │ │ │ │ ├── pageControlCurrentDot@2x.png │ │ │ │ ├── pageControlCurrentDot@3x.png │ │ │ │ └── Contents.json │ │ ├── Nav │ │ │ ├── Contents.json │ │ │ ├── back.imageset │ │ │ │ ├── back@2x.png │ │ │ │ ├── back@3x.png │ │ │ │ └── Contents.json │ │ │ ├── navigationButtonReturnClick.imageset │ │ │ │ ├── navigationButtonReturnClick.png │ │ │ │ ├── navigationButtonReturnClick@2x.png │ │ │ │ ├── navigationButtonReturnClick@3x.png │ │ │ │ └── Contents.json │ │ │ └── navigationbarBackgroundWhite.imageset │ │ │ │ ├── navigationbarBackgroundWhite.png │ │ │ │ └── Contents.json │ │ ├── Pay │ │ │ ├── Contents.json │ │ │ ├── wx_.imageset │ │ │ │ ├── wx_@2x.png │ │ │ │ └── Contents.json │ │ │ ├── yl_.imageset │ │ │ │ ├── yl_@2x.png │ │ │ │ └── Contents.json │ │ │ ├── zfb_.imageset │ │ │ │ ├── zfb_@2x.png │ │ │ │ └── Contents.json │ │ │ ├── payWay.imageset │ │ │ │ ├── payWay@2x.png │ │ │ │ └── Contents.json │ │ │ └── payWay_S.imageset │ │ │ │ ├── payWay_S@2x.png │ │ │ │ └── Contents.json │ │ ├── Share │ │ │ ├── Contents.json │ │ │ ├── wechat.imageset │ │ │ │ ├── wechat@2x.png │ │ │ │ ├── wechat@3x.png │ │ │ │ └── Contents.json │ │ │ ├── tencent.imageset │ │ │ │ ├── tencent@2x.png │ │ │ │ ├── tencent@3x.png │ │ │ │ └── Contents.json │ │ │ ├── wechat friend.imageset │ │ │ │ ├── wechat friend@2x.png │ │ │ │ ├── wechat friend@3x.png │ │ │ │ └── Contents.json │ │ │ └── wechat collection.imageset │ │ │ │ ├── wechat collection@2x.png │ │ │ │ ├── wechat collection@3x.png │ │ │ │ └── Contents.json │ │ ├── Shop │ │ │ ├── Contents.json │ │ │ ├── shopImage01.imageset │ │ │ │ ├── shopImage01.jpg │ │ │ │ └── Contents.json │ │ │ ├── shopImage02.imageset │ │ │ │ ├── shopImage02.jpg │ │ │ │ └── Contents.json │ │ │ └── shopImage03.imageset │ │ │ │ ├── shopImage03.jpg │ │ │ │ └── Contents.json │ │ ├── Tab │ │ │ ├── Contents.json │ │ │ ├── home_home_tab.imageset │ │ │ │ ├── home_home_tab~iphone.png │ │ │ │ ├── home_home_tab@2x~iphone.png │ │ │ │ ├── home_home_tab@3x~iphone.png │ │ │ │ └── Contents.json │ │ │ └── home_home_tab_s.imageset │ │ │ │ ├── home_home_tab_s~iphone.png │ │ │ │ ├── home_home_tab_s@2x~iphone.png │ │ │ │ ├── home_home_tab_s@3x~iphone.png │ │ │ │ └── Contents.json │ │ └── xiaomi6.imageset │ │ │ ├── xiaomi6.png │ │ │ └── Contents.json │ └── AppIcon.appiconset │ │ └── Contents.json ├── Frameworks │ ├── XWTransition │ │ ├── Resoures │ │ │ ├── line.png │ │ │ ├── mask.jpg │ │ │ └── restrictedshine.tiff │ │ ├── Category │ │ │ ├── UIView+Snapshot.h │ │ │ ├── UINavigationController+XWTransition.h │ │ │ └── UIView+Snapshot.m │ │ ├── XWFilterAnimator │ │ │ ├── XWFilterAnimator+XWMask.h │ │ │ ├── XWFilterAnimator+XWFlash.h │ │ │ ├── XWFilterAnimator+XWRipple.h │ │ │ ├── XWFilterAnimator+XWBoxBlur.h │ │ │ ├── XWFilterAnimator+XWMod.h │ │ │ ├── XWFilterAnimator+XWSwipe.h │ │ │ ├── XWFilterAnimator+XWPageCurl.h │ │ │ ├── XWFilterAnimator+XWBarSwipe.h │ │ │ ├── XWFilterAnimator+XWCopyMachine.h │ │ │ ├── XWFilterTransitionView.h │ │ │ ├── XWFilterAnimator+XWBoxBlur.m │ │ │ ├── XWFilterAnimator+XWBarSwipe.m │ │ │ ├── XWFilterAnimator+XWPageCurl.m │ │ │ ├── XWFilterAnimator+XWRipple.m │ │ │ ├── XWFilterAnimator+XWSwipe.m │ │ │ ├── XWFilterAnimator+XWFlash.m │ │ │ ├── XWFilterAnimator+XWCopyMachine.m │ │ │ ├── XWFilterAnimator+XWMod.m │ │ │ ├── XWFilterAnimator+XWMask.m │ │ │ └── XWFilterAnimator.h │ │ ├── XWCoolAnimator │ │ │ ├── XWCoolAnimator+XWExplode.h │ │ │ ├── XWCoolAnimator+XWPageFlip.h │ │ │ ├── XWCoolAnimator+XWPortal.h │ │ │ ├── XWCoolAnimator+XWFold.h │ │ │ ├── XWCoolAnimator+XWLines.h │ │ │ ├── XWCoolAnimator+XWScanning.h │ │ │ └── XWCoolAnimator+XWMiddlePageFlip.h │ │ ├── XWCircleSpreadAnimator │ │ │ └── XWCircleSpreadAnimator.h │ │ ├── XWMagicMoveAnimator │ │ │ └── XWMagicMoveAnimator.h │ │ ├── Main │ │ │ └── XWTransitionAnimator.h │ │ └── XWDrawerAnimator │ │ │ └── XWDrawerAnimator.h │ ├── MJRefresh │ │ ├── MJRefresh │ │ │ ├── MJRefresh.bundle │ │ │ │ ├── arrow@2x.png │ │ │ │ ├── en.lproj │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── zh-Hans.lproj │ │ │ │ │ └── Localizable.strings │ │ │ │ └── zh-Hant.lproj │ │ │ │ │ └── Localizable.strings │ │ │ ├── Base │ │ │ │ ├── MJRefreshBackFooter.h │ │ │ │ ├── MJRefreshAutoFooter.h │ │ │ │ ├── MJRefreshHeader.h │ │ │ │ └── MJRefreshFooter.h │ │ │ ├── Custom │ │ │ │ ├── Footer │ │ │ │ │ ├── Auto │ │ │ │ │ │ ├── MJRefreshAutoNormalFooter.h │ │ │ │ │ │ ├── MJRefreshAutoGifFooter.h │ │ │ │ │ │ └── MJRefreshAutoStateFooter.h │ │ │ │ │ └── Back │ │ │ │ │ │ ├── MJRefreshBackNormalFooter.h │ │ │ │ │ │ ├── MJRefreshBackGifFooter.h │ │ │ │ │ │ └── MJRefreshBackStateFooter.h │ │ │ │ └── Header │ │ │ │ │ ├── MJRefreshNormalHeader.h │ │ │ │ │ ├── MJRefreshGifHeader.h │ │ │ │ │ └── MJRefreshStateHeader.h │ │ │ ├── NSBundle+MJRefresh.h │ │ │ ├── MJRefresh.h │ │ │ ├── UIView+MJExtension.h │ │ │ ├── UIScrollView+MJExtension.h │ │ │ ├── UIScrollView+MJRefresh.h │ │ │ └── UIView+MJExtension.m │ │ └── LICENSE │ ├── SVProgressHUD │ │ ├── SVProgressHUD │ │ │ ├── SVProgressHUD.bundle │ │ │ │ ├── error.png │ │ │ │ ├── info.png │ │ │ │ ├── error@2x.png │ │ │ │ ├── error@3x.png │ │ │ │ ├── info@2x.png │ │ │ │ ├── info@3x.png │ │ │ │ ├── success.png │ │ │ │ ├── angle-mask.png │ │ │ │ ├── success@2x.png │ │ │ │ ├── success@3x.png │ │ │ │ ├── angle-mask@2x.png │ │ │ │ └── angle-mask@3x.png │ │ │ ├── SVRadialGradientLayer.h │ │ │ ├── SVIndefiniteAnimatedView.h │ │ │ ├── SVProgressAnimatedView.h │ │ │ └── SVRadialGradientLayer.m │ │ └── LICENSE.txt │ ├── Masonry │ │ ├── Masonry │ │ │ ├── MASLayoutConstraint.m │ │ │ ├── NSLayoutConstraint+MASDebugAdditions.h │ │ │ ├── MASLayoutConstraint.h │ │ │ ├── MASCompositeConstraint.h │ │ │ ├── Masonry.h │ │ │ ├── ViewController+MASAdditions.h │ │ │ ├── NSArray+MASShorthandAdditions.h │ │ │ ├── MASViewAttribute.m │ │ │ ├── MASViewAttribute.h │ │ │ ├── ViewController+MASAdditions.m │ │ │ └── MASViewConstraint.h │ │ └── LICENSE │ ├── MJExtension │ │ ├── MJExtension │ │ │ ├── MJFoundation.h │ │ │ ├── MJExtension.h │ │ │ ├── MJPropertyKey.h │ │ │ ├── MJPropertyKey.m │ │ │ ├── MJExtensionConst.m │ │ │ ├── MJPropertyType.h │ │ │ ├── NSObject+MJCoding.h │ │ │ ├── NSString+MJExtension.h │ │ │ ├── MJProperty.h │ │ │ └── MJFoundation.m │ │ └── LICENSE │ ├── SDCycleScrollView │ │ ├── SDCycleScrollView │ │ │ └── Lib │ │ │ │ └── SDCycleScrollView │ │ │ │ ├── PageControl │ │ │ │ ├── TADotView.h │ │ │ │ ├── TAAnimatedDotView.h │ │ │ │ ├── TAAbstractDotView.h │ │ │ │ ├── TAAbstractDotView.m │ │ │ │ └── TADotView.m │ │ │ │ ├── UIView+SDExtension.h │ │ │ │ └── SDCollectionViewCell.h │ │ └── LICENSE │ ├── SDWebImage │ │ ├── SDWebImage │ │ │ ├── UIImage+MultiFormat.h │ │ │ ├── SDWebImageOperation.h │ │ │ ├── UIImage+GIF.h │ │ │ ├── SDWebImageDecoder.h │ │ │ ├── NSData+ImageContentType.h │ │ │ ├── UIView+WebCacheOperation.h │ │ │ ├── NSData+ImageContentType.m │ │ │ └── SDWebImageCompat.m │ │ └── LICENSE │ └── TXScrollLabelView │ │ ├── TXScrollLabelView │ │ └── UIView+TXFrame.h │ │ └── LICENSE ├── MainVC │ ├── M │ │ ├── DCBaseItem.m │ │ ├── DCStore_attr.m │ │ ├── DCStore_list.m │ │ ├── DCStore_attr.h │ │ ├── DCStore_list.h │ │ ├── DCBaseItem.h │ │ ├── DCStoreAttribute.h │ │ ├── DCStoreAttribute.m │ │ ├── ProductModel.h │ │ └── ProductModel.m │ ├── C │ │ ├── ProductDetailVC │ │ │ ├── Pay │ │ │ │ ├── DCPayWayCell.h │ │ │ │ ├── DCUserPayViewController.h │ │ │ │ ├── DCSureOrderViewController.h │ │ │ │ └── DCPayWayCell.m │ │ │ ├── DCBaseViewController.h │ │ │ ├── DCShareViewController.h │ │ │ ├── DCStoreCommentViewController.h │ │ │ ├── DCStoreIntroduceViewController.h │ │ │ ├── DCStoreCommentViewController.m │ │ │ ├── DCStoreIntroduceViewController.m │ │ │ ├── DCStoreItemSelectViewController.h │ │ │ ├── ProductDetailVC.h │ │ │ └── DCStoreMainViewController.h │ │ ├── HomeVC │ │ │ ├── ViewController.h │ │ │ └── DCWebViewController.h │ │ └── ScreenVC │ │ │ └── ScreenVC.h │ └── V │ │ ├── HomeView │ │ ├── DCStoreItemCell.h │ │ └── DCStoreItemCell.m │ │ └── ProductDetailView │ │ ├── DCBaseServiceCell.h │ │ ├── DCAdExCell.h │ │ ├── DCIntroduceSelectCell.h │ │ ├── DCAdExCell.m │ │ ├── DCIntroduceSelectCell.m │ │ ├── DCStoreHeadPriceCell.m │ │ ├── DCStoreHeadPriceCell.h │ │ ├── DCBaseServiceCell.m │ │ └── DCNavigationTabBar.h ├── Tools │ ├── DCCustomButton.h │ ├── DCStoreButton.h │ ├── DCConsts.m │ ├── AlertViewManager │ │ └── UIPlaceHolderTextView │ │ │ └── UIPlaceHolderTextView.h │ ├── UIBarButtonItem+DCBarButtonItem.h │ ├── DCSpeedy.h │ ├── UIView+DCExtension.h │ ├── DCConsts.h │ ├── DCShopItemView.h │ ├── DCStoreButton.m │ ├── DCCustomButton.m │ └── DCSpeedy.m ├── MainSet │ ├── MainNavSet.h │ ├── MainTabSet.h │ └── AppDelegate.h ├── LYFStoreDemo.xcdatamodeld │ ├── .xccurrentversion │ └── LYFStoreDemo.xcdatamodel │ │ └── contents ├── main.m ├── Plist │ ├── StoreBase.plist │ ├── ShopItemA.plist │ ├── ShopItemB.plist │ └── MallShops.plist ├── Info.plist └── Base.lproj │ ├── Main.storyboard │ └── LaunchScreen.storyboard ├── LYFStoreDemo.xcodeproj ├── xcuserdata │ └── Lyf.xcuserdatad │ │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ └── xcschememanagement.plist └── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcuserdata │ └── Lyf.xcuserdatad │ └── UserInterfaceState.xcuserstate ├── README.md ├── LYFStoreDemoTests ├── Info.plist └── LYFStoreDemoTests.m └── LYFStoreDemoUITests ├── Info.plist └── LYFStoreDemoUITests.m /Show/pay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/Show/pay.png -------------------------------------------------------------------------------- /Show/detail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/Show/detail.png -------------------------------------------------------------------------------- /Show/order.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/Show/order.png -------------------------------------------------------------------------------- /Show/screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/Show/screen.png -------------------------------------------------------------------------------- /Show/zhuye.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/Show/zhuye.png -------------------------------------------------------------------------------- /Show/shopcart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/Show/shopcart.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Nav/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Pay/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Share/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Shop/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Tab/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/Resoures/line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Frameworks/XWTransition/Resoures/line.png -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/Resoures/mask.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Frameworks/XWTransition/Resoures/mask.jpg -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/Resoures/restrictedshine.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Frameworks/XWTransition/Resoures/restrictedshine.tiff -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Pay/wx_.imageset/wx_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Pay/wx_.imageset/wx_@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Pay/yl_.imageset/yl_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Pay/yl_.imageset/yl_@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/xiaomi6.imageset/xiaomi6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/xiaomi6.imageset/xiaomi6.png -------------------------------------------------------------------------------- /LYFStoreDemo.xcodeproj/xcuserdata/Lyf.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/good.imageset/good@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/good.imageset/good@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/good.imageset/good@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/good.imageset/good@3x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/omit.imageset/omit@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/omit.imageset/omit@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/post.imageset/post@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/post.imageset/post@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/post.imageset/post@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/post.imageset/post@3x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/sale.imageset/sale@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/sale.imageset/sale@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/sale.imageset/sale@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/sale.imageset/sale@3x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Nav/back.imageset/back@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Nav/back.imageset/back@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Nav/back.imageset/back@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Nav/back.imageset/back@3x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Pay/zfb_.imageset/zfb_@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Pay/zfb_.imageset/zfb_@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/MJRefresh/MJRefresh/MJRefresh.bundle/arrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Frameworks/MJRefresh/MJRefresh/MJRefresh.bundle/arrow@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/carry.imageset/carry@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/carry.imageset/carry@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/carry.imageset/carry@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/carry.imageset/carry@3x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Pay/payWay.imageset/payWay@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Pay/payWay.imageset/payWay@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/address.imageset/address@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/address.imageset/address@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/custom.imageset/custom@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/custom.imageset/custom@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/more_ad.imageset/more_ad@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/more_ad.imageset/more_ad@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/notice.imageset/notice@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/notice.imageset/notice@3x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/redAdd.imageset/redAdd@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/redAdd.imageset/redAdd@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Share/wechat.imageset/wechat@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Share/wechat.imageset/wechat@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Share/wechat.imageset/wechat@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Share/wechat.imageset/wechat@3x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/comments.imageset/comments@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/comments.imageset/comments@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/comments.imageset/comments@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/comments.imageset/comments@3x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/mainHead.imageset/mainHead@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/mainHead.imageset/mainHead@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Pay/payWay_S.imageset/payWay_S@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Pay/payWay_S.imageset/payWay_S@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Share/tencent.imageset/tencent@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Share/tencent.imageset/tencent@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Share/tencent.imageset/tencent@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Share/tencent.imageset/tencent@3x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/shareview.imageset/shareview@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/shareview.imageset/shareview@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Shop/shopImage01.imageset/shopImage01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Shop/shopImage01.imageset/shopImage01.jpg -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Shop/shopImage02.imageset/shopImage02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Shop/shopImage02.imageset/shopImage02.jpg -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Shop/shopImage03.imageset/shopImage03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Shop/shopImage03.imageset/shopImage03.jpg -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Frameworks/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/error.png -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Frameworks/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/info.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/collection.imageset/collection@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/collection.imageset/collection@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/error@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Frameworks/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/error@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/error@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Frameworks/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/error@3x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/info@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Frameworks/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/info@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/info@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Frameworks/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/info@3x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Frameworks/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/success.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/collection_N.imageset/collection_N@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/collection_N.imageset/collection_N@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/collection_N.imageset/collection_N@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/collection_N.imageset/collection_N@3x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/collection_S.imageset/collection_S@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/collection_S.imageset/collection_S@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/collection_S.imageset/collection_S@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/collection_S.imageset/collection_S@3x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/comments on.imageset/comments on@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/comments on.imageset/comments on@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/comments on.imageset/comments on@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/comments on.imageset/comments on@3x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/angle-mask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Frameworks/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/angle-mask.png -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/success@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Frameworks/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/success@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/success@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Frameworks/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/success@3x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/buyDismiss.imageset/逆购网app产品说明选择颜色尺寸弹窗.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/buyDismiss.imageset/逆购网app产品说明选择颜色尺寸弹窗.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/collection on.imageset/collection on@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/collection on.imageset/collection on@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/MJRefresh/MJRefresh/MJRefresh.bundle/en.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Frameworks/MJRefresh/MJRefresh/MJRefresh.bundle/en.lproj/Localizable.strings -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/angle-mask@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Frameworks/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/angle-mask@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/angle-mask@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Frameworks/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle/angle-mask@3x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/collectionview.imageset/collectionview@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/collectionview.imageset/collectionview@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/pageControlDot.imageset/pageControlDot@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/pageControlDot.imageset/pageControlDot@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/pageControlDot.imageset/pageControlDot@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/pageControlDot.imageset/pageControlDot@3x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Share/wechat friend.imageset/wechat friend@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Share/wechat friend.imageset/wechat friend@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Share/wechat friend.imageset/wechat friend@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Share/wechat friend.imageset/wechat friend@3x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Tab/home_home_tab.imageset/home_home_tab~iphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Tab/home_home_tab.imageset/home_home_tab~iphone.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/add shopping on.imageset/add shopping on@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/add shopping on.imageset/add shopping on@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/add shopping on.imageset/add shopping on@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/add shopping on.imageset/add shopping on@3x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hans.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Frameworks/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hans.lproj/Localizable.strings -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Tab/home_home_tab.imageset/home_home_tab@2x~iphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Tab/home_home_tab.imageset/home_home_tab@2x~iphone.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Tab/home_home_tab.imageset/home_home_tab@3x~iphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Tab/home_home_tab.imageset/home_home_tab@3x~iphone.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Tab/home_home_tab_s.imageset/home_home_tab_s~iphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Tab/home_home_tab_s.imageset/home_home_tab_s~iphone.png -------------------------------------------------------------------------------- /LYFStoreDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /LYFStoreDemo.xcodeproj/project.xcworkspace/xcuserdata/Lyf.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo.xcodeproj/project.xcworkspace/xcuserdata/Lyf.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/orderShopUnderLine.imageset/orderShopUnderLine@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/orderShopUnderLine.imageset/orderShopUnderLine@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Share/wechat collection.imageset/wechat collection@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Share/wechat collection.imageset/wechat collection@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Share/wechat collection.imageset/wechat collection@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Share/wechat collection.imageset/wechat collection@3x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Tab/home_home_tab_s.imageset/home_home_tab_s@2x~iphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Tab/home_home_tab_s.imageset/home_home_tab_s@2x~iphone.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Tab/home_home_tab_s.imageset/home_home_tab_s@3x~iphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Tab/home_home_tab_s.imageset/home_home_tab_s@3x~iphone.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/pageControlCurrentDot.imageset/pageControlCurrentDot@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/pageControlCurrentDot.imageset/pageControlCurrentDot@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/pageControlCurrentDot.imageset/pageControlCurrentDot@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Main/pageControlCurrentDot.imageset/pageControlCurrentDot@3x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Nav/navigationButtonReturnClick.imageset/navigationButtonReturnClick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Nav/navigationButtonReturnClick.imageset/navigationButtonReturnClick.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Nav/navigationButtonReturnClick.imageset/navigationButtonReturnClick@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Nav/navigationButtonReturnClick.imageset/navigationButtonReturnClick@2x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Nav/navigationButtonReturnClick.imageset/navigationButtonReturnClick@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Nav/navigationButtonReturnClick.imageset/navigationButtonReturnClick@3x.png -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Nav/navigationbarBackgroundWhite.imageset/navigationbarBackgroundWhite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sadrose/LYFStore/HEAD/LYFStoreDemo/Assets.xcassets/material(素材)/Nav/navigationbarBackgroundWhite.imageset/navigationbarBackgroundWhite.png -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/M/DCBaseItem.m: -------------------------------------------------------------------------------- 1 | // 2 | // DCBaseItem.m 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/22. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import "DCBaseItem.h" 10 | 11 | @implementation DCBaseItem 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/M/DCStore_attr.m: -------------------------------------------------------------------------------- 1 | // 2 | // DCStore_attr.m 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/20. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import "DCStore_attr.h" 10 | 11 | @implementation DCStore_attr 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/M/DCStore_list.m: -------------------------------------------------------------------------------- 1 | // 2 | // DCStore_list.m 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/20. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import "DCStore_list.h" 10 | 11 | @implementation DCStore_list 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LYFStoreDemo/Tools/DCCustomButton.h: -------------------------------------------------------------------------------- 1 | // 2 | // DCCustomButton.h 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/20. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface DCCustomButton : UIButton 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LYFStoreDemo/Tools/DCStoreButton.h: -------------------------------------------------------------------------------- 1 | // 2 | // DCStoreButton.h 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/22. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface DCStoreButton : UIButton 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LYFStoreDemo/MainSet/MainNavSet.h: -------------------------------------------------------------------------------- 1 | // 2 | // MainNavSet.h 3 | // LYFStoreDemo 4 | // 5 | // Created by Lyf on 17/4/19. 6 | // Copyright © 2017年 com.FLY.lyf. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MainNavSet : UINavigationController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LYFStoreDemo/MainSet/MainTabSet.h: -------------------------------------------------------------------------------- 1 | // 2 | // MainTabSet.h 3 | // LYFStoreDemo 4 | // 5 | // Created by Lyf on 17/4/19. 6 | // Copyright © 2017年 com.FLY.lyf. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MainTabSet : UITabBarController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/C/ProductDetailVC/Pay/DCPayWayCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // DCPayWayCell.h 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/4/9. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface DCPayWayCell : UITableViewCell 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/C/HomeVC/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // LYFStoreDemo 4 | // 5 | // Created by Lyf on 17/4/19. 6 | // Copyright © 2017年 com.FLY.lyf. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/C/ProductDetailVC/DCBaseViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // DCBaseViewController.h 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/22. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface DCBaseViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LYFStoreDemo/LYFStoreDemo.xcdatamodeld/.xccurrentversion: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | _XCCurrentVersionName 6 | LYFStoreDemo.xcdatamodel 7 | 8 | 9 | -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/C/ProductDetailVC/DCShareViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // DCShareViewController.h 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/4/14. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface DCShareViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/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 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/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 | -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/C/ProductDetailVC/DCStoreCommentViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // DCStoreCommentViewController.h 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/21. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface DCStoreCommentViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/C/ProductDetailVC/DCStoreIntroduceViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // DCStoreIntroduceViewController.h 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/21. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface DCStoreIntroduceViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/MJExtension/MJExtension/MJFoundation.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJFoundation.h 3 | // MJExtensionExample 4 | // 5 | // Created by MJ Lee on 14/7/16. 6 | // Copyright (c) 2014年 小码哥. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MJFoundation : NSObject 12 | + (BOOL)isClassFromFoundation:(Class)c; 13 | @end 14 | -------------------------------------------------------------------------------- /LYFStoreDemo/LYFStoreDemo.xcdatamodeld/LYFStoreDemo.xcdatamodel/contents: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/M/DCStore_attr.h: -------------------------------------------------------------------------------- 1 | // 2 | // DCStore_attr.h 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/20. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface DCStore_attr : NSObject 12 | 13 | /** 名字 */ 14 | @property (nonatomic, copy) NSString *attrname; 15 | 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/PageControl/TADotView.h: -------------------------------------------------------------------------------- 1 | // 2 | // TADotView.h 3 | // TAPageControl 4 | // 5 | // Created by Tanguy Aladenise on 2015-01-22. 6 | // Copyright (c) 2015 Tanguy Aladenise. All rights reserved. 7 | // 8 | 9 | #import "TAAbstractDotView.h" 10 | 11 | @interface TADotView : TAAbstractDotView 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/SDWebImage/SDWebImage/UIImage+MultiFormat.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+MultiFormat.h 3 | // SDWebImage 4 | // 5 | // Created by Olivier Poitrey on 07/06/13. 6 | // Copyright (c) 2013 Dailymotion. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (MultiFormat) 12 | 13 | + (UIImage *)sd_imageWithData:(NSData *)data; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/C/HomeVC/DCWebViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // DCWebViewController.h 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/20. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface DCWebViewController : UIViewController 12 | 13 | 14 | /* 链接地址 */ 15 | @property (strong , nonatomic)NSString *url; 16 | 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /LYFStoreDemo/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // LYFStoreDemo 4 | // 5 | // Created by Lyf on 17/4/19. 6 | // Copyright © 2017年 com.FLY.lyf. 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 | -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/C/ProductDetailVC/Pay/DCUserPayViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // DCUserPayViewController.h 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/4/9. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface DCUserPayViewController : UIViewController 12 | 13 | /* 最后付款金额 */ 14 | @property (assign ,nonatomic) float lastPayMoney; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/V/HomeView/DCStoreItemCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // DCStoreItemCell.h 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/20. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class ProductModel; 12 | 13 | @interface DCStoreItemCell : UITableViewCell 14 | 15 | /* 商品属性 */ 16 | @property (strong , nonatomic)ProductModel *storeItem; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/SVProgressHUD/SVProgressHUD/SVRadialGradientLayer.h: -------------------------------------------------------------------------------- 1 | // 2 | // SVRadialGradientLayer.h 3 | // SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD 4 | // 5 | // Copyright (c) 2014-2016 Tobias Tiemerding. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface SVRadialGradientLayer : CALayer 11 | 12 | @property (nonatomic) CGPoint gradientCenter; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/V/ProductDetailView/DCBaseServiceCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // DCBaseServiceCell.h 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/22. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class DCBaseItem; 12 | 13 | @interface DCBaseServiceCell : UITableViewCell 14 | 15 | /* 基础服务cell */ 16 | @property (strong , nonatomic)DCBaseItem *baseItem; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/Category/UIView+Snapshot.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+Snapshot.h 3 | // XWTransitionDemo 4 | // 5 | // Created by 肖文 on 2016/12/16. 6 | // Copyright © 2016年 wazrx. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIView (Snapshot) 12 | 13 | @property (nonatomic, readonly) UIImage *snapshotImage; 14 | @property (nonatomic, strong) UIImage *contentImage; 15 | 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/M/DCStore_list.h: -------------------------------------------------------------------------------- 1 | // 2 | // DCStore_list.h 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/20. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface DCStore_list : NSObject 12 | 13 | /** 类型 */ 14 | @property (nonatomic, copy) NSString *infoname; 15 | /** 额外价格 */ 16 | @property (nonatomic, copy) NSString *plusprice; 17 | 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/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 | -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Pay/wx_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "wx_@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Pay/yl_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "yl_@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Pay/zfb_.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "zfb_@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/xiaomi6.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "xiaomi6.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/custom.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "custom@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/notice.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "notice@3x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/omit.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "omit@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/redAdd.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "redAdd@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Pay/payWay.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "payWay@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/address.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "address@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/mainHead.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "mainHead@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/more_ad.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "more_ad@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Pay/payWay_S.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "payWay_S@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/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 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/PageControl/TAAnimatedDotView.h: -------------------------------------------------------------------------------- 1 | // 2 | // TAAnimatedDotView.h 3 | // TAPageControl 4 | // 5 | // Created by Tanguy Aladenise on 2015-01-22. 6 | // Copyright (c) 2015 Tanguy Aladenise. All rights reserved. 7 | // 8 | 9 | #import "TAAbstractDotView.h" 10 | 11 | @interface TAAnimatedDotView : TAAbstractDotView 12 | 13 | @property (nonatomic, strong) UIColor *dotColor; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /LYFStoreDemo/Tools/DCConsts.m: -------------------------------------------------------------------------------- 1 | // 2 | // DCConsts.m 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/20. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import "DCConsts.h" 10 | 11 | @implementation DCConsts 12 | 13 | /** 常量 */ 14 | CGFloat const DCMargin = 10; 15 | 16 | /** 立即购买点击退出当前界面通知 */ 17 | NSString * const DCBuyButtonDidDismissClickNotificationCenter = @"DCBuyButtonDidDismissClickNotificationCenter"; 18 | 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/collection.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "collection@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/shareview.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "shareview@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Shop/shopImage01.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "shopImage01.jpg", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Shop/shopImage02.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "shopImage02.jpg", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Shop/shopImage03.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "shopImage03.jpg", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/buyDismiss.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "逆购网app产品说明选择颜色尺寸弹窗.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/collection on.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "collection on@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/collectionview.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "collectionview@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/orderShopUnderLine.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "orderShopUnderLine@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/M/DCBaseItem.h: -------------------------------------------------------------------------------- 1 | // 2 | // DCBaseItem.h 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/22. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface DCBaseItem : NSObject 12 | 13 | /** 头像 */ 14 | @property (nonatomic, copy) NSString *imgs; 15 | /** 标题 */ 16 | @property (nonatomic, copy) NSString *title; 17 | /** 内容 */ 18 | @property (nonatomic, copy) NSString *content; 19 | 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # LYFStore 2 | 商城APPdemo 3 | 4 | ![](https://github.com/sadrose/LYFStore/blob/master/Show/zhuye.png) 5 | ![](https://github.com/sadrose/LYFStore/blob/master/Show/shopcart.png) 6 | 7 | ![](https://github.com/sadrose/LYFStore/blob/master/Show/screen.png) 8 | ![](https://github.com/sadrose/LYFStore/blob/master/Show/pay.png) 9 | 10 | ![](https://github.com/sadrose/LYFStore/blob/master/Show/order.png) 11 | ![](https://github.com/sadrose/LYFStore/blob/master/Show/detail.png) 12 | 13 | 14 | -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/good.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "good@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "good@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/post.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "post@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "post@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/sale.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "sale@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "sale@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Nav/back.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "back@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "back@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/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 | -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/carry.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "carry@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "carry@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Nav/navigationbarBackgroundWhite.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "navigationbarBackgroundWhite.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/M/DCStoreAttribute.h: -------------------------------------------------------------------------------- 1 | // 2 | // DCStoreAttribute.h 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/20. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class DCStore_attr,DCStore_list; 12 | 13 | @interface DCStoreAttribute : NSObject 14 | 15 | /* 名字 */ 16 | @property (strong , nonatomic)DCStore_attr *attr; 17 | /* 数组 */ 18 | @property (strong , nonatomic)NSArray *list; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/V/ProductDetailView/DCAdExCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // DCAdExCell.h 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/22. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface DCAdExCell : UITableViewCell 12 | 13 | @property (weak, nonatomic) IBOutlet UILabel *expressageLabel; 14 | @property (weak, nonatomic) IBOutlet UILabel *saleCountLabel; 15 | @property (weak, nonatomic) IBOutlet UILabel *siteLabel; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Share/tencent.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "tencent@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "tencent@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Share/wechat.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "wechat@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "wechat@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/comments.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "comments@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "comments@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/M/DCStoreAttribute.m: -------------------------------------------------------------------------------- 1 | // 2 | // DCStoreAttribute.m 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/20. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import "DCStoreAttribute.h" 10 | #import "DCStore_list.h" 11 | 12 | #import "MJExtension.h" 13 | 14 | 15 | @implementation DCStoreAttribute 16 | 17 | +(NSDictionary *)mj_objectClassInArray 18 | { 19 | return @{ 20 | @"list" : @"DCStore_list" 21 | }; 22 | } 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/SDWebImage/SDWebImage/UIImage+GIF.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+GIF.h 3 | // LBGIFImage 4 | // 5 | // Created by Laurin Brandner on 06.01.12. 6 | // Copyright (c) 2012 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (GIF) 12 | 13 | + (UIImage *)sd_animatedGIFNamed:(NSString *)name; 14 | 15 | + (UIImage *)sd_animatedGIFWithData:(NSData *)data; 16 | 17 | - (UIImage *)sd_animatedImageByScalingAndCroppingToSize:(CGSize)size; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/collection_N.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "collection_N@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "collection_N@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/collection_S.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "collection_S@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "collection_S@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/comments on.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "comments on@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "comments on@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/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 | -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/pageControlDot.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "pageControlDot@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "pageControlDot@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Share/wechat friend.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "wechat friend@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "wechat friend@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/XWFilterAnimator/XWFilterAnimator+XWMask.h: -------------------------------------------------------------------------------- 1 | // 2 | // XWFilterAnimator+XWMask.h 3 | // XWTransitionDemo 4 | // 5 | // Created by wazrx on 16/6/17. 6 | // Copyright © 2016年 wazrx. All rights reserved. 7 | // 8 | 9 | #import "XWFilterAnimator.h" 10 | 11 | @interface XWFilterAnimator (XWMask) 12 | 13 | - (void)xw_maskAnimationFor:(XWFilterTransitionView *)filterView transitionContext:(id)transitionContext duration:(NSTimeInterval)duration; 14 | @end 15 | -------------------------------------------------------------------------------- /LYFStoreDemo/MainSet/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // LYFStoreDemo 4 | // 5 | // Created by Lyf on 17/4/19. 6 | // Copyright © 2017年 com.FLY.lyf. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface AppDelegate : UIResponder 13 | 14 | @property (strong, nonatomic) UIWindow *window; 15 | 16 | @property (readonly, strong) NSPersistentContainer *persistentContainer; 17 | 18 | - (void)saveContext; 19 | 20 | 21 | @end 22 | 23 | -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/add shopping on.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "add shopping on@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "add shopping on@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/XWFilterAnimator/XWFilterAnimator+XWFlash.h: -------------------------------------------------------------------------------- 1 | // 2 | // XWFilterAnimator+XWFlash.h 3 | // XWTransitionDemo 4 | // 5 | // Created by wazrx on 16/6/19. 6 | // Copyright © 2016年 wazrx. All rights reserved. 7 | // 8 | 9 | #import "XWFilterAnimator.h" 10 | 11 | @interface XWFilterAnimator (XWFlash) 12 | 13 | - (void)xw_flashAnimationFor:(XWFilterTransitionView *)filterView transitionContext:(id)transitionContext duration:(NSTimeInterval)duration; 14 | @end 15 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/XWFilterAnimator/XWFilterAnimator+XWRipple.h: -------------------------------------------------------------------------------- 1 | // 2 | // XWFilterAnimator+XWRipple.h 3 | // XWTransitionDemo 4 | // 5 | // Created by wazrx on 16/6/19. 6 | // Copyright © 2016年 wazrx. All rights reserved. 7 | // 8 | 9 | #import "XWFilterAnimator.h" 10 | 11 | @interface XWFilterAnimator (XWRipple) 12 | 13 | - (void)xw_rippleAnimationFor:(XWFilterTransitionView *)filterView transitionContext:(id)transitionContext duration:(NSTimeInterval)duration; 14 | @end 15 | -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Share/wechat collection.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "wechat collection@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "wechat collection@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/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 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/XWFilterAnimator/XWFilterAnimator+XWBoxBlur.h: -------------------------------------------------------------------------------- 1 | // 2 | // XWFilterAnimator+XWBoxBlur.h 3 | // XWTransitionDemo 4 | // 5 | // Created by wazrx on 16/6/17. 6 | // Copyright © 2016年 wazrx. All rights reserved. 7 | // 8 | 9 | #import "XWFilterAnimator.h" 10 | 11 | @interface XWFilterAnimator (XWBoxBlur) 12 | - (void)xw_boxBlurAnimationFor:(XWFilterTransitionView *)filterView transitionContext:(id)transitionContext duration:(NSTimeInterval)duration; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/V/ProductDetailView/DCIntroduceSelectCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // DCIntroduceSelectCell.h 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/22. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface DCIntroduceSelectCell : UITableViewCell 12 | 13 | @property (weak, nonatomic) IBOutlet UIButton *markButton; 14 | @property (weak, nonatomic) IBOutlet UILabel *contentLabel; 15 | @property (weak, nonatomic) IBOutlet UIButton *canClickButton; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/XWFilterAnimator/XWFilterAnimator+XWMod.h: -------------------------------------------------------------------------------- 1 | // 2 | // XWFilterAnimator+XWMod.h 3 | // XWTransitionDemo 4 | // 5 | // Created by wazrx on 16/6/19. 6 | // Copyright © 2016年 wazrx. All rights reserved. 7 | // 8 | 9 | #import "XWFilterAnimator.h" 10 | 11 | @interface XWFilterAnimator (XWMod) 12 | 13 | - (void)xw_modAnimationFor:(XWFilterTransitionView *)filterView transitionContext:(id)transitionContext duration:(NSTimeInterval)duration toFlag:(BOOL)flag; 14 | @end 15 | -------------------------------------------------------------------------------- /LYFStoreDemo/Tools/AlertViewManager/UIPlaceHolderTextView/UIPlaceHolderTextView.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIPlaceHolderTextView.h 3 | // MobileProject 带有提示输入的TextView 4 | // 5 | // Created by wujunyang on 16/1/14. 6 | // Copyright © 2016年 wujunyang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIPlaceHolderTextView : UITextView 12 | @property (nonatomic, strong) NSString *placeholder; 13 | @property (nonatomic, strong) UIColor *placeholderColor; 14 | 15 | -(void)textChanged:(NSNotification*)notification; 16 | @end 17 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/XWCoolAnimator/XWCoolAnimator+XWExplode.h: -------------------------------------------------------------------------------- 1 | // 2 | // XWCoolAnimator+XWExplode.h 3 | // XWTransitionDemo 4 | // 5 | // Created by wazrx on 16/6/14. 6 | // Copyright © 2016年 wazrx. All rights reserved. 7 | // 8 | 9 | #import "XWCoolAnimator.h" 10 | 11 | @interface XWCoolAnimator (XWExplode) 12 | 13 | - (void)xw_setExplodeToAnimation:(id)transitionContext; 14 | 15 | - (void)xw_setExplodeBackAnimation:(id)transitionContext; 16 | @end 17 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/XWCoolAnimator/XWCoolAnimator+XWPageFlip.h: -------------------------------------------------------------------------------- 1 | // 2 | // XWCoolAnimator+XWPageFlip.h 3 | // XWTransitionDemo 4 | // 5 | // Created by wazrx on 16/6/13. 6 | // Copyright © 2016年 wazrx. All rights reserved. 7 | // 8 | 9 | #import "XWCoolAnimator.h" 10 | 11 | @interface XWCoolAnimator (XWPageFlip) 12 | - (void)xw_setPageFlipToAnimation:(id)transitionContext; 13 | 14 | - (void)xw_setPageFlipBackAnimation:(id)transitionContext; 15 | @end 16 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/XWCoolAnimator/XWCoolAnimator+XWPortal.h: -------------------------------------------------------------------------------- 1 | // 2 | // XWCoolAnimator+XWPortal.h 3 | // XWTransitionDemo 4 | // 5 | // Created by wazrx on 16/6/16. 6 | // Copyright © 2016年 wazrx. All rights reserved. 7 | // 8 | 9 | #import "XWCoolAnimator.h" 10 | 11 | @interface XWCoolAnimator (XWPortal) 12 | 13 | - (void)xw_setPortalToAnimation:(id)transitionContext; 14 | 15 | - (void)xw_setPortalBackAnimation:(id)transitionContext; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/XWFilterAnimator/XWFilterAnimator+XWSwipe.h: -------------------------------------------------------------------------------- 1 | // 2 | // XWFilterAnimator+XWSwipe.h 3 | // XWTransitionDemo 4 | // 5 | // Created by wazrx on 16/6/17. 6 | // Copyright © 2016年 wazrx. All rights reserved. 7 | // 8 | 9 | #import "XWFilterAnimator.h" 10 | 11 | @interface XWFilterAnimator (XWSwipe) 12 | 13 | - (void)xw_swipeAnimationFor:(XWFilterTransitionView *)filterView transitionContext:(id)transitionContext duration:(NSTimeInterval)duration toFlag:(BOOL)flag; 14 | @end 15 | -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Main/pageControlCurrentDot.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "pageControlCurrentDot@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "pageControlCurrentDot@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/SVProgressHUD/SVProgressHUD/SVIndefiniteAnimatedView.h: -------------------------------------------------------------------------------- 1 | // 2 | // SVIndefiniteAnimatedView.h 3 | // SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD 4 | // 5 | // Copyright (c) 2014-2016 Guillaume Campagna. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface SVIndefiniteAnimatedView : UIView 11 | 12 | @property (nonatomic, assign) CGFloat strokeThickness; 13 | @property (nonatomic, assign) CGFloat radius; 14 | @property (nonatomic, strong) UIColor *strokeColor; 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/XWFilterAnimator/XWFilterAnimator+XWPageCurl.h: -------------------------------------------------------------------------------- 1 | // 2 | // XWFilterAnimator+XWPageCurl.h 3 | // XWTransitionDemo 4 | // 5 | // Created by wazrx on 16/6/19. 6 | // Copyright © 2016年 wazrx. All rights reserved. 7 | // 8 | 9 | #import "XWFilterAnimator.h" 10 | @interface XWFilterAnimator (XWPageCurl) 11 | 12 | - (void)xw_pageCurlAnimationFor:(XWFilterTransitionView *)filterView transitionContext:(id)transitionContext duration:(NSTimeInterval)duration toFlag:(BOOL)flag; 13 | @end 14 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/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 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/XWFilterAnimator/XWFilterAnimator+XWBarSwipe.h: -------------------------------------------------------------------------------- 1 | // 2 | // XWFilterAnimator+XWBarSwipe.h 3 | // XWTransitionDemo 4 | // 5 | // Created by wazrx on 16/6/19. 6 | // Copyright © 2016年 wazrx. All rights reserved. 7 | // 8 | 9 | #import "XWFilterAnimator.h" 10 | 11 | @interface XWFilterAnimator (XWBarSwipe) 12 | 13 | - (void)xw_barSwipeAnimationFor:(XWFilterTransitionView *)filterView transitionContext:(id)transitionContext duration:(NSTimeInterval)duration toFlag:(BOOL)flag; 14 | @end 15 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/XWFilterAnimator/XWFilterAnimator+XWCopyMachine.h: -------------------------------------------------------------------------------- 1 | // 2 | // XWFilterAnimator+XWCopyMachine.h 3 | // XWTransitionDemo 4 | // 5 | // Created by wazrx on 16/6/19. 6 | // Copyright © 2016年 wazrx. All rights reserved. 7 | // 8 | 9 | #import "XWFilterAnimator.h" 10 | 11 | @interface XWFilterAnimator (XWCopyMachine) 12 | - (void)xw_copyMachineAnimationFor:(XWFilterTransitionView *)filterView transitionContext:(id)transitionContext duration:(NSTimeInterval)duration toFlag:(BOOL)flag; 13 | @end 14 | -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/C/ProductDetailVC/DCStoreCommentViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // DCStoreCommentViewController.m 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/21. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import "DCStoreCommentViewController.h" 10 | 11 | @interface DCStoreCommentViewController () 12 | 13 | @end 14 | 15 | @implementation DCStoreCommentViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | self.view.backgroundColor = [UIColor whiteColor]; 20 | } 21 | 22 | 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/XWCoolAnimator/XWCoolAnimator+XWFold.h: -------------------------------------------------------------------------------- 1 | // 2 | // XWCoolAnimator+XWFold.h 3 | // XWTransitionDemo 4 | // 5 | // Created by wazrx on 16/6/13. 6 | // Copyright © 2016年 wazrx. All rights reserved. 7 | // 8 | 9 | #import "XWCoolAnimator.h" 10 | 11 | @interface XWCoolAnimator (XWFold) 12 | 13 | - (void)xw_setFoldToAnimation:(id)transitionContext leftFlag:(BOOL)left; 14 | 15 | - (void)xw_setFoldBackAnimation:(id)transitionContext leftFlag:(BOOL)left; 16 | @end 17 | -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/C/ProductDetailVC/DCStoreIntroduceViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // DCStoreIntroduceViewController.m 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/21. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import "DCStoreIntroduceViewController.h" 10 | 11 | @interface DCStoreIntroduceViewController () 12 | 13 | @end 14 | 15 | @implementation DCStoreIntroduceViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | self.view.backgroundColor = [UIColor whiteColor]; 20 | } 21 | 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/SVProgressHUD/SVProgressHUD/SVProgressAnimatedView.h: -------------------------------------------------------------------------------- 1 | // 2 | // SVProgressAnimatedView.h 3 | // SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD 4 | // 5 | // Copyright (c) 2016 Tobias Tiemerding. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface SVProgressAnimatedView : UIView 11 | 12 | @property (nonatomic, assign) CGFloat radius; 13 | @property (nonatomic, assign) CGFloat strokeThickness; 14 | @property (nonatomic, strong) UIColor *strokeColor; 15 | @property (nonatomic, assign) CGFloat strokeEnd; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/V/ProductDetailView/DCAdExCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // DCAdExCell.m 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/22. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import "DCAdExCell.h" 10 | 11 | @implementation DCAdExCell 12 | 13 | - (void)awakeFromNib { 14 | [super awakeFromNib]; 15 | // Initialization code 16 | } 17 | 18 | - (void)setSelected:(BOOL)selected animated:(BOOL)animated { 19 | [super setSelected:selected animated:animated]; 20 | 21 | // Configure the view for the selected state 22 | } 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/SDWebImage/SDWebImage/SDWebImageDecoder.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * Created by james on 9/28/11. 6 | * 7 | * For the full copyright and license information, please view the LICENSE 8 | * file that was distributed with this source code. 9 | */ 10 | 11 | #import 12 | #import "SDWebImageCompat.h" 13 | 14 | @interface UIImage (ForceDecode) 15 | 16 | + (UIImage *)decodedImageWithImage:(UIImage *)image; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/MJExtension/MJExtension/MJExtension.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJExtension.h 3 | // MJExtension 4 | // 5 | // Created by mj on 14-1-15. 6 | // Copyright (c) 2014年 小码哥. All rights reserved. 7 | // 代码地址:https://github.com/CoderMJLee/MJExtension 8 | // 代码地址:http://code4app.com/ios/%E5%AD%97%E5%85%B8-JSON-%E4%B8%8E%E6%A8%A1%E5%9E%8B%E7%9A%84%E8%BD%AC%E6%8D%A2/5339992a933bf062608b4c57 9 | 10 | #import "NSObject+MJCoding.h" 11 | #import "NSObject+MJProperty.h" 12 | #import "NSObject+MJClass.h" 13 | #import "NSObject+MJKeyValue.h" 14 | #import "NSString+MJExtension.h" 15 | #import "MJExtensionConst.h" -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/XWCoolAnimator/XWCoolAnimator+XWLines.h: -------------------------------------------------------------------------------- 1 | // 2 | // XWCoolAnimator+XWVerticalLines.h 3 | // XWTransitionDemo 4 | // 5 | // Created by wazrx on 16/6/14. 6 | // Copyright © 2016年 wazrx. All rights reserved. 7 | // 8 | 9 | #import "XWCoolAnimator.h" 10 | 11 | @interface XWCoolAnimator (XWLines) 12 | 13 | 14 | - (void)xw_setLinesToAnimation:(id)transitionContext vertical:(BOOL)vertical; 15 | 16 | - (void)xw_setLinesBackAnimation:(id)transitionContext vertical:(BOOL)vertical; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/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" -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/XWCoolAnimator/XWCoolAnimator+XWScanning.h: -------------------------------------------------------------------------------- 1 | // 2 | // XWCoolAnimator+XWScanning.h 3 | // XWTransitionDemo 4 | // 5 | // Created by wazrx on 16/6/14. 6 | // Copyright © 2016年 wazrx. All rights reserved. 7 | // 8 | 9 | #import "XWCoolAnimator.h" 10 | 11 | @interface XWCoolAnimator (XWScanning) 12 | 13 | 14 | - (void)xw_setScanningToAnimation:(id)transitionContext direction:(NSUInteger)direction; 15 | 16 | - (void)xw_setScanningBackAnimation:(id)transitionContext direction:(NSUInteger)direction; 17 | @end 18 | -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/V/ProductDetailView/DCIntroduceSelectCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // DCIntroduceSelectCell.m 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/22. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import "DCIntroduceSelectCell.h" 10 | 11 | @implementation DCIntroduceSelectCell 12 | 13 | - (void)awakeFromNib { 14 | [super awakeFromNib]; 15 | // Initialization code 16 | } 17 | 18 | - (void)setSelected:(BOOL)selected animated:(BOOL)animated { 19 | [super setSelected:selected animated:animated]; 20 | 21 | // Configure the view for the selected state 22 | } 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/C/ScreenVC/ScreenVC.h: -------------------------------------------------------------------------------- 1 | // 2 | // ScreenVC.h 3 | // LYFStoreDemo 4 | // 5 | // Created by Lyf on 17/4/19. 6 | // Copyright © 2017年 com.FLY.lyf. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ScreenVC : UIViewController 12 | 13 | //属性视图 14 | /* 品牌字段 */ 15 | @property (assign ,nonatomic) NSString *attributeViewBrandString; 16 | 17 | /* 排序字段 */ 18 | @property (assign ,nonatomic) NSString *attributeViewSortString; 19 | 20 | /** 点击回调 */ 21 | @property (nonatomic, copy) void(^sureButtonClickBlock)(NSString *attributeViewBrandString,NSString *attributeViewSortString); 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/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 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/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 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/XWCircleSpreadAnimator/XWCircleSpreadAnimator.h: -------------------------------------------------------------------------------- 1 | // 2 | // XWCircleSpreadAnimator.h 3 | // XWTADemo 4 | // 5 | // Created by wazrx on 16/6/7. 6 | // Copyright © 2016年 wazrx. All rights reserved. 7 | // 8 | 9 | #import "XWTransitionAnimator.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface XWCircleSpreadAnimator : XWTransitionAnimator 14 | 15 | /** 16 | * 返回一个小圆点扩散转场效果器 17 | * 18 | * @param point 扩散开始中心 19 | * @param radius 扩散开始的半径 20 | * 21 | * @return 小圆点扩散转场效果器 22 | */ 23 | + (instancetype)xw_animatorWithStartCenter:(CGPoint)point radius:(CGFloat)radius; 24 | 25 | @end 26 | 27 | NS_ASSUME_NONNULL_END -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/V/ProductDetailView/DCStoreHeadPriceCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // DCStoreHeadPriceCell.m 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/26. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import "DCStoreHeadPriceCell.h" 10 | 11 | @implementation DCStoreHeadPriceCell 12 | 13 | - (void)awakeFromNib { 14 | [super awakeFromNib]; 15 | 16 | _icoImageView.contentMode = UIViewContentModeScaleAspectFill; 17 | _icoImageView.clipsToBounds = YES; 18 | 19 | } 20 | 21 | - (IBAction)dismissButtonClick:(id)sender { 22 | 23 | !_dismissButtonClickBlock ? : _dismissButtonClickBlock(); 24 | } 25 | @end 26 | -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Tab/home_home_tab.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "filename" : "home_home_tab~iphone.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "filename" : "home_home_tab@2x~iphone.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "filename" : "home_home_tab@3x~iphone.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | }, 23 | "properties" : { 24 | "template-rendering-intent" : "original" 25 | } 26 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/Category/UINavigationController+XWTransition.h: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationController+XWTransition.h 3 | // XWTADemo 4 | // 5 | // Created by wazrx on 16/6/7. 6 | // Copyright © 2016年 wazrx. All rights reserved. 7 | // 8 | 9 | #import 10 | @class XWTransitionAnimator; 11 | 12 | @interface UINavigationController (XWTransition) 13 | 14 | /** 15 | * 通过指定的转场animator来push控制器,达到不同的转场效果 16 | * 17 | * @param viewController 被push的控制器 18 | * @param animator 转场Animator 19 | */ 20 | - (void)xw_pushViewController:(UIViewController *)viewController withAnimator:(XWTransitionAnimator *)animator; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Tab/home_home_tab_s.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "filename" : "home_home_tab_s~iphone.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "filename" : "home_home_tab_s@2x~iphone.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "filename" : "home_home_tab_s@3x~iphone.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | }, 23 | "properties" : { 24 | "template-rendering-intent" : "original" 25 | } 26 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/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 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/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 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/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 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/PageControl/TAAbstractDotView.h: -------------------------------------------------------------------------------- 1 | // 2 | // TAAbstractDotView.h 3 | // TAPageControl 4 | // 5 | // Created by Tanguy Aladenise on 2015-01-22. 6 | // Copyright (c) 2015 Tanguy Aladenise. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface TAAbstractDotView : UIView 13 | 14 | 15 | /** 16 | * A method call let view know which state appearance it should take. Active meaning it's current page. Inactive not the current page. 17 | * 18 | * @param active BOOL to tell if view is active or not 19 | */ 20 | - (void)changeActivityState:(BOOL)active; 21 | 22 | 23 | @end 24 | 25 | -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/V/ProductDetailView/DCStoreHeadPriceCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // DCStoreHeadPriceCell.h 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/26. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface DCStoreHeadPriceCell : UITableViewCell 12 | 13 | @property (weak, nonatomic) IBOutlet UIImageView *icoImageView; 14 | @property (weak, nonatomic) IBOutlet UILabel *priceLabel; 15 | @property (weak, nonatomic) IBOutlet UILabel *repertoryLabel; 16 | @property (weak, nonatomic) IBOutlet UILabel *attributeLabel; 17 | 18 | 19 | /* 点击回调 */ 20 | @property (nonatomic, copy) void(^dismissButtonClickBlock)(); 21 | 22 | 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/material(素材)/Nav/navigationButtonReturnClick.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "navigationButtonReturnClick.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "navigationButtonReturnClick@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "navigationButtonReturnClick@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | }, 23 | "properties" : { 24 | "template-rendering-intent" : "original" 25 | } 26 | } -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/C/ProductDetailVC/DCStoreItemSelectViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // DCStoreItemSelectViewController.h 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/22. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface DCStoreItemSelectViewController : UIViewController 12 | 13 | /** 购买数量 */ 14 | @property (nonatomic, assign) NSInteger buyNum; 15 | /** 库存 */ 16 | @property (nonatomic, strong) NSString *stock; 17 | /** 商品价格 */ 18 | @property (nonatomic, strong) NSString *money; 19 | /** 商品ID */ 20 | @property (nonatomic, strong) NSString *goodsid; 21 | /** 商品头像 */ 22 | @property (nonatomic, strong) NSString *iconImage; 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/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 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/SDWebImage/SDWebImage/NSData+ImageContentType.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Fabrice Aneche on 06/01/14. 3 | // Copyright (c) 2014 Dailymotion. All rights reserved. 4 | // 5 | 6 | #import 7 | 8 | @interface NSData (ImageContentType) 9 | 10 | /** 11 | * Compute the content type for an image data 12 | * 13 | * @param data the input data 14 | * 15 | * @return the content type as string (i.e. image/jpeg, image/gif) 16 | */ 17 | + (NSString *)sd_contentTypeForImageData:(NSData *)data; 18 | 19 | @end 20 | 21 | 22 | @interface NSData (ImageContentTypeDeprecated) 23 | 24 | + (NSString *)contentTypeForImageData:(NSData *)data __deprecated_msg("Use `sd_contentTypeForImageData:`"); 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/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 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/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 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/MJExtension/MJExtension/MJPropertyKey.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJPropertyKey.h 3 | // MJExtensionExample 4 | // 5 | // Created by MJ Lee on 15/8/11. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef enum { 12 | MJPropertyKeyTypeDictionary = 0, // 字典的key 13 | MJPropertyKeyTypeArray // 数组的key 14 | } MJPropertyKeyType; 15 | 16 | /** 17 | * 属性的key 18 | */ 19 | @interface MJPropertyKey : NSObject 20 | /** key的名字 */ 21 | @property (copy, nonatomic) NSString *name; 22 | /** key的种类,可能是@"10",可能是@"age" */ 23 | @property (assign, nonatomic) MJPropertyKeyType type; 24 | 25 | /** 26 | * 根据当前的key,也就是name,从object(字典或者数组)中取值 27 | */ 28 | - (id)valueInObject:(id)object; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/C/ProductDetailVC/Pay/DCSureOrderViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // DCSureOrderViewController.h 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/4/9. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface DCSureOrderViewController : UIViewController 12 | 13 | /* 商品 */ 14 | @property (weak ,nonatomic) NSString *showShopStr; 15 | /* 商品价格 */ 16 | @property (assign ,nonatomic) float showPriceStr; 17 | /* 商品快递费 */ 18 | @property (weak, nonatomic) NSString *expressagePriceStr; 19 | /** 购买数量 */ 20 | @property (nonatomic, assign) NSInteger buyNum; 21 | /** 规格 */ 22 | @property (nonatomic, strong) NSString *standard; 23 | /* 头像 */ 24 | @property (weak ,nonatomic) NSString *iconimage; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/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 | @end 21 | -------------------------------------------------------------------------------- /LYFStoreDemoTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /LYFStoreDemoUITests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/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 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/MJExtension/MJExtension/MJPropertyKey.m: -------------------------------------------------------------------------------- 1 | // 2 | // MJPropertyKey.m 3 | // MJExtensionExample 4 | // 5 | // Created by MJ Lee on 15/8/11. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJPropertyKey.h" 10 | 11 | @implementation MJPropertyKey 12 | 13 | - (id)valueInObject:(id)object 14 | { 15 | if ([object isKindOfClass:[NSDictionary class]] && self.type == MJPropertyKeyTypeDictionary) { 16 | return object[self.name]; 17 | } else if ([object isKindOfClass:[NSArray class]] && self.type == MJPropertyKeyTypeArray) { 18 | NSArray *array = object; 19 | NSUInteger index = self.name.intValue; 20 | if (index < array.count) return array[index]; 21 | return nil; 22 | } 23 | return nil; 24 | } 25 | @end 26 | -------------------------------------------------------------------------------- /LYFStoreDemo/Tools/UIBarButtonItem+DCBarButtonItem.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIBarButtonItem+DCBarButtonItem.h 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/19. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIBarButtonItem (DCBarButtonItem) 12 | 13 | +(UIBarButtonItem *)ItemWithImage:(UIImage *)image WithHighlighted:(UIImage *)HighlightedImage Target:(id)target action:(SEL)action; 14 | 15 | 16 | +(UIBarButtonItem *)ItemWithImage:(UIImage *)image WithSelected:(UIImage *)SelectedImage Target:(id)target action:(SEL)action; 17 | 18 | 19 | 20 | /** 21 | 返回 22 | */ 23 | +(UIBarButtonItem *)backItemWithImage:(UIImage *)image WithHighlightedImage:(UIImage *)HighlightedImage Target:(id)target action:(SEL)action title:(NSString *)title; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /LYFStoreDemo.xcodeproj/xcuserdata/Lyf.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | LYFStoreDemo.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 1C51BE7D1EA701230095660E 16 | 17 | primary 18 | 19 | 20 | 1C51BE991EA701240095660E 21 | 22 | primary 23 | 24 | 25 | 1C51BEA41EA701240095660E 26 | 27 | primary 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/C/ProductDetailVC/ProductDetailVC.h: -------------------------------------------------------------------------------- 1 | // 2 | // ProductDetailVC.h 3 | // LYFStoreDemo 4 | // 5 | // Created by Lyf on 17/4/24. 6 | // Copyright © 2017年 com.FLY.lyf. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ProductDetailVC : UIPageViewController 12 | 13 | /* 商品头像 */ 14 | @property (strong , nonatomic)NSString *goodspics; 15 | /* 商品库存*/ 16 | @property (weak, nonatomic) NSString *stockStr; 17 | /* 商品价格 */ 18 | @property (weak ,nonatomic) NSString *shopPrice; 19 | /* 商品介绍 */ 20 | @property (weak ,nonatomic) NSString *introduce; 21 | /* 商品标题 */ 22 | @property (weak ,nonatomic) NSString *goods_title; 23 | 24 | /* 商品快递费 */ 25 | @property (weak, nonatomic) NSString *expressage; 26 | /* 商品已售出量 */ 27 | @property (weak, nonatomic) NSString *saleCount; 28 | /* 商品地点 */ 29 | @property (weak, nonatomic) NSString *site; 30 | 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/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 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/Category/UIView+Snapshot.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+Snapshot.m 3 | // XWTransitionDemo 4 | // 5 | // Created by 肖文 on 2016/12/16. 6 | // Copyright © 2016年 wazrx. All rights reserved. 7 | // 8 | 9 | #import "UIView+Snapshot.h" 10 | 11 | @implementation UIView (Snapshot) 12 | 13 | - (UIImage *)snapshotImage { 14 | UIGraphicsBeginImageContextWithOptions(self.bounds.size, self.opaque, 0); 15 | [self.layer renderInContext:UIGraphicsGetCurrentContext()]; 16 | UIImage *snap = UIGraphicsGetImageFromCurrentImageContext(); 17 | UIGraphicsEndImageContext(); 18 | return snap; 19 | } 20 | 21 | - (UIImage *)contentImage{ 22 | return [UIImage imageWithCGImage:(__bridge CGImageRef)self.layer.contents]; 23 | } 24 | 25 | - (void)setContentImage:(UIImage *)contentImage{ 26 | self.layer.contents = (__bridge id)contentImage.CGImage;; 27 | } 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/V/ProductDetailView/DCBaseServiceCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // DCBaseServiceCell.m 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/22. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import "DCBaseServiceCell.h" 10 | 11 | #import "DCBaseItem.h" 12 | 13 | @interface DCBaseServiceCell() 14 | 15 | @property (weak, nonatomic) IBOutlet UIImageView *iconImageView; 16 | @property (weak, nonatomic) IBOutlet UILabel *titleLabel; 17 | @property (weak, nonatomic) IBOutlet UILabel *contentLabel; 18 | 19 | @end 20 | 21 | @implementation DCBaseServiceCell 22 | 23 | - (void)setBaseItem:(DCBaseItem *)baseItem 24 | { 25 | _baseItem = baseItem; 26 | 27 | self.iconImageView.image = [UIImage imageNamed:baseItem.imgs]; 28 | 29 | self.titleLabel.text = baseItem.title; 30 | self.contentLabel.text = baseItem.content; 31 | } 32 | 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/XWCoolAnimator/XWCoolAnimator+XWMiddlePageFlip.h: -------------------------------------------------------------------------------- 1 | // 2 | // XWCoolAnimator+XWMiddlePageFlip.h 3 | // XWTransitionDemo 4 | // 5 | // Created by wazrx on 16/6/13. 6 | // Copyright © 2016年 wazrx. All rights reserved. 7 | // 8 | 9 | #import "XWCoolAnimator.h" 10 | 11 | typedef NS_ENUM(NSUInteger, XWMiddlePageFlipDirection) { 12 | XWMiddlePageFlipDirectionLeft, 13 | XWMiddlePageFlipDirectionRight, 14 | XWMiddlePageFlipDirectionTop, 15 | XWMiddlePageFlipDirectionBottom 16 | }; 17 | 18 | @interface XWCoolAnimator (XWMiddlePageFlip) 19 | 20 | 21 | - (void)xw_setMiddlePageFlipToAnimation:(id)transitionContext direction:(XWMiddlePageFlipDirection)direction; 22 | 23 | - (void)xw_setMiddlePageFlipBackAnimation:(id)transitionContext direction:(XWMiddlePageFlipDirection)direction; 24 | @end 25 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/XWFilterAnimator/XWFilterTransitionView.h: -------------------------------------------------------------------------------- 1 | // 2 | // XWBlurView.h 3 | // XWTransitionDemo 4 | // 5 | // Created by wazrx on 16/6/17. 6 | // Copyright © 2016年 wazrx. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface XWFilterTransitionView : GLKView 14 | 15 | @property (nonatomic, assign) BOOL blurType; 16 | @property (nonatomic, strong) CIFilter *filter; 17 | 18 | - (instancetype)initWithFrame:(CGRect)frame 19 | fromImage:(UIImage *)fromImage 20 | toImage:(UIImage *)toImage; 21 | 22 | - (CAAnimation *)xw_getInnerAnimation; 23 | 24 | - (CIVector *)xw_getInnerVector; 25 | 26 | + (void)xw_animationWith:(XWFilterTransitionView *)filterView duration:(NSTimeInterval)duration completion:(void (^ __nullable)(BOOL finished))completion; 27 | 28 | @end 29 | 30 | NS_ASSUME_NONNULL_END -------------------------------------------------------------------------------- /LYFStoreDemo/Tools/DCSpeedy.h: -------------------------------------------------------------------------------- 1 | // 2 | // DCSpeedy.h 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/24. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface DCSpeedy : NSObject 13 | 14 | /** 15 | 设置按钮的圆角 16 | 17 | @param anyControl 控件 18 | @param radius 圆角度 19 | @param width 边宽度 20 | @param borderColor 边线颜色 21 | @param can 是否裁剪 22 | @return 控件 23 | */ 24 | +(id)chageControlCircularWith:(id)anyControl AndSetCornerRadius:(NSInteger)radius SetBorderWidth:(NSInteger)width SetBorderColor:(UIColor *)borderColor canMasksToBounds:(BOOL)can; 25 | 26 | 27 | /** 28 | 选取部分数据变色(label) 29 | 30 | @param label label 31 | @param arrray 变色数组 32 | @param color 变色颜色 33 | @return label 34 | */ 35 | +(id)setSomeOneChangeColor:(UILabel *)label SetSelectArray:(NSArray *)arrray SetChangeColor:(UIColor *)color; 36 | 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /LYFStoreDemo/Tools/UIView+DCExtension.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+DCExtension.h 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/18. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIView (DCExtension) 12 | 13 | 14 | @property (nonatomic , assign) CGFloat dc_width; 15 | @property (nonatomic , assign) CGFloat dc_height; 16 | @property (nonatomic , assign) CGSize dc_size; 17 | @property (nonatomic , assign) CGFloat dc_x; 18 | @property (nonatomic , assign) CGFloat dc_y; 19 | @property (nonatomic , assign) CGPoint dc_origin; 20 | @property (nonatomic , assign) CGFloat dc_centerX; 21 | @property (nonatomic , assign) CGFloat dc_centerY; 22 | @property (nonatomic , assign) CGFloat dc_right; 23 | @property (nonatomic , assign) CGFloat dc_bottom; 24 | 25 | - (BOOL)intersectWithView:(UIView *)view; 26 | 27 | + (instancetype)dc_viewFromXib; 28 | - (BOOL)isShowingOnKeyWindow; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/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 (assign, nonatomic) CGFloat mj_insetT; 14 | @property (assign, nonatomic) CGFloat mj_insetB; 15 | @property (assign, nonatomic) CGFloat mj_insetL; 16 | @property (assign, nonatomic) CGFloat mj_insetR; 17 | 18 | @property (assign, nonatomic) CGFloat mj_offsetX; 19 | @property (assign, nonatomic) CGFloat mj_offsetY; 20 | 21 | @property (assign, nonatomic) CGFloat mj_contentW; 22 | @property (assign, nonatomic) CGFloat mj_contentH; 23 | @end 24 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/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 | -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/C/ProductDetailVC/DCStoreMainViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // DCStoreMainViewController.h 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/21. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface DCStoreMainViewController : UIViewController 12 | 13 | /* 商品 id*/ 14 | @property (strong , nonatomic)NSString *goodsid; 15 | /* 商品图片*/ 16 | @property (strong , nonatomic)NSString *goodspics; 17 | /* 商品库存*/ 18 | @property (weak, nonatomic) NSString *stockStr; 19 | /* 商品价格 */ 20 | @property (weak ,nonatomic) NSString *shopPrice; 21 | /* 商品介绍 */ 22 | @property (weak ,nonatomic) NSString *introduce; 23 | /* 商品标题 */ 24 | @property (weak ,nonatomic) NSString *goods_title; 25 | /* 商品快递费 */ 26 | @property (weak, nonatomic) NSString *expressage; 27 | /* 商品已售出量 */ 28 | @property (weak, nonatomic) NSString *saleCount; 29 | /* 商品地点 */ 30 | @property (weak, nonatomic) NSString *site; 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/XWFilterAnimator/XWFilterAnimator+XWBoxBlur.m: -------------------------------------------------------------------------------- 1 | // 2 | // XWFilterAnimator+XWBoxBlur.m 3 | // XWTransitionDemo 4 | // 5 | // Created by wazrx on 16/6/17. 6 | // Copyright © 2016年 wazrx. All rights reserved. 7 | // 8 | 9 | #import "XWFilterAnimator+XWBoxBlur.h" 10 | 11 | @implementation XWFilterAnimator (XWBoxBlur) 12 | 13 | - (void)xw_boxBlurAnimationFor:(XWFilterTransitionView *)filterView transitionContext:(id)transitionContext duration:(NSTimeInterval)duration { 14 | CIFilter *filter = [CIFilter filterWithName: @"CIBoxBlur"]; 15 | filterView.filter = filter; 16 | filterView.blurType = YES; 17 | [XWFilterTransitionView xw_animationWith:filterView duration:duration completion:^(BOOL finished) { 18 | [filterView removeFromSuperview]; 19 | [transitionContext completeTransition:![transitionContext transitionWasCancelled]]; 20 | 21 | }]; 22 | } 23 | @end 24 | -------------------------------------------------------------------------------- /LYFStoreDemo/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | } 43 | ], 44 | "info" : { 45 | "version" : 1, 46 | "author" : "xcode" 47 | } 48 | } -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/MJExtension/MJExtension/MJExtensionConst.m: -------------------------------------------------------------------------------- 1 | #ifndef __MJExtensionConst__M__ 2 | #define __MJExtensionConst__M__ 3 | 4 | #import 5 | 6 | /** 7 | * 成员变量类型(属性类型) 8 | */ 9 | NSString *const MJPropertyTypeInt = @"i"; 10 | NSString *const MJPropertyTypeShort = @"s"; 11 | NSString *const MJPropertyTypeFloat = @"f"; 12 | NSString *const MJPropertyTypeDouble = @"d"; 13 | NSString *const MJPropertyTypeLong = @"l"; 14 | NSString *const MJPropertyTypeLongLong = @"q"; 15 | NSString *const MJPropertyTypeChar = @"c"; 16 | NSString *const MJPropertyTypeBOOL1 = @"c"; 17 | NSString *const MJPropertyTypeBOOL2 = @"b"; 18 | NSString *const MJPropertyTypePointer = @"*"; 19 | 20 | NSString *const MJPropertyTypeIvar = @"^{objc_ivar=}"; 21 | NSString *const MJPropertyTypeMethod = @"^{objc_method=}"; 22 | NSString *const MJPropertyTypeBlock = @"@?"; 23 | NSString *const MJPropertyTypeClass = @"#"; 24 | NSString *const MJPropertyTypeSEL = @":"; 25 | NSString *const MJPropertyTypeId = @"@"; 26 | 27 | #endif -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/M/ProductModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // ProductModel.h 3 | // LYFStoreDemo 4 | // 5 | // Created by Lyf on 17/4/19. 6 | // Copyright © 2017年 com.FLY.lyf. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface ProductModel : NSObject 13 | /** 商品价格 */ 14 | @property (nonatomic, copy) NSString *price; 15 | /** 商品存货 */ 16 | @property (nonatomic, copy) NSString *stock; 17 | /** 已售出 */ 18 | @property (nonatomic, copy) NSString *sales; 19 | /** 二级标题 */ 20 | @property (nonatomic, copy) NSString *secondtitle; 21 | /** 商品头像 */ 22 | @property (nonatomic, copy) NSString *goodspics; 23 | /** 商品标题 */ 24 | @property (nonatomic, copy) NSString *goods_title; 25 | 26 | 27 | /* 商品快递费 */ 28 | @property (copy, nonatomic) NSString *expressage; 29 | /* 商品已售出量 */ 30 | @property (copy, nonatomic) NSString *sale_count; 31 | /* 商品地点 */ 32 | @property (copy, nonatomic) NSString *goods_address; 33 | 34 | /** cell行高 */ 35 | @property (nonatomic , assign) CGFloat cellHeight; 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/PageControl/TAAbstractDotView.m: -------------------------------------------------------------------------------- 1 | // 2 | // TAAbstractDotView.m 3 | // TAPageControl 4 | // 5 | // Created by Tanguy Aladenise on 2015-01-22. 6 | // Copyright (c) 2015 Tanguy Aladenise. All rights reserved. 7 | // 8 | 9 | #import "TAAbstractDotView.h" 10 | 11 | 12 | @implementation TAAbstractDotView 13 | 14 | 15 | - (id)init 16 | { 17 | @throw [NSException exceptionWithName:NSInternalInconsistencyException 18 | reason:[NSString stringWithFormat:@"You must override %@ in %@", NSStringFromSelector(_cmd), self.class] 19 | userInfo:nil]; 20 | } 21 | 22 | 23 | - (void)changeActivityState:(BOOL)active 24 | { 25 | @throw [NSException exceptionWithName:NSInternalInconsistencyException 26 | reason:[NSString stringWithFormat:@"You must override %@ in %@", NSStringFromSelector(_cmd), self.class] 27 | userInfo:nil]; 28 | } 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/V/ProductDetailView/DCNavigationTabBar.h: -------------------------------------------------------------------------------- 1 | // 2 | // DCNavigationTabBar.h 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/21. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | /** 12 | 声明一个Block的变量类型 13 | 14 | @param buttonIndex 页面的索引 15 | */ 16 | typedef void(^TabBarDidClickAtIndex)(NSInteger buttonIndex); 17 | 18 | @interface DCNavigationTabBar : UIView 19 | 20 | /** 21 | 点击传递索引 22 | */ 23 | @property(nonatomic,copy)TabBarDidClickAtIndex didClickAtIndex; 24 | 25 | 26 | /** 27 | 标题 28 | */ 29 | -(instancetype)initWithTitles:(NSArray *)titles; 30 | 31 | /** 32 | 滑动至索引 33 | */ 34 | -(void)scrollToIndex:(NSInteger)index; 35 | 36 | /** 37 | 背景颜色 38 | */ 39 | @property(nonatomic,strong)UIColor *sliderBackgroundColor; 40 | 41 | /** 42 | button标题颜色(正常) 43 | */ 44 | @property(nonatomic,strong)UIColor *buttonNormalTitleColor; 45 | 46 | /** 47 | button标题颜色(选中) 48 | */ 49 | @property(nonatomic,strong)UIColor *buttonSelectedTileColor; 50 | 51 | 52 | 53 | @end 54 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/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 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/SVProgressHUD/SVProgressHUD/SVRadialGradientLayer.m: -------------------------------------------------------------------------------- 1 | // 2 | // SVRadialGradientLayer.m 3 | // SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD 4 | // 5 | // Copyright (c) 2014-2016 Tobias Tiemerding. All rights reserved. 6 | // 7 | 8 | #import "SVRadialGradientLayer.h" 9 | 10 | @implementation SVRadialGradientLayer 11 | 12 | - (void)drawInContext:(CGContextRef)context { 13 | size_t locationsCount = 2; 14 | CGFloat locations[2] = {0.0f, 1.0f}; 15 | CGFloat colors[8] = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.75f}; 16 | CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 17 | CGGradientRef gradient = CGGradientCreateWithColorComponents(colorSpace, colors, locations, locationsCount); 18 | CGColorSpaceRelease(colorSpace); 19 | 20 | float radius = MIN(self.bounds.size.width , self.bounds.size.height); 21 | CGContextDrawRadialGradient (context, gradient, self.gradientCenter, 0, self.gradientCenter, radius, kCGGradientDrawsAfterEndLocation); 22 | CGGradientRelease(gradient); 23 | } 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/TXScrollLabelView/TXScrollLabelView/UIView+TXFrame.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+TXFrame.h 3 | // TXSwipeTableViewTest 4 | // 5 | // Created by tingxins on 9/1/16. 6 | // Copyright © 2016 tingxins. All rights reserved. 7 | // Welcome to my blog: https://tingxins.com 8 | // 9 | 10 | #import 11 | 12 | @interface UIView (TXFrame) 13 | /** 设置x值 */ 14 | @property (assign, nonatomic) CGFloat tx_x; 15 | /** 设置y值 */ 16 | @property (assign, nonatomic) CGFloat tx_y; 17 | /** 设置width */ 18 | @property (assign, nonatomic) CGFloat tx_width; 19 | /** 设置height */ 20 | @property (assign, nonatomic) CGFloat tx_height; 21 | /** 设置size */ 22 | @property (assign, nonatomic) CGSize tx_size; 23 | /** 设置origin */ 24 | @property (assign, nonatomic) CGPoint tx_origin; 25 | /** 设置center */ 26 | @property (assign, nonatomic) CGPoint tx_center; 27 | /** 设置center.x */ 28 | @property (assign, nonatomic) CGFloat tx_centerX; 29 | /** 设置center.y */ 30 | @property (assign, nonatomic) CGFloat tx_centerY; 31 | /** 设置bottom */ 32 | @property (assign, nonatomic) CGFloat tx_bottom; 33 | @end 34 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/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 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/XWMagicMoveAnimator/XWMagicMoveAnimator.h: -------------------------------------------------------------------------------- 1 | // 2 | // XWMagicMoveAnimator.h 3 | // XWTADemo 4 | // 5 | // Created by wazrx on 16/6/8. 6 | // Copyright © 2016年 wazrx. All rights reserved. 7 | // 神奇移动效果请配合UIViewController+XWTransition中的相关API使用,如果神奇移动的终止视图为cell,需要参考一下demo中的九宫格例子 8 | 9 | #import "XWTransitionAnimator.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface UIView (XWTransition) 14 | 15 | //神奇移动的时候,如果对设置view的该属性为YES,则移动视图不会按照截图的方式生成,而且尝试直接取得其image(暂时支持imageView、button等),解决神奇移动从下到大会产生模糊的情况 16 | @property (nonatomic, assign) BOOL magicMoveImageMode; 17 | 18 | @end 19 | 20 | 21 | @interface XWMagicMoveAnimator : XWTransitionAnimator 22 | 23 | //是否开启弹簧效果 24 | @property (nonatomic, assign) BOOL dampingEnable; 25 | //设为YES后,对于做神奇移动数组中的所有View会直接取其图片而不会截图,可解决神奇移动从小变得较大的时候,截图不清晰的问题,如果想要对单个view最该设置,请参考上面的UIView分类的magicMoveImageMode属性 26 | @property (nonatomic, assign) BOOL imageMode; 27 | 28 | @end 29 | 30 | UIKIT_EXTERN NSString *const kXWMagicMoveAnimatorStartViewVCKey; 31 | UIKIT_EXTERN NSString *const kXWMagicMoveAnimatorEndViewVCKey; 32 | 33 | NS_ASSUME_NONNULL_END -------------------------------------------------------------------------------- /LYFStoreDemo/Tools/DCConsts.h: -------------------------------------------------------------------------------- 1 | // 2 | // DCConsts.h 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/20. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import 12 | 13 | @interface DCConsts : NSObject 14 | 15 | 16 | /** 常量 */ 17 | UIKIT_EXTERN CGFloat const DCMargin; 18 | 19 | 20 | /** 立即购买点击退出当前界面通知 */ 21 | UIKIT_EXTERN NSString * const DCBuyButtonDidDismissClickNotificationCenter; 22 | 23 | 24 | 25 | /** 屏幕高度 */ 26 | #define ScreenH [UIScreen mainScreen].bounds.size.height 27 | /** 屏幕宽度 */ 28 | #define ScreenW [UIScreen mainScreen].bounds.size.width 29 | 30 | /** RGB */ 31 | #define DCRGBColor(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1.0] 32 | 33 | /** 没有导航栏的屏幕高度 */ 34 | #define ScreenHNoNavi ([UIScreen mainScreen].bounds.size.height - 64 - 49) 35 | 36 | /***************** 屏幕适配 ******************/ 37 | #define iphone6p (ScreenH == 763) 38 | #define iphone6 (ScreenH == 667) 39 | #define iphone5 (ScreenH == 568) 40 | #define iphone4 (ScreenH == 480) 41 | 42 | 43 | @end 44 | -------------------------------------------------------------------------------- /LYFStoreDemoTests/LYFStoreDemoTests.m: -------------------------------------------------------------------------------- 1 | // 2 | // LYFStoreDemoTests.m 3 | // LYFStoreDemoTests 4 | // 5 | // Created by Lyf on 17/4/19. 6 | // Copyright © 2017年 com.FLY.lyf. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LYFStoreDemoTests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation LYFStoreDemoTests 16 | 17 | - (void)setUp { 18 | [super setUp]; 19 | // Put setup code here. This method is called before the invocation of each test method in the class. 20 | } 21 | 22 | - (void)tearDown { 23 | // Put teardown code here. This method is called after the invocation of each test method in the class. 24 | [super tearDown]; 25 | } 26 | 27 | - (void)testExample { 28 | // This is an example of a functional test case. 29 | // Use XCTAssert and related functions to verify your tests produce the correct results. 30 | } 31 | 32 | - (void)testPerformanceExample { 33 | // This is an example of a performance test case. 34 | [self measureBlock:^{ 35 | // Put the code you want to measure the time of here. 36 | }]; 37 | } 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /LYFStoreDemo/Tools/DCShopItemView.h: -------------------------------------------------------------------------------- 1 | // 2 | // DCShopItemView.h 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/18. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class DCShopItemView; 12 | 13 | @protocol ShopItemViewDelegate 14 | 15 | @optional 16 | -(void)ShopItem_View:(DCShopItemView *)view didClickBtn:(UIButton *)btn; 17 | @end 18 | 19 | @interface DCShopItemView : UIView 20 | 21 | @property(nonatomic,assign)id ShopItem_delegate; 22 | 23 | /** 24 | * 返回一个创建好的属性视图,并且带有标题.创建好之后必须设置视图的Y值. 25 | * 26 | * @param texts 属性数组 27 | * 28 | * @return attributeView 29 | */ 30 | + (DCShopItemView *)attributeViewWithTitle:(NSString *)title titleFont:(UIFont *)font titleColor:(UIColor *)titleColor WithBtnBgColor:(UIColor *)bgColor titleNormalColor:(UIColor *)normalColor titleSelectColor:(UIColor *)selectColor WithButtonCornerRadius:(NSInteger)radius attributeTexts:(NSArray *)texts viewWidth:(CGFloat)viewWidth; 31 | 32 | 33 | /** 34 | 自定义按钮 35 | */ 36 | @property (nonatomic ,weak) UIButton *btn; 37 | 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /LYFStoreDemo/Tools/DCStoreButton.m: -------------------------------------------------------------------------------- 1 | // 2 | // DCStoreButton.m 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/22. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import "DCStoreButton.h" 10 | 11 | #import "UIView+DCExtension.h" 12 | 13 | @implementation DCStoreButton 14 | 15 | -(void)setUp 16 | { 17 | self.titleLabel.textAlignment = NSTextAlignmentCenter; 18 | } 19 | 20 | - (instancetype)initWithFrame:(CGRect)frame 21 | { 22 | if (self = [super initWithFrame:frame]) { 23 | [self setUp]; 24 | } 25 | return self; 26 | } 27 | - (void)awakeFromNib 28 | { 29 | [super awakeFromNib]; 30 | [self setUp]; 31 | } 32 | 33 | -(void)layoutSubviews 34 | { 35 | [super layoutSubviews]; 36 | //设置图片位置 37 | self.imageView.dc_centerY = self.dc_centerY - 5; 38 | self.imageView.dc_centerX = self.dc_width * 0.5; 39 | 40 | //自己计算文字的宽 41 | [self.titleLabel sizeToFit]; 42 | //设置lable 43 | self.titleLabel.dc_centerX = self.dc_width * 0.5; 44 | self.titleLabel.dc_y = self.imageView.dc_bottom + 5; 45 | 46 | 47 | } 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/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 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/MJExtension/MJExtension/MJPropertyType.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJPropertyType.h 3 | // MJExtension 4 | // 5 | // Created by mj on 14-1-15. 6 | // Copyright (c) 2014年 小码哥. All rights reserved. 7 | // 包装一种类型 8 | 9 | #import 10 | 11 | /** 12 | * 包装一种类型 13 | */ 14 | @interface MJPropertyType : NSObject 15 | /** 类型标识符 */ 16 | @property (nonatomic, copy) NSString *code; 17 | 18 | /** 是否为id类型 */ 19 | @property (nonatomic, readonly, getter=isIdType) BOOL idType; 20 | 21 | /** 是否为基本数字类型:int、float等 */ 22 | @property (nonatomic, readonly, getter=isNumberType) BOOL numberType; 23 | 24 | /** 是否为BOOL类型 */ 25 | @property (nonatomic, readonly, getter=isBoolType) BOOL boolType; 26 | 27 | /** 对象类型(如果是基本数据类型,此值为nil) */ 28 | @property (nonatomic, readonly) Class typeClass; 29 | 30 | /** 类型是否来自于Foundation框架,比如NSString、NSArray */ 31 | @property (nonatomic, readonly, getter = isFromFoundation) BOOL fromFoundation; 32 | /** 类型是否不支持KVC */ 33 | @property (nonatomic, readonly, getter = isKVCDisabled) BOOL KVCDisabled; 34 | 35 | /** 36 | * 获得缓存的类型对象 37 | */ 38 | + (instancetype)cachedTypeWithCode:(NSString *)code; 39 | @end -------------------------------------------------------------------------------- /LYFStoreDemo/Plist/StoreBase.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | imgs 7 | carry 8 | title 9 | 标题1 10 | content 11 | 门店自提,门店自提,门店自提,门店自提,门店自提, 12 | 13 | 14 | imgs 15 | good 16 | title 17 | 标题2 18 | content 19 | 品质保障,品质保障,品质保障,品质保障,品质保障 20 | 21 | 22 | imgs 23 | sale 24 | title 25 | 标题2 26 | content 27 | 售后保障,售后保障,售后保障,售后保障,售后保障,售后保障,售后保障,售后保障,售后保障,售后保障,售后保障,售后保障,售后保障,售后保障 28 | 29 | 30 | imgs 31 | post 32 | title 33 | 标题4 34 | content 35 | 急速发货,急速发货,急速发货,急速发货,急速发货,急速发货,急速发货,急速发货,急速发货,急速发货,急速发货,急速发货,急速发货,急速发货,急速发货,急速发货 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/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. -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/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 10 | #import "SDWebImageManager.h" 11 | 12 | @interface UIView (WebCacheOperation) 13 | 14 | /** 15 | * Set the image load operation (storage in a UIView based dictionary) 16 | * 17 | * @param operation the operation 18 | * @param key key for storing the operation 19 | */ 20 | - (void)sd_setImageLoadOperation:(id)operation forKey:(NSString *)key; 21 | 22 | /** 23 | * Cancel all operations for the current UIView and key 24 | * 25 | * @param key key for identifying the operations 26 | */ 27 | - (void)sd_cancelImageLoadOperationWithKey:(NSString *)key; 28 | 29 | /** 30 | * Just remove the operations corresponding to the current UIView and key without cancelling them 31 | * 32 | * @param key key for identifying the operations 33 | */ 34 | - (void)sd_removeImageLoadOperationWithKey:(NSString *)key; 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/TXScrollLabelView/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2016 tingxins 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 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/SDWebImage/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2016 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 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/XWFilterAnimator/XWFilterAnimator+XWBarSwipe.m: -------------------------------------------------------------------------------- 1 | // 2 | // XWFilterAnimator+XWBarSwipe.m 3 | // XWTransitionDemo 4 | // 5 | // Created by wazrx on 16/6/19. 6 | // Copyright © 2016年 wazrx. All rights reserved. 7 | // 8 | 9 | #import "XWFilterAnimator+XWBarSwipe.h" 10 | 11 | @implementation XWFilterAnimator (XWBarSwipe) 12 | 13 | - (void)xw_barSwipeAnimationFor:(XWFilterTransitionView *)filterView transitionContext:(id)transitionContext duration:(NSTimeInterval)duration toFlag:(BOOL)flag { 14 | CGFloat angle = self.revers && !flag ? self.startAngle + M_PI : self.startAngle; 15 | CIFilter *filter = [CIFilter filterWithName:@"CIBarsSwipeTransition" 16 | keysAndValues: 17 | kCIInputAngleKey, @(angle), 18 | nil]; 19 | filterView.filter = filter; 20 | [XWFilterTransitionView xw_animationWith:filterView duration:duration completion:^(BOOL finished) { 21 | [filterView removeFromSuperview]; 22 | [transitionContext completeTransition:![transitionContext transitionWasCancelled]]; 23 | }]; 24 | } 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/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 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/SDCycleScrollView/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 GSD_iOS 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 | 23 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/MJExtension/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013-2015 MJExtension (https://github.com/CoderMJLee/MJExtension) 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 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/MJExtension/MJExtension/NSObject+MJCoding.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+MJCoding.h 3 | // MJExtension 4 | // 5 | // Created by mj on 14-1-15. 6 | // Copyright (c) 2014年 小码哥. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MJExtensionConst.h" 11 | 12 | /** 13 | * Codeing协议 14 | */ 15 | @protocol MJCoding 16 | @optional 17 | /** 18 | * 这个数组中的属性名才会进行归档 19 | */ 20 | + (NSArray *)mj_allowedCodingPropertyNames; 21 | /** 22 | * 这个数组中的属性名将会被忽略:不进行归档 23 | */ 24 | + (NSArray *)mj_ignoredCodingPropertyNames; 25 | @end 26 | 27 | @interface NSObject (MJCoding) 28 | /** 29 | * 解码(从文件中解析对象) 30 | */ 31 | - (void)mj_decode:(NSCoder *)decoder; 32 | /** 33 | * 编码(将对象写入文件中) 34 | */ 35 | - (void)mj_encode:(NSCoder *)encoder; 36 | @end 37 | 38 | /** 39 | 归档的实现 40 | */ 41 | #define MJCodingImplementation \ 42 | - (id)initWithCoder:(NSCoder *)decoder \ 43 | { \ 44 | if (self = [super init]) { \ 45 | [self mj_decode:decoder]; \ 46 | } \ 47 | return self; \ 48 | } \ 49 | \ 50 | - (void)encodeWithCoder:(NSCoder *)encoder \ 51 | { \ 52 | [self mj_encode:encoder]; \ 53 | } 54 | 55 | #define MJExtensionCodingImplementation MJCodingImplementation -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/XWFilterAnimator/XWFilterAnimator+XWPageCurl.m: -------------------------------------------------------------------------------- 1 | 2 | // 3 | // XWFilterAnimator+XWPageCurl.m 4 | // XWTransitionDemo 5 | // 6 | // Created by wazrx on 16/6/19. 7 | // Copyright © 2016年 wazrx. All rights reserved. 8 | // 9 | 10 | #import "XWFilterAnimator+XWPageCurl.h" 11 | 12 | @implementation XWFilterAnimator (XWPageCurl) 13 | 14 | - (void)xw_pageCurlAnimationFor:(XWFilterTransitionView *)filterView transitionContext:(id)transitionContext duration:(NSTimeInterval)duration toFlag:(BOOL)flag{ 15 | CGFloat angle = self.revers && !flag ? self.startAngle + M_PI : self.startAngle; 16 | CIFilter *filter = [CIFilter filterWithName: @"CIPageCurlWithShadowTransition" 17 | keysAndValues: 18 | kCIInputAngleKey, @(angle), 19 | nil]; 20 | filterView.filter = filter; 21 | [XWFilterTransitionView xw_animationWith:filterView duration:duration completion:^(BOOL finished) { 22 | [filterView removeFromSuperview]; 23 | [transitionContext completeTransition:![transitionContext transitionWasCancelled]]; 24 | }]; 25 | } 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/Main/XWTransitionAnimator.h: -------------------------------------------------------------------------------- 1 | // 2 | // XWTransitionAnimator.h 3 | // XWTADemo 4 | // 5 | // Created by wazrx on 16/6/7. 6 | // Copyright © 2016年 wazrx. All rights reserved. 7 | // 所有转场效果器的基类,若要自定义请继承与该基类 8 | 9 | #import 10 | #import "XWInteractiveTransition.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface XWTransitionAnimator : NSObject 15 | 16 | //to转场时间 默认0.5 17 | @property (nonatomic, assign) NSTimeInterval toDuration; 18 | //back转场时间 默认0.5 19 | @property (nonatomic, assign) NSTimeInterval backDuration; 20 | //是否需要开启手势timer,某些转场如果在转成过程中所开手指,不会有动画过渡,显得很生硬,开启timer后,松开手指,会用timer不断的刷新转场百分比,消除生硬的缺点 21 | @property (nonatomic, assign) BOOL needInteractiveTimer; 22 | 23 | /** 24 | * 配置To过程动画(push, present),自定义转场动画应该复写该方法 25 | */ 26 | - (void)xw_setToAnimation:(id)transitionContext; 27 | /** 28 | * 配置back过程动画(pop, dismiss),自定义转场动画应该复写该方法 29 | */ 30 | - (void)xw_setBackAnimation:(id)transitionContext; 31 | 32 | @end 33 | 34 | NS_ASSUME_NONNULL_END -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/M/ProductModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // ProductModel.m 3 | // LYFStoreDemo 4 | // 5 | // Created by Lyf on 17/4/19. 6 | // Copyright © 2017年 com.FLY.lyf. All rights reserved. 7 | // 8 | 9 | #import "ProductModel.h" 10 | #import "DCConsts.h" 11 | 12 | @implementation ProductModel 13 | 14 | - (CGFloat)cellHeight 15 | { 16 | if (_cellHeight) return _cellHeight; 17 | CGSize titleSize = [self calculateTextSizeWithText:_goods_title WithTextFont:14 WithMaxW:ScreenW - 103]; 18 | CGSize secondttSize = [self calculateTextSizeWithText:_secondtitle WithTextFont:12 WithMaxW:ScreenW - 103]; 19 | _cellHeight = 62 + titleSize.height + secondttSize.height; 20 | 21 | return _cellHeight; 22 | } 23 | 24 | 25 | #pragma mark - 根据传入字体大小计算字体宽高 26 | - (CGSize)calculateTextSizeWithText : (NSString *)text WithTextFont: (NSInteger)textFont WithMaxW : (CGFloat)maxW { 27 | 28 | CGFloat textMaxW = maxW; 29 | CGSize textMaxSize = CGSizeMake(textMaxW, MAXFLOAT); 30 | 31 | CGSize textSize = [text boundingRectWithSize:textMaxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:textFont]} context:nil].size; 32 | 33 | return textSize; 34 | } 35 | 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/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; 30 | @end 31 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/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 | -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/V/HomeView/DCStoreItemCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // DCStoreItemCell.m 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/20. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import "DCStoreItemCell.h" 10 | 11 | #import "ProductModel.h" 12 | 13 | @interface DCStoreItemCell() 14 | 15 | @property (weak, nonatomic) IBOutlet UIImageView *iconImageView; 16 | @property (weak, nonatomic) IBOutlet UILabel *goodstitleLabel; 17 | @property (weak, nonatomic) IBOutlet UILabel *salesLabel; 18 | @property (weak, nonatomic) IBOutlet UILabel *priceLabel; 19 | @property (weak, nonatomic) IBOutlet UILabel *introduceLabel; 20 | 21 | @end 22 | 23 | @implementation DCStoreItemCell 24 | 25 | - (void)setStoreItem:(ProductModel *)storeItem 26 | { 27 | storeItem = storeItem; 28 | 29 | self.iconImageView.image = [UIImage imageNamed:storeItem.goodspics]; 30 | 31 | self.goodstitleLabel.text = storeItem.goods_title; 32 | 33 | self.salesLabel.text = [NSString stringWithFormat:@"销售 %@笔",storeItem.sales]; 34 | 35 | self.priceLabel.text = [NSString stringWithFormat:@"¥ %0.2f",[storeItem.price floatValue]]; 36 | 37 | self.introduceLabel.text = storeItem.secondtitle; 38 | 39 | } 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /LYFStoreDemo/Tools/DCCustomButton.m: -------------------------------------------------------------------------------- 1 | // 2 | // DCCustomButton.m 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/20. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import "DCCustomButton.h" 10 | 11 | #import "DCConsts.h" 12 | 13 | #import "UIView+DCExtension.h" 14 | 15 | @implementation DCCustomButton 16 | - (instancetype)initWithFrame:(CGRect)frame 17 | { 18 | if (self = [super initWithFrame:frame]) { 19 | 20 | self.backgroundColor = [UIColor whiteColor]; 21 | [self setTitleColor:[UIColor darkGrayColor] forState:UIControlStateNormal]; 22 | self.titleLabel.font = [UIFont systemFontOfSize:14]; 23 | } 24 | return self; 25 | } 26 | 27 | - (void)setTitle:(NSString *)title forState:(UIControlState)state 28 | { 29 | [super setTitle:title forState:state]; 30 | 31 | // [self sizeToFit]; 32 | //sizeToFit算完后加三倍的间距 33 | self.dc_width += DCMargin; 34 | } 35 | 36 | - (void)layoutSubviews 37 | { 38 | [super layoutSubviews]; 39 | 40 | self.titleLabel.dc_centerY = self.dc_centerY; 41 | self.titleLabel.dc_x = DCMargin; 42 | self.imageView.dc_centerY = self.dc_centerY; 43 | self.imageView.dc_x = CGRectGetMaxX(self.titleLabel.frame) + 1/3 * DCMargin; 44 | } 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/MJExtension/MJExtension/NSString+MJExtension.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+MJExtension.h 3 | // MJExtensionExample 4 | // 5 | // Created by MJ Lee on 15/6/7. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MJExtensionConst.h" 11 | 12 | @interface NSString (MJExtension) 13 | /** 14 | * 驼峰转下划线(loveYou -> love_you) 15 | */ 16 | - (NSString *)mj_underlineFromCamel; 17 | /** 18 | * 下划线转驼峰(love_you -> loveYou) 19 | */ 20 | - (NSString *)mj_camelFromUnderline; 21 | /** 22 | * 首字母变大写 23 | */ 24 | - (NSString *)mj_firstCharUpper; 25 | /** 26 | * 首字母变小写 27 | */ 28 | - (NSString *)mj_firstCharLower; 29 | 30 | - (BOOL)mj_isPureInt; 31 | 32 | - (NSURL *)mj_url; 33 | @end 34 | 35 | @interface NSString (MJExtensionDeprecated_v_2_5_16) 36 | - (NSString *)underlineFromCamel MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***"); 37 | - (NSString *)camelFromUnderline MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***"); 38 | - (NSString *)firstCharUpper MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***"); 39 | - (NSString *)firstCharLower MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***"); 40 | - (BOOL)isPureInt MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***"); 41 | - (NSURL *)url MJExtensionDeprecated("请在方法名前面加上mj_前缀,使用mj_***"); 42 | @end 43 | -------------------------------------------------------------------------------- /LYFStoreDemo/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 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 | 38 | 39 | -------------------------------------------------------------------------------- /LYFStoreDemo/Plist/ShopItemA.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | attr 7 | 8 | attrname 9 | 机身颜色 10 | 11 | list 12 | 13 | 14 | infoname 15 | 金色 16 | plusprice 17 | 50 18 | 19 | 20 | plusprice 21 | 10 22 | infoname 23 | 银色 24 | 25 | 26 | 27 | 28 | attr 29 | 30 | attrname 31 | 容量大小 32 | 33 | list 34 | 35 | 36 | infoname 37 | 16G 38 | plusprice 39 | 10 40 | 41 | 42 | infoname 43 | 64G 44 | plusprice 45 | 200 46 | 47 | 48 | infoname 49 | 128G 50 | plusprice 51 | 600 52 | 53 | 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /LYFStoreDemo/Tools/DCSpeedy.m: -------------------------------------------------------------------------------- 1 | // 2 | // DCSpeedy.m 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/3/24. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import "DCSpeedy.h" 10 | 11 | @implementation DCSpeedy 12 | 13 | +(id)chageControlCircularWith:(id)anyControl AndSetCornerRadius:(NSInteger)radius SetBorderWidth:(NSInteger)width SetBorderColor:(UIColor *)borderColor canMasksToBounds:(BOOL)can 14 | { 15 | CALayer *icon_layer=[anyControl layer]; 16 | [icon_layer setCornerRadius:radius]; 17 | [icon_layer setBorderWidth:width]; 18 | [icon_layer setBorderColor:[borderColor CGColor]]; 19 | [icon_layer setMasksToBounds:can]; 20 | 21 | return anyControl; 22 | } 23 | 24 | +(id)setSomeOneChangeColor:(UILabel *)label SetSelectArray:(NSArray *)arrray SetChangeColor:(UIColor *)color 25 | { 26 | int i; 27 | NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc]initWithString:label.text]; 28 | for (i = 0; i < label.text.length; i ++) { 29 | NSString *a = [label.text substringWithRange:NSMakeRange(i, 1)]; 30 | NSArray *number = arrray; 31 | if ([number containsObject:a]) { 32 | [attributeString setAttributes:@{NSForegroundColorAttributeName:color} range:NSMakeRange(i, 1)]; 33 | } 34 | } 35 | label.attributedText = attributeString; 36 | return label; 37 | } 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /LYFStoreDemoUITests/LYFStoreDemoUITests.m: -------------------------------------------------------------------------------- 1 | // 2 | // LYFStoreDemoUITests.m 3 | // LYFStoreDemoUITests 4 | // 5 | // Created by Lyf on 17/4/19. 6 | // Copyright © 2017年 com.FLY.lyf. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LYFStoreDemoUITests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation LYFStoreDemoUITests 16 | 17 | - (void)setUp { 18 | [super setUp]; 19 | 20 | // Put setup code here. This method is called before the invocation of each test method in the class. 21 | 22 | // In UI tests it is usually best to stop immediately when a failure occurs. 23 | self.continueAfterFailure = NO; 24 | // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method. 25 | [[[XCUIApplication alloc] init] launch]; 26 | 27 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. 28 | } 29 | 30 | - (void)tearDown { 31 | // Put teardown code here. This method is called after the invocation of each test method in the class. 32 | [super tearDown]; 33 | } 34 | 35 | - (void)testExample { 36 | // Use recording to get started writing UI tests. 37 | // Use XCTAssert and related functions to verify your tests produce the correct results. 38 | } 39 | 40 | @end 41 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/SVProgressHUD/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011-2016 Sam Vermette, Tobias Tiemerding and contributors. 2 | 3 | Permission is hereby granted, free of charge, to any person 4 | obtaining a copy of this software and associated documentation 5 | files (the "Software"), to deal in the Software without 6 | restriction, including without limitation the rights to use, 7 | copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the 9 | Software is furnished to do so, subject to the following 10 | conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 17 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 19 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 20 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 21 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | 24 | A different license may apply to other resources included in this package, 25 | including Freepik Icons. Please consult their 26 | respective headers for the terms of their individual licenses. 27 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/Masonry/Masonry/MASViewAttribute.m: -------------------------------------------------------------------------------- 1 | // 2 | // MASAttribute.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 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/XWFilterAnimator/XWFilterAnimator+XWRipple.m: -------------------------------------------------------------------------------- 1 | // 2 | // XWFilterAnimator+XWRipple.m 3 | // XWTransitionDemo 4 | // 5 | // Created by wazrx on 16/6/19. 6 | // Copyright © 2016年 wazrx. All rights reserved. 7 | // 8 | 9 | #import "XWFilterAnimator+XWRipple.h" 10 | 11 | @implementation XWFilterAnimator (XWRipple) 12 | 13 | - (void)xw_rippleAnimationFor:(XWFilterTransitionView *)filterView transitionContext:(id)transitionContext duration:(NSTimeInterval)duration{ 14 | CIImage *img = [CIImage imageWithCGImage:[UIImage imageNamed:@"restrictedshine.tiff"].CGImage]; 15 | CIVector *vector = [filterView xw_getInnerVector]; 16 | CIFilter *filter = [CIFilter filterWithName: @"CIRippleTransition" 17 | keysAndValues: 18 | kCIInputShadingImageKey, img, 19 | kCIInputCenterKey, [CIVector vectorWithX:0.5 * vector.CGRectValue.size.width 20 | Y:0.5 * vector.CGRectValue.size.height], 21 | nil]; 22 | filterView.filter = filter; 23 | [XWFilterTransitionView xw_animationWith:filterView duration:duration completion:^(BOOL finished) { 24 | [filterView removeFromSuperview]; 25 | [transitionContext completeTransition:![transitionContext transitionWasCancelled]]; 26 | }]; 27 | } 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/UIView+SDExtension.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+SDExtension.h 3 | // SDRefreshView 4 | // 5 | // Created by aier on 15-2-23. 6 | // Copyright (c) 2015年 GSD. All rights reserved. 7 | // 8 | 9 | /* 10 | 11 | ********************************************************************************* 12 | * 13 | * 🌟🌟🌟 新建SDCycleScrollView交流QQ群:185534916 🌟🌟🌟 14 | * 15 | * 在您使用此自动轮播库的过程中如果出现bug请及时以以下任意一种方式联系我们,我们会及时修复bug并 16 | * 帮您解决问题。 17 | * 新浪微博:GSD_iOS 18 | * Email : gsdios@126.com 19 | * GitHub: https://github.com/gsdios 20 | * 21 | * 另(我的自动布局库SDAutoLayout): 22 | * 一行代码搞定自动布局!支持Cell和Tableview高度自适应,Label和ScrollView内容自适应,致力于 23 | * 做最简单易用的AutoLayout库。 24 | * 视频教程:http://www.letv.com/ptv/vplay/24038772.html 25 | * 用法示例:https://github.com/gsdios/SDAutoLayout/blob/master/README.md 26 | * GitHub:https://github.com/gsdios/SDAutoLayout 27 | ********************************************************************************* 28 | 29 | */ 30 | 31 | #import 32 | 33 | #define SDColorCreater(r, g, b, a) [UIColor colorWithRed:(r / 255.0) green:(g / 255.0) blue:(b / 255.0) alpha:a] 34 | 35 | 36 | @interface UIView (SDExtension) 37 | 38 | @property (nonatomic, assign) CGFloat sd_height; 39 | @property (nonatomic, assign) CGFloat sd_width; 40 | 41 | @property (nonatomic, assign) CGFloat sd_y; 42 | @property (nonatomic, assign) CGFloat sd_x; 43 | 44 | @end 45 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/SDWebImage/SDWebImage/NSData+ImageContentType.m: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Fabrice Aneche on 06/01/14. 3 | // Copyright (c) 2014 Dailymotion. All rights reserved. 4 | // 5 | 6 | #import "NSData+ImageContentType.h" 7 | 8 | 9 | @implementation NSData (ImageContentType) 10 | 11 | + (NSString *)sd_contentTypeForImageData:(NSData *)data { 12 | uint8_t c; 13 | [data getBytes:&c length:1]; 14 | switch (c) { 15 | case 0xFF: 16 | return @"image/jpeg"; 17 | case 0x89: 18 | return @"image/png"; 19 | case 0x47: 20 | return @"image/gif"; 21 | case 0x49: 22 | case 0x4D: 23 | return @"image/tiff"; 24 | case 0x52: 25 | // R as RIFF for WEBP 26 | if ([data length] < 12) { 27 | return nil; 28 | } 29 | 30 | NSString *testString = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(0, 12)] encoding:NSASCIIStringEncoding]; 31 | if ([testString hasPrefix:@"RIFF"] && [testString hasSuffix:@"WEBP"]) { 32 | return @"image/webp"; 33 | } 34 | 35 | return nil; 36 | } 37 | return nil; 38 | } 39 | 40 | @end 41 | 42 | 43 | @implementation NSData (ImageContentTypeDeprecated) 44 | 45 | + (NSString *)contentTypeForImageData:(NSData *)data { 46 | return [self sd_contentTypeForImageData:data]; 47 | } 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/PageControl/TADotView.m: -------------------------------------------------------------------------------- 1 | // 2 | // TADotView.m 3 | // TAPageControl 4 | // 5 | // Created by Tanguy Aladenise on 2015-01-22. 6 | // Copyright (c) 2015 Tanguy Aladenise. All rights reserved. 7 | // 8 | 9 | #import "TADotView.h" 10 | 11 | @implementation TADotView 12 | 13 | 14 | - (instancetype)init 15 | { 16 | self = [super init]; 17 | if (self) { 18 | [self initialization]; 19 | } 20 | 21 | return self; 22 | } 23 | 24 | 25 | - (id)initWithFrame:(CGRect)frame 26 | { 27 | self = [super initWithFrame:frame]; 28 | if (self) { 29 | [self initialization]; 30 | } 31 | return self; 32 | } 33 | 34 | 35 | - (id)initWithCoder:(NSCoder *)aDecoder 36 | { 37 | self = [super initWithCoder:aDecoder]; 38 | if (self) { 39 | [self initialization]; 40 | } 41 | 42 | return self; 43 | } 44 | 45 | - (void)initialization 46 | { 47 | self.backgroundColor = [UIColor clearColor]; 48 | self.layer.cornerRadius = CGRectGetWidth(self.frame) / 2; 49 | self.layer.borderColor = [UIColor whiteColor].CGColor; 50 | self.layer.borderWidth = 2; 51 | } 52 | 53 | 54 | - (void)changeActivityState:(BOOL)active 55 | { 56 | if (active) { 57 | self.backgroundColor = [UIColor whiteColor]; 58 | } else { 59 | self.backgroundColor = [UIColor clearColor]; 60 | } 61 | } 62 | 63 | @end 64 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/XWDrawerAnimator/XWDrawerAnimator.h: -------------------------------------------------------------------------------- 1 | // 2 | // XWDrawerAnimator.h 3 | // XWTransitionDemo 4 | // 5 | // Created by wazrx on 16/6/15. 6 | // Copyright © 2016年 wazrx. All rights reserved. 7 | // 8 | 9 | #import "XWTransitionAnimator.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | typedef NS_ENUM(NSUInteger, XWDrawerAnimatorDirection) { 14 | XWDrawerAnimatorDirectionLeft, 15 | XWDrawerAnimatorDirectionRight, 16 | XWDrawerAnimatorDirectionTop, 17 | XWDrawerAnimatorDirectionBottom 18 | }; 19 | 20 | @interface XWDrawerAnimator : XWTransitionAnimator 21 | 22 | /**fromVC的缩放比例, 如果Flip效果,比例默认为0.8, 否者为1.0不缩放*/ 23 | @property (nonatomic, assign) CGFloat scaleRatio; 24 | /**视差效果,类似于QQ的设置界面弹出效果, 和flipEnable只能选择其一,如果都设置为YES,后设置的生效*/ 25 | @property (nonatomic, assign) BOOL parallaxEnable; 26 | /**翻转效果,类似于淘宝选择规格时,后面视图的动画效果*/ 27 | @property (nonatomic, assign) BOOL flipEnable; 28 | 29 | /** 30 | * 初始化一个转场抽屉效果器 31 | * 32 | * @param direction 抽屉效果触发方向 33 | * @param distance 显示在屏幕中的宽度或者高度,如果传0,默认就是当前屏幕的高度或者宽度 34 | * 35 | * @return animator 36 | */ 37 | + (instancetype)xw_animatorWithDirection:(XWDrawerAnimatorDirection)direction moveDistance:(CGFloat)distance; 38 | 39 | /** 40 | * 开启边缘(就是屏幕除开toView所占用的部分)back手势和边缘点击返回效果,类似于QQ设置界面的返回效果 41 | * 42 | * @param backConfig 返回操作,您的dismiss或者pop操作 43 | */ 44 | - (void)xw_enableEdgeGestureAndBackTapWithConfig:(dispatch_block_t)backConfig; 45 | 46 | @end 47 | 48 | NS_ASSUME_NONNULL_END -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/Masonry/Masonry/MASViewAttribute.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASAttribute.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 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/XWFilterAnimator/XWFilterAnimator+XWSwipe.m: -------------------------------------------------------------------------------- 1 | // 2 | // XWFilterAnimator+XWSwipe.m 3 | // XWTransitionDemo 4 | // 5 | // Created by wazrx on 16/6/17. 6 | // Copyright © 2016年 wazrx. All rights reserved. 7 | // 8 | 9 | #import "XWFilterAnimator+XWSwipe.h" 10 | 11 | @implementation XWFilterAnimator (XWSwipe) 12 | 13 | - (void)xw_swipeAnimationFor:(XWFilterTransitionView *)filterView transitionContext:(id)transitionContext duration:(NSTimeInterval)duration toFlag:(BOOL)flag { 14 | CGFloat angle = self.revers && !flag ? self.startAngle + M_PI : self.startAngle; 15 | CIVector *vector = [filterView xw_getInnerVector]; 16 | CIFilter *filter = [CIFilter filterWithName:@"CISwipeTransition" 17 | keysAndValues: 18 | kCIInputExtentKey, vector, 19 | kCIInputColorKey, [CIColor colorWithRed:0 green:0 blue:0 alpha:0], 20 | kCIInputAngleKey, @(angle), 21 | kCIInputWidthKey, @80.0, 22 | @"inputOpacity", @0.0, 23 | nil]; 24 | filterView.filter = filter; 25 | [XWFilterTransitionView xw_animationWith:filterView duration:duration completion:^(BOOL finished) { 26 | [filterView removeFromSuperview]; 27 | [transitionContext completeTransition:![transitionContext transitionWasCancelled]]; 28 | }]; 29 | } 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/XWFilterAnimator/XWFilterAnimator+XWFlash.m: -------------------------------------------------------------------------------- 1 | // 2 | // XWFilterAnimator+XWFlash.m 3 | // XWTransitionDemo 4 | // 5 | // Created by wazrx on 16/6/19. 6 | // Copyright © 2016年 wazrx. All rights reserved. 7 | // 8 | 9 | #import "XWFilterAnimator+XWFlash.h" 10 | 11 | @implementation XWFilterAnimator (XWFlash) 12 | 13 | - (void)xw_flashAnimationFor:(XWFilterTransitionView *)filterView transitionContext:(id)transitionContext duration:(NSTimeInterval)duration{ 14 | CGSize size = filterView.frame.size; 15 | CIFilter *filter = [CIFilter filterWithName:@"CIFlashTransition" 16 | keysAndValues: 17 | kCIInputCenterKey, [CIVector vectorWithCGPoint:CGPointMake(size.width, size.height)], 18 | kCIInputColorKey, [CIColor colorWithRed:1.0 green:0.8 blue:0.6 alpha:1], 19 | @"inputMaxStriationRadius", @2.5, 20 | @"inputStriationStrength", @0.5, 21 | @"inputStriationContrast", @1.37, 22 | @"inputFadeThreshold", @0.5, 23 | nil]; 24 | filterView.filter = filter; 25 | [XWFilterTransitionView xw_animationWith:filterView duration:duration completion:^(BOOL finished) { 26 | [filterView removeFromSuperview]; 27 | [transitionContext completeTransition:![transitionContext transitionWasCancelled]]; 28 | }]; 29 | } 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/XWFilterAnimator/XWFilterAnimator+XWCopyMachine.m: -------------------------------------------------------------------------------- 1 | // 2 | // XWFilterAnimator+XWCopyMachine.m 3 | // XWTransitionDemo 4 | // 5 | // Created by wazrx on 16/6/19. 6 | // Copyright © 2016年 wazrx. All rights reserved. 7 | // 8 | 9 | #import "XWFilterAnimator+XWCopyMachine.h" 10 | 11 | @implementation XWFilterAnimator (XWCopyMachine) 12 | 13 | - (void)xw_copyMachineAnimationFor:(XWFilterTransitionView *)filterView transitionContext:(id)transitionContext duration:(NSTimeInterval)duration toFlag:(BOOL)flag{ 14 | CGFloat angle = self.revers && !flag ? self.startAngle + M_PI : self.startAngle; 15 | CIVector *vector = [filterView xw_getInnerVector]; 16 | CIFilter *filter = [CIFilter filterWithName:@"CICopyMachineTransition" 17 | keysAndValues: 18 | kCIInputExtentKey, vector, 19 | kCIInputColorKey, [CIColor colorWithRed:.6 green:1 blue:.8 alpha:1], 20 | kCIInputAngleKey, @(angle), 21 | kCIInputWidthKey, @50.0, 22 | @"inputOpacity", @1.0, 23 | nil]; 24 | filterView.filter = filter; 25 | [XWFilterTransitionView xw_animationWith:filterView duration:duration completion:^(BOOL finished) { 26 | [filterView removeFromSuperview]; 27 | [transitionContext completeTransition:![transitionContext transitionWasCancelled]]; 28 | }]; 29 | } 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/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 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/Masonry/Masonry/MASViewConstraint.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASConstraint.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 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/MJExtension/MJExtension/MJProperty.h: -------------------------------------------------------------------------------- 1 | // 2 | // MJProperty.h 3 | // MJExtensionExample 4 | // 5 | // Created by MJ Lee on 15/4/17. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 包装一个成员属性 8 | 9 | #import 10 | #import 11 | #import "MJPropertyType.h" 12 | #import "MJPropertyKey.h" 13 | 14 | /** 15 | * 包装一个成员 16 | */ 17 | @interface MJProperty : NSObject 18 | /** 成员属性 */ 19 | @property (nonatomic, assign) objc_property_t property; 20 | /** 成员属性的名字 */ 21 | @property (nonatomic, readonly) NSString *name; 22 | 23 | /** 成员属性的类型 */ 24 | @property (nonatomic, readonly) MJPropertyType *type; 25 | /** 成员属性来源于哪个类(可能是父类) */ 26 | @property (nonatomic, assign) Class srcClass; 27 | 28 | /**** 同一个成员属性 - 父类和子类的行为可能不一致(originKey、propertyKeys、objectClassInArray) ****/ 29 | /** 设置最原始的key */ 30 | - (void)setOriginKey:(id)originKey forClass:(Class)c; 31 | /** 对应着字典中的多级key(里面存放的数组,数组里面都是MJPropertyKey对象) */ 32 | - (NSArray *)propertyKeysForClass:(Class)c; 33 | 34 | /** 模型数组中的模型类型 */ 35 | - (void)setObjectClassInArray:(Class)objectClass forClass:(Class)c; 36 | - (Class)objectClassInArrayForClass:(Class)c; 37 | /**** 同一个成员变量 - 父类和子类的行为可能不一致(key、keys、objectClassInArray) ****/ 38 | 39 | /** 40 | * 设置object的成员变量值 41 | */ 42 | - (void)setValue:(id)value forObject:(id)object; 43 | /** 44 | * 得到object的成员属性值 45 | */ 46 | - (id)valueForObject:(id)object; 47 | 48 | /** 49 | * 初始化 50 | */ 51 | + (instancetype)cachedPropertyWithProperty:(objc_property_t)property; 52 | 53 | @end 54 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/XWFilterAnimator/XWFilterAnimator+XWMod.m: -------------------------------------------------------------------------------- 1 | // 2 | // XWFilterAnimator+XWMod.m 3 | // XWTransitionDemo 4 | // 5 | // Created by wazrx on 16/6/19. 6 | // Copyright © 2016年 wazrx. All rights reserved. 7 | // 8 | 9 | #import "XWFilterAnimator+XWMod.h" 10 | 11 | @implementation XWFilterAnimator (XWMod) 12 | 13 | - (void)xw_modAnimationFor:(XWFilterTransitionView *)filterView transitionContext:(id)transitionContext duration:(NSTimeInterval)duration toFlag:(BOOL)flag{ 14 | CGFloat angle = self.revers && !flag ? self.startAngle + M_PI : self.startAngle; 15 | CIVector *vector = [filterView xw_getInnerVector]; 16 | CIFilter *filter = [CIFilter filterWithName: @"CIModTransition" 17 | keysAndValues: 18 | kCIInputCenterKey,[CIVector vectorWithX:0.5 * vector.CGRectValue.size.width 19 | Y:0.5 * vector.CGRectValue.size.height], 20 | kCIInputAngleKey, @(angle), 21 | kCIInputRadiusKey, @30.0, 22 | @"inputCompression", @10.0, 23 | nil]; 24 | filterView.filter = filter; 25 | [XWFilterTransitionView xw_animationWith:filterView duration:duration completion:^(BOOL finished) { 26 | [filterView removeFromSuperview]; 27 | [transitionContext completeTransition:![transitionContext transitionWasCancelled]]; 28 | }]; 29 | } 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/XWFilterAnimator/XWFilterAnimator+XWMask.m: -------------------------------------------------------------------------------- 1 | // 2 | // XWFilterAnimator+XWMask.m 3 | // XWTransitionDemo 4 | // 5 | // Created by wazrx on 16/6/17. 6 | // Copyright © 2016年 wazrx. All rights reserved. 7 | // 8 | 9 | #import "XWFilterAnimator+XWMask.h" 10 | 11 | @implementation XWFilterAnimator (XWMask) 12 | 13 | - (void)xw_maskAnimationFor:(XWFilterTransitionView *)filterView transitionContext:(id)transitionContext duration:(NSTimeInterval)duration { 14 | CGFloat height = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey].view.frame.size.height; 15 | CIImage *maskImg = self.maskImg ? [CIImage imageWithCGImage:self.maskImg.CGImage] : [CIImage imageWithCGImage:[UIImage imageNamed:@"mask.jpg"].CGImage]; 16 | CIFilter *filter = [CIFilter filterWithName: @"CIDisintegrateWithMaskTransition" 17 | keysAndValues: 18 | kCIInputMaskImageKey, maskImg, 19 | @"inputShadowRadius", @10.0, 20 | @"inputShadowDensity", @0.7, 21 | @"inputShadowOffset", [CIVector vectorWithX:0.0 Y:-0.05 * height], 22 | nil]; 23 | filterView.filter = filter; 24 | [XWFilterTransitionView xw_animationWith:filterView duration:duration completion:^(BOOL finished) { 25 | [filterView removeFromSuperview]; 26 | [transitionContext completeTransition:![transitionContext transitionWasCancelled]]; 27 | }]; 28 | } 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/MJExtension/MJExtension/MJFoundation.m: -------------------------------------------------------------------------------- 1 | // 2 | // MJFoundation.m 3 | // MJExtensionExample 4 | // 5 | // Created by MJ Lee on 14/7/16. 6 | // Copyright (c) 2014年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJFoundation.h" 10 | #import "MJExtensionConst.h" 11 | #import 12 | 13 | static NSSet *foundationClasses_; 14 | 15 | @implementation MJFoundation 16 | 17 | + (NSSet *)foundationClasses 18 | { 19 | if (foundationClasses_ == nil) { 20 | // 集合中没有NSObject,因为几乎所有的类都是继承自NSObject,具体是不是NSObject需要特殊判断 21 | foundationClasses_ = [NSSet setWithObjects: 22 | [NSURL class], 23 | [NSDate class], 24 | [NSValue class], 25 | [NSData class], 26 | [NSError class], 27 | [NSArray class], 28 | [NSDictionary class], 29 | [NSString class], 30 | [NSAttributedString class], nil]; 31 | } 32 | return foundationClasses_; 33 | } 34 | 35 | + (BOOL)isClassFromFoundation:(Class)c 36 | { 37 | if (c == [NSObject class] || c == [NSManagedObject class]) return YES; 38 | 39 | __block BOOL result = NO; 40 | [[self foundationClasses] enumerateObjectsUsingBlock:^(Class foundationClass, BOOL *stop) { 41 | if ([c isSubclassOfClass:foundationClass]) { 42 | result = YES; 43 | *stop = YES; 44 | } 45 | }]; 46 | return result; 47 | } 48 | @end 49 | -------------------------------------------------------------------------------- /LYFStoreDemo/MainVC/C/ProductDetailVC/Pay/DCPayWayCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // DCPayWayCell.m 3 | // CDDStoreDemo 4 | // 5 | // Created by apple on 2017/4/9. 6 | // Copyright © 2017年 apple. All rights reserved. 7 | // 8 | 9 | #import "DCPayWayCell.h" 10 | 11 | #import "DCConsts.h" 12 | 13 | @interface DCPayWayCell() 14 | 15 | @property (nonatomic,strong) UIImageView *accessoryImageView; 16 | 17 | @end 18 | 19 | @implementation DCPayWayCell 20 | 21 | - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 22 | { 23 | self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 24 | if (self) { 25 | [self setSelectionStyle:UITableViewCellSelectionStyleNone]; 26 | [self.contentView addSubview:self.accessoryImageView]; 27 | self.textLabel.font = [UIFont systemFontOfSize:16]; 28 | self.detailTextLabel.font = [UIFont systemFontOfSize:14]; 29 | } 30 | return self; 31 | } 32 | 33 | - (UIImageView *)accessoryImageView{ 34 | if (!_accessoryImageView) { 35 | _accessoryImageView=[[UIImageView alloc]initWithFrame:CGRectMake(ScreenW - 35.0, 30.0, 20.0, 20.0)]; 36 | [_accessoryImageView setImage:[UIImage imageNamed:@"payWay"]]; 37 | } 38 | return _accessoryImageView; 39 | } 40 | 41 | 42 | - (void)setSelected:(BOOL)selected animated:(BOOL)animated { 43 | [super setSelected:selected animated:animated]; 44 | if (selected) { 45 | [self.accessoryImageView setImage:[UIImage imageNamed:@"payWay_S"]]; 46 | }else{ 47 | [self.accessoryImageView setImage:[UIImage imageNamed:@"payWay"]]; 48 | } 49 | } 50 | 51 | 52 | @end 53 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/SDCycleScrollView/SDCycleScrollView/Lib/SDCycleScrollView/SDCollectionViewCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // SDCollectionViewCell.h 3 | // SDCycleScrollView 4 | // 5 | // Created by aier on 15-3-22. 6 | // Copyright (c) 2015年 GSD. All rights reserved. 7 | // 8 | 9 | /* 10 | 11 | ********************************************************************************* 12 | * 13 | * 🌟🌟🌟 新建SDCycleScrollView交流QQ群:185534916 🌟🌟🌟 14 | * 15 | * 在您使用此自动轮播库的过程中如果出现bug请及时以以下任意一种方式联系我们,我们会及时修复bug并 16 | * 帮您解决问题。 17 | * 新浪微博:GSD_iOS 18 | * Email : gsdios@126.com 19 | * GitHub: https://github.com/gsdios 20 | * 21 | * 另(我的自动布局库SDAutoLayout): 22 | * 一行代码搞定自动布局!支持Cell和Tableview高度自适应,Label和ScrollView内容自适应,致力于 23 | * 做最简单易用的AutoLayout库。 24 | * 视频教程:http://www.letv.com/ptv/vplay/24038772.html 25 | * 用法示例:https://github.com/gsdios/SDAutoLayout/blob/master/README.md 26 | * GitHub:https://github.com/gsdios/SDAutoLayout 27 | ********************************************************************************* 28 | 29 | */ 30 | 31 | 32 | 33 | #import 34 | 35 | @interface SDCollectionViewCell : UICollectionViewCell 36 | 37 | @property (weak, nonatomic) UIImageView *imageView; 38 | @property (copy, nonatomic) NSString *title; 39 | 40 | @property (nonatomic, strong) UIColor *titleLabelTextColor; 41 | @property (nonatomic, strong) UIFont *titleLabelTextFont; 42 | @property (nonatomic, strong) UIColor *titleLabelBackgroundColor; 43 | @property (nonatomic, assign) CGFloat titleLabelHeight; 44 | 45 | @property (nonatomic, assign) BOOL hasConfigured; 46 | 47 | /** 只展示文字轮播 */ 48 | @property (nonatomic, assign) BOOL onlyDisplayText; 49 | 50 | @end 51 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/XWTransition/XWFilterAnimator/XWFilterAnimator.h: -------------------------------------------------------------------------------- 1 | // 2 | // XWFilterAnimator.h 3 | // XWTransitionDemo 4 | // 5 | // Created by wazrx on 16/6/17. 6 | // Copyright © 2016年 wazrx. All rights reserved. 7 | // XWFilterAnimator 全都是基于不同的CIFilter产生的一些滤镜效果,貌似在模拟器无法运行这些效果,请在真机上测试 8 | 9 | #import "XWTransitionAnimator.h" 10 | #import "XWFilterTransitionView.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | typedef NS_ENUM(NSUInteger, XWFilterAnimatorType) { 15 | XWFilterAnimatorTypeBoxBlur,//模糊转场,对应CIBoxBlur 16 | XWFilterAnimatorTypeSwipe,//滑动过渡转场,对应CISwipeTranstion 17 | XWFilterAnimatorTypeBarSwipe,//对应CIBarSwipeTranstion 18 | XWFilterAnimatorTypeMask,//按指定遮罩图片转场,对应CIDisintegrateWithMaskTransition 19 | XWFilterAnimatorTypeFlash,//闪烁转场,对应CIFlashTransition 20 | XWFilterAnimatorTypeMod,//条纹转场 对应CIModTransition 21 | XWFilterAnimatorTypePageCurl,//翻页转场 对应CIPageCurlWithShadowTransition 22 | XWFilterAnimatorTypeRipple,//波纹转场,对应CIRippleTransition 23 | XWFilterAnimatorTypeCopyMachine, //效果和XWCoolAnimator中的Scanning效果类似,对应CICopyMachineTransition 24 | }; 25 | 26 | @interface XWFilterAnimator : XWTransitionAnimator 27 | 28 | /**for XWFilterAnimatorTypeMask,如果为空,则为默认的maskImg*/ 29 | @property (nonatomic, strong) UIImage *maskImg; 30 | /**是否翻转,对于有转场有方向之分的此属性可用,如果为YES,如果to转场为左,那么back转场为右,默认为YES*/ 31 | @property (nonatomic, assign) BOOL revers; 32 | /**开始角度,对于有转场方向的转场此属性可用,0为左,M_PI_2 为下 M_PI 为右 M_PI_2 * 3为上,也可指定任意开始角度*/ 33 | @property (nonatomic, assign) CGFloat startAngle; 34 | 35 | /** 36 | * 初始化一个filter转场效果器 37 | * 38 | * @param type 效果枚举值 39 | * 40 | * @return 效果器 41 | */ 42 | + (instancetype)xw_animatorWithType:(XWFilterAnimatorType)type; 43 | 44 | @end 45 | 46 | NS_ASSUME_NONNULL_END -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/SDWebImage/SDWebImage/SDWebImageCompat.m: -------------------------------------------------------------------------------- 1 | // 2 | // SDWebImageCompat.m 3 | // SDWebImage 4 | // 5 | // Created by Olivier Poitrey on 11/12/12. 6 | // Copyright (c) 2012 Dailymotion. All rights reserved. 7 | // 8 | 9 | #import "SDWebImageCompat.h" 10 | 11 | #if !__has_feature(objc_arc) 12 | #error SDWebImage is ARC only. Either turn on ARC for the project or use -fobjc-arc flag 13 | #endif 14 | 15 | inline UIImage *SDScaledImageForKey(NSString *key, UIImage *image) { 16 | if (!image) { 17 | return nil; 18 | } 19 | 20 | if ([image.images count] > 0) { 21 | NSMutableArray *scaledImages = [NSMutableArray array]; 22 | 23 | for (UIImage *tempImage in image.images) { 24 | [scaledImages addObject:SDScaledImageForKey(key, tempImage)]; 25 | } 26 | 27 | return [UIImage animatedImageWithImages:scaledImages duration:image.duration]; 28 | } 29 | else { 30 | if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) { 31 | CGFloat scale = 1; 32 | if (key.length >= 8) { 33 | NSRange range = [key rangeOfString:@"@2x."]; 34 | if (range.location != NSNotFound) { 35 | scale = 2.0; 36 | } 37 | 38 | range = [key rangeOfString:@"@3x."]; 39 | if (range.location != NSNotFound) { 40 | scale = 3.0; 41 | } 42 | } 43 | 44 | UIImage *scaledImage = [[UIImage alloc] initWithCGImage:image.CGImage scale:scale orientation:image.imageOrientation]; 45 | image = scaledImage; 46 | } 47 | return image; 48 | } 49 | } 50 | 51 | NSString *const SDWebImageErrorDomain = @"SDWebImageErrorDomain"; 52 | -------------------------------------------------------------------------------- /LYFStoreDemo/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /LYFStoreDemo/Plist/ShopItemB.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | attr 7 | 8 | attrname 9 | 机身颜色 10 | 11 | list 12 | 13 | 14 | infoname 15 | 金色 16 | plusprice 17 | 0 18 | 19 | 20 | infoname 21 | 银色 22 | plusprice 23 | 0 24 | 25 | 26 | 27 | 28 | attr 29 | 30 | attrname 31 | 网络类型 32 | 33 | list 34 | 35 | 36 | infoname 37 | 4G全网通 38 | plusprice 39 | 0 40 | 41 | 42 | infoname 43 | 3G联通 44 | plusprice 45 | 0 46 | 47 | 48 | infoname 49 | 3G移动 50 | plusprice 51 | 0 52 | 53 | 54 | 55 | 56 | attr 57 | 58 | attrname 59 | 容量大小 60 | 61 | list 62 | 63 | 64 | infoname 65 | 64G 66 | plusprice 67 | 0 68 | 69 | 70 | infoname 71 | 16G 72 | plusprice 73 | 100 74 | 75 | 76 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /LYFStoreDemo/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /LYFStoreDemo/Frameworks/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 | -------------------------------------------------------------------------------- /LYFStoreDemo/Plist/MallShops.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | goods_address 7 | 江苏 南京 8 | sale_count 9 | 222 10 | expressage 11 | 12 12 | goods_title 13 | Apple 苹果 iPhone7Plus 全网4G 5.5寸双摄像头 14 | goodspics 15 | shopImage03 16 | price 17 | 4999 18 | sales 19 | 293 20 | secondtitle 21 | 采用iOS 10系统,配置A10芯片。图像防抖功能 22 | stock 23 | 12 24 | 25 | 26 | goods_address 27 | 江苏 苏州 28 | expressage 29 | 30 30 | sale_count 31 | 123 32 | goods_title 33 | Apple 苹果 iPhone6s 全网4G 4.7寸 3D touch 1200万像素 热销机型 34 | goodspics 35 | shopImage02 36 | price 37 | 4999 38 | sales 39 | 199 40 | secondtitle 41 | 1200万像素,4.7英寸屏幕,采用64位处理器 42 | stock 43 | 20 44 | 45 | 46 | goods_address 47 | 江苏 盐城 48 | expressage 49 | 10 50 | sale_count 51 | 366 52 | goods_title 53 | Apple 苹果 iPhone7 全网4G 4.7寸 最新款 54 | goodspics 55 | shopImage01 56 | price 57 | 4999 58 | sales 59 | 427 60 | secondtitle 61 | 128G容量畅销首选! 62 | stock 63 | 600 64 | 65 | 66 | 67 | --------------------------------------------------------------------------------