├── pinduoduo ├── Mp3 │ └── silence.mp3 ├── Assets.xcassets │ ├── Contents.json │ ├── AppIcon.appiconset │ │ ├── Icon.png │ │ ├── Icon-40.png │ │ ├── Icon-72.png │ │ ├── Icon-76.png │ │ ├── Icon@2x.png │ │ ├── Icon-40@2x.png │ │ ├── Icon-40@3x.png │ │ ├── Icon-60@2x.png │ │ ├── Icon-60@3x.png │ │ ├── Icon-72@2x.png │ │ ├── Icon-76@2x.png │ │ ├── Icon-Small.png │ │ ├── Icon-83.5@2x.png │ │ ├── Icon-Small-50.png │ │ ├── Icon-Small@2x.png │ │ ├── Icon-Small@3x.png │ │ └── Icon-Small-50@2x.png │ ├── AppIcon-2.appiconset │ │ ├── Icon.png │ │ ├── Icon-40.png │ │ ├── Icon-72.png │ │ ├── Icon-76.png │ │ ├── Icon@2x.png │ │ ├── Icon-40@2x.png │ │ ├── Icon-40@3x.png │ │ ├── Icon-60@2x.png │ │ ├── Icon-60@3x.png │ │ ├── Icon-72@2x.png │ │ ├── Icon-76@2x.png │ │ ├── Icon-Small.png │ │ ├── Icon-83.5@2x.png │ │ ├── Icon-Small-50.png │ │ ├── Icon-Small@2x.png │ │ ├── Icon-Small@3x.png │ │ └── Icon-Small-50@2x.png │ ├── LaunchImage.launchimage │ │ ├── LaunchImage.png │ │ ├── LaunchImage@2x.png │ │ ├── LaunchImage-700@2x.png │ │ ├── LaunchImage-568h@2x.png │ │ ├── LaunchImage-700-568h@2x.png │ │ ├── LaunchImage-800-667h@2x.png │ │ ├── LaunchImage-Portrait~ipad.png │ │ ├── LaunchImage-Portrait@2x~ipad.png │ │ ├── LaunchImage-700-Portrait~ipad.png │ │ ├── LaunchImage-700-Portrait@2x~ipad.png │ │ └── LaunchImage-800-Portrait-736h@3x.png │ └── Brand Assets.launchimage │ │ └── Contents.json ├── Resource │ ├── Image │ │ ├── logo.png │ │ ├── bulb@2x.png │ │ ├── bulb@3x.png │ │ ├── dot@2x.png │ │ ├── dot@3x.png │ │ ├── group@2x.png │ │ ├── group@3x.png │ │ ├── home@2x.png │ │ ├── home@3x.png │ │ ├── login-qq.png │ │ ├── splash-1.png │ │ ├── splash-2.png │ │ ├── splash-3.png │ │ ├── splash-4.png │ │ ├── splash-5.png │ │ ├── splash-6.png │ │ ├── border@2x.png │ │ ├── border@3x.png │ │ ├── dustbin@2x.png │ │ ├── dustbin@3x.png │ │ ├── gantan@2x.png │ │ ├── gantan@3x.png │ │ ├── go_top@2x.png │ │ ├── go_top@3x.png │ │ ├── login_rect.png │ │ ├── new_tip@2x.png │ │ ├── new_tip@3x.png │ │ ├── add_favor@2x.png │ │ ├── add_favor@3x.png │ │ ├── cat_like@2x.png │ │ ├── cat_like@3x.png │ │ ├── down_arrow@2x.png │ │ ├── down_arrow@3x.png │ │ ├── home-nav-bg.png │ │ ├── login-phone.png │ │ ├── login-qq@2x.png │ │ ├── login-qq@3x.png │ │ ├── login-wexin.png │ │ ├── login_rect@2x.png │ │ ├── login_rect@3x.png │ │ ├── mall_icon@2x.png │ │ ├── mall_icon@3x.png │ │ ├── share_button.png │ │ ├── address_add@2x.png │ │ ├── address_add@3x.png │ │ ├── address_edit@2x.png │ │ ├── address_edit@3x.png │ │ ├── arrow_right@2x.png │ │ ├── arrow_right@3x.png │ │ ├── cancel_icon@2x.png │ │ ├── cancel_icon@3x.png │ │ ├── cat_default@2x.jpg │ │ ├── cat_dislike@2x.png │ │ ├── cat_dislike@3x.png │ │ ├── default_load@2x.png │ │ ├── default_load@3x.png │ │ ├── default_square.png │ │ ├── free_coupon@2x.png │ │ ├── login-footer@2x.png │ │ ├── login-footer@3x.png │ │ ├── login-phone@2x.png │ │ ├── login-phone@3x.png │ │ ├── login-weibo@2x.png │ │ ├── login-weibo@3x.png │ │ ├── login-wexin@2x.png │ │ ├── login-wexin@3x.png │ │ ├── pull_loading@2x.png │ │ ├── pull_loading@3x.png │ │ ├── address_close@2x.png │ │ ├── address_close@3x.png │ │ ├── address_delete@2x.png │ │ ├── address_delete@3x.png │ │ ├── address_empty@2x.png │ │ ├── address_empty@3x.png │ │ ├── address_loading@2x.png │ │ ├── address_select@2x.png │ │ ├── address_select@3x.png │ │ ├── banner_default@2x.png │ │ ├── banner_default@3x.png │ │ ├── delay_load_icon@2x.png │ │ ├── delay_load_icon@3x.png │ │ ├── question_mark@2x.png │ │ ├── question_mark@3x.png │ │ ├── send_pic_or_video.png │ │ ├── service_disable@2x.png │ │ ├── service_disable@3x.png │ │ ├── service_enable@2x.png │ │ ├── service_enable@3x.png │ │ ├── add_favor_clicked@2x.png │ │ ├── add_favor_clicked@3x.png │ │ ├── default_mall_logo@2x.png │ │ ├── default_mall_logo@3x.png │ │ ├── login-footer-text@2x.png │ │ ├── login-footer-text@3x.png │ │ ├── login_nav_backgroud.png │ │ ├── menu_mask_background.png │ │ ├── personal_my_group@2x.png │ │ ├── personal_my_group@3x.png │ │ ├── phone-login-agree@2x.png │ │ ├── phone-login-agree@3x.png │ │ ├── phone-login-lock@2x.png │ │ ├── phone-login-lock@3x.png │ │ ├── phone-login-phone@2x.png │ │ ├── phone-login-phone@3x.png │ │ ├── rank_right_arrow@2x.png │ │ ├── rank_right_arrow@3x.png │ │ ├── address_right_arrow@2x.png │ │ ├── address_right_arrow@3x.png │ │ ├── chat_bubble_outgoing@2x.png │ │ ├── chat_bubble_outgoing@3x.png │ │ ├── login_button_background.png │ │ ├── personal_my_address@2x.png │ │ ├── personal_my_address@3x.png │ │ ├── personal_my_coupon@2x.png │ │ ├── personal_my_coupon@3x.png │ │ ├── personal_my_favorite@2x.png │ │ ├── personal_my_favorite@3x.png │ │ ├── personal_my_lottery@2x.png │ │ ├── personal_my_lottery@3x.png │ │ ├── personal_my_message@2x.png │ │ ├── personal_my_message@3x.png │ │ ├── personal_order_arrow@2x.png │ │ ├── personal_order_arrow@3x.png │ │ ├── personal_order_unpay@2x.png │ │ ├── personal_order_unpay@3x.png │ │ ├── phone-login-nonagree@2x.png │ │ ├── phone-login-nonagree@3x.png │ │ ├── photoBrowseLoading@2x.png │ │ ├── photoBrowseLoading@3x.png │ │ ├── superbrand_discount@2x.png │ │ ├── superbrand_soldout@2x.png │ │ ├── address_default_check@2x.png │ │ ├── address_default_check@3x.png │ │ ├── chat_bubble_incomming@2x.png │ │ ├── chat_bubble_incomming@3x.png │ │ ├── personal_my_suggestion@2x.png │ │ ├── personal_my_suggestion@3x.png │ │ ├── personal_order_unsend@2x.png │ │ ├── personal_order_unsend@3x.png │ │ ├── address_default_uncheck@2x.png │ │ ├── address_default_uncheck@3x.png │ │ ├── login_button_background@2x.png │ │ ├── login_button_background@3x.png │ │ ├── personal_order_after_sale@2x.png │ │ ├── personal_order_after_sale@3x.png │ │ ├── personal_order_unreceive@2x.png │ │ ├── personal_order_unreceive@3x.png │ │ ├── personal_order_unremark@2x.png │ │ ├── personal_order_unremark@3x.png │ │ ├── personal_header_avatar_logo@2x.png │ │ ├── personal_header_avatar_logo@3x.png │ │ ├── login_button_highlight_background.png │ │ ├── login_button_highlight_background@2x.png │ │ ├── login_button_highlight_background@3x.png │ │ ├── personal_header_avatar_placeholder@2x.png │ │ └── personal_header_avatar_placeholder@3x.png │ └── Global │ │ ├── hotlist.png │ │ ├── person.png │ │ ├── search.png │ │ ├── SuperBrand.png │ │ ├── btn_backItem.png │ │ ├── findhome │ │ ├── findhome_0.png │ │ ├── findhome_1.png │ │ ├── findhome_2.png │ │ ├── findhome_3.png │ │ ├── findhome_4.png │ │ ├── findhome_5.png │ │ ├── findhome_6.png │ │ ├── findhome_7.png │ │ ├── findhome_8.png │ │ └── findhome_9.png │ │ └── MAPrefixHeader.pch ├── Vendor │ ├── MJRefresh │ │ ├── MJRefresh.bundle │ │ │ └── arrow@2x.png │ │ ├── Base │ │ │ ├── MJRefreshBackFooter.h │ │ │ ├── MJRefreshAutoFooter.h │ │ │ ├── MJRefreshHeader.h │ │ │ ├── MJRefreshFooter.h │ │ │ └── MJRefreshFooter.m │ │ ├── Custom │ │ │ ├── Footer │ │ │ │ ├── Auto │ │ │ │ │ ├── MJRefreshAutoNormalFooter.h │ │ │ │ │ ├── MJRefreshAutoGifFooter.h │ │ │ │ │ ├── MJRefreshAutoStateFooter.h │ │ │ │ │ ├── MJRefreshAutoNormalFooter.m │ │ │ │ │ └── MJRefreshAutoStateFooter.m │ │ │ │ └── Back │ │ │ │ │ ├── MJRefreshBackNormalFooter.h │ │ │ │ │ ├── MJRefreshBackStateFooter.h │ │ │ │ │ ├── MJRefreshBackGifFooter.h │ │ │ │ │ └── MJRefreshBackStateFooter.m │ │ │ └── Header │ │ │ │ ├── MJRefreshNormalHeader.h │ │ │ │ ├── MJRefreshGifHeader.h │ │ │ │ └── MJRefreshStateHeader.h │ │ ├── MJRefresh.h │ │ ├── UIView+MJExtension.h │ │ ├── UIScrollView+MJExtension.h │ │ ├── UIScrollView+MJRefresh.h │ │ ├── MJRefreshConst.m │ │ ├── UIView+MJExtension.m │ │ ├── MJRefreshConst.h │ │ └── UIScrollView+MJExtension.m │ ├── Masonry │ │ ├── MASLayoutConstraint.m │ │ ├── NSLayoutConstraint+MASDebugAdditions.h │ │ ├── MASLayoutConstraint.h │ │ ├── MASCompositeConstraint.h │ │ ├── Masonry.h │ │ ├── Info.plist │ │ ├── ViewController+MASAdditions.h │ │ ├── NSArray+MASShorthandAdditions.h │ │ ├── MASViewAttribute.m │ │ ├── MASViewAttribute.h │ │ ├── ViewController+MASAdditions.m │ │ ├── MASViewConstraint.h │ │ ├── MASConstraint+Private.h │ │ └── NSArray+MASAdditions.h │ ├── SDWebImage │ │ ├── UIImage+MultiFormat.h │ │ ├── SDWebImageOperation.h │ │ ├── UIImage+GIF.h │ │ ├── SDWebImageDecoder.h │ │ ├── UIImage+WebP.h │ │ ├── NSData+ImageContentType.h │ │ ├── UIView+WebCacheOperation.h │ │ ├── NSData+ImageContentType.m │ │ ├── SDWebImageCompat.m │ │ ├── SDWebImageCompat.h │ │ ├── UIView+WebCacheOperation.m │ │ └── UIImage+WebP.m │ ├── IMYAOPTableView │ │ ├── Private │ │ │ ├── IMYAOPTableViewUtils+Delegate.h │ │ │ ├── IMYAOPTableViewUtils+DataSource.h │ │ │ ├── IMYAOPTableViewUtils+Private.h │ │ │ └── UITableView+IMYAOPTableView.h │ │ ├── IMYAOPTableView.h │ │ └── TableUtils │ │ │ ├── IMYAOPTableViewInsertBody.m │ │ │ ├── IMYAOPTableViewInsertBody.h │ │ │ ├── IMYAOPTableViewUtils+Proxy.h │ │ │ ├── IMYAOPTableViewUtilsDefine.h │ │ │ └── IMYAOPTableViewUtils.h │ └── AFNetworking │ │ ├── UIKit+AFNetworking │ │ ├── UIImage+AFNetworking.h │ │ ├── UIKit+AFNetworking.h │ │ ├── UIActivityIndicatorView+AFNetworking.h │ │ ├── UIRefreshControl+AFNetworking.h │ │ └── UIProgressView+AFNetworking.h │ │ └── AFNetworking.h ├── Common │ ├── BaseViewController.h │ ├── BaseNavigationController.h │ ├── BaseTabBarController.h │ └── BaseViewController.m ├── Main │ ├── Home │ │ ├── Models │ │ │ ├── CommonDataModel.m │ │ │ ├── CollectionItemModel.m │ │ │ ├── SuperBrandDataModel.m │ │ │ ├── GoodsSubjectModel.m │ │ │ ├── MobileAppGroupsModel.m │ │ │ ├── RecommendSubjectsModel.m │ │ │ ├── CollectionItemModel.h │ │ │ ├── CommonDataModel.h │ │ │ ├── MobileAppGroupsModel.h │ │ │ ├── GoodsListDataModel.m │ │ │ ├── SuperBrandDataModel.h │ │ │ └── RecommendSubjectsModel.h │ │ ├── Controllers │ │ │ ├── HomeViewController副本.h │ │ │ └── HomeViewController.h │ │ ├── Views │ │ │ ├── SuperBrandView.h │ │ │ ├── MItemCollectionViewCell.h │ │ │ ├── GroupBuyView.h │ │ │ ├── OthersTableViewCell.h │ │ │ ├── GoodsListTableViewCell.h │ │ │ ├── SuperBrandTableViewCell.h │ │ │ ├── othersCollectionViewCell.h │ │ │ ├── MACarouselView.h │ │ │ ├── MItemCollectionViewCell.m │ │ │ ├── othersCollectionViewCell.m │ │ │ └── SuperBrandView.m │ │ └── Other │ │ │ └── IMYAOPDemo.h │ ├── OtherViewController.h │ ├── HotList │ │ └── Controllers │ │ │ ├── PushViewController.h │ │ │ ├── HotListViewController.h │ │ │ ├── PushViewController.m │ │ │ └── HotListViewController.m │ ├── Search │ │ └── Controllers │ │ │ ├── SearchViewController.h │ │ │ └── SearchViewController.m │ ├── Personal │ │ └── Controllers │ │ │ ├── PersonalViewController.h │ │ │ └── PersonalViewController.m │ ├── SuperBrand │ │ └── Controllers │ │ │ ├── SuperBrandViewController.h │ │ │ └── SuperBrandViewController.m │ └── OtherViewController.m ├── pinduoduo.xcdatamodeld │ ├── .xccurrentversion │ └── pinduoduo.xcdatamodel │ │ └── contents ├── Expand │ ├── Macros │ │ └── ThirdMacros.h │ ├── Category │ │ ├── UILable │ │ │ ├── UILabel+Paragraph.h │ │ │ └── UILabel+Paragraph.m │ │ ├── UIImage │ │ │ ├── UIImage+Alpha.h │ │ │ ├── UIImage+RoundedCorner.h │ │ │ ├── UIImage+XHRounded.h │ │ │ ├── UIImage+Utility.h │ │ │ ├── UIImage+Color.h │ │ │ ├── UIImage+Resize.h │ │ │ ├── UIImage+Utility.m │ │ │ ├── UIImage+Color.m │ │ │ └── UIImage+XHRounded.m │ │ ├── NSObject │ │ │ └── NSObject+modelConvertDic.h │ │ └── UIView │ │ │ ├── UIView+Convenience.h │ │ │ └── UIView+Convenience.m │ ├── Network │ │ └── NetworkHelper.h │ └── Tool │ │ └── AssistantTool.h ├── main.m ├── ViewController.m ├── AppDelegate.h ├── Info.plist ├── ViewController.h └── Base.lproj │ ├── Main.storyboard │ └── LaunchScreen.storyboard ├── pinduoduo.xcodeproj ├── xcuserdata │ ├── foscom.xcuserdatad │ │ ├── xcdebugger │ │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ └── machunlei.xcuserdatad │ │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ └── xcschememanagement.plist └── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcuserdata │ ├── foscom.xcuserdatad │ └── UserInterfaceState.xcuserstate │ └── machunlei.xcuserdatad │ └── UserInterfaceState.xcuserstate └── README.md /pinduoduo/Mp3/silence.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Mp3/silence.mp3 -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/logo.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Global/hotlist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Global/hotlist.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Global/person.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Global/person.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Global/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Global/search.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/bulb@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/bulb@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/bulb@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/bulb@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/dot@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/dot@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/dot@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/dot@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/group@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/group@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/group@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/group@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/home@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/home@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/home@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/home@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/login-qq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/login-qq.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/splash-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/splash-1.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/splash-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/splash-2.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/splash-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/splash-3.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/splash-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/splash-4.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/splash-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/splash-5.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/splash-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/splash-6.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/border@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/border@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/border@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/border@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/dustbin@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/dustbin@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/dustbin@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/dustbin@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/gantan@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/gantan@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/gantan@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/gantan@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/go_top@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/go_top@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/go_top@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/go_top@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/login_rect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/login_rect.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/new_tip@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/new_tip@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/new_tip@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/new_tip@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Global/SuperBrand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Global/SuperBrand.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Global/btn_backItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Global/btn_backItem.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/add_favor@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/add_favor@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/add_favor@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/add_favor@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/cat_like@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/cat_like@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/cat_like@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/cat_like@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/down_arrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/down_arrow@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/down_arrow@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/down_arrow@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/home-nav-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/home-nav-bg.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/login-phone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/login-phone.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/login-qq@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/login-qq@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/login-qq@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/login-qq@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/login-wexin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/login-wexin.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/login_rect@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/login_rect@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/login_rect@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/login_rect@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/mall_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/mall_icon@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/mall_icon@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/mall_icon@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/share_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/share_button.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/address_add@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/address_add@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/address_add@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/address_add@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/address_edit@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/address_edit@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/address_edit@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/address_edit@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/arrow_right@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/arrow_right@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/arrow_right@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/arrow_right@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/cancel_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/cancel_icon@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/cancel_icon@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/cancel_icon@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/cat_default@2x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/cat_default@2x.jpg -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/cat_dislike@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/cat_dislike@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/cat_dislike@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/cat_dislike@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/default_load@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/default_load@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/default_load@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/default_load@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/default_square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/default_square.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/free_coupon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/free_coupon@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/login-footer@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/login-footer@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/login-footer@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/login-footer@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/login-phone@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/login-phone@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/login-phone@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/login-phone@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/login-weibo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/login-weibo@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/login-weibo@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/login-weibo@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/login-wexin@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/login-wexin@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/login-wexin@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/login-wexin@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/pull_loading@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/pull_loading@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/pull_loading@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/pull_loading@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/address_close@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/address_close@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/address_close@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/address_close@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/address_delete@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/address_delete@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/address_delete@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/address_delete@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/address_empty@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/address_empty@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/address_empty@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/address_empty@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/address_loading@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/address_loading@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/address_select@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/address_select@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/address_select@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/address_select@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/banner_default@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/banner_default@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/banner_default@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/banner_default@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/delay_load_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/delay_load_icon@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/delay_load_icon@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/delay_load_icon@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/question_mark@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/question_mark@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/question_mark@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/question_mark@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/send_pic_or_video.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/send_pic_or_video.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/service_disable@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/service_disable@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/service_disable@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/service_disable@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/service_enable@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/service_enable@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/service_enable@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/service_enable@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Global/findhome/findhome_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Global/findhome/findhome_0.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Global/findhome/findhome_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Global/findhome/findhome_1.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Global/findhome/findhome_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Global/findhome/findhome_2.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Global/findhome/findhome_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Global/findhome/findhome_3.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Global/findhome/findhome_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Global/findhome/findhome_4.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Global/findhome/findhome_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Global/findhome/findhome_5.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Global/findhome/findhome_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Global/findhome/findhome_6.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Global/findhome/findhome_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Global/findhome/findhome_7.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Global/findhome/findhome_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Global/findhome/findhome_8.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Global/findhome/findhome_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Global/findhome/findhome_9.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/add_favor_clicked@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/add_favor_clicked@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/add_favor_clicked@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/add_favor_clicked@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/default_mall_logo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/default_mall_logo@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/default_mall_logo@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/default_mall_logo@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/login-footer-text@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/login-footer-text@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/login-footer-text@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/login-footer-text@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/login_nav_backgroud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/login_nav_backgroud.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/menu_mask_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/menu_mask_background.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/personal_my_group@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/personal_my_group@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/personal_my_group@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/personal_my_group@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/phone-login-agree@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/phone-login-agree@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/phone-login-agree@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/phone-login-agree@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/phone-login-lock@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/phone-login-lock@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/phone-login-lock@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/phone-login-lock@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/phone-login-phone@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/phone-login-phone@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/phone-login-phone@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/phone-login-phone@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/rank_right_arrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/rank_right_arrow@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/rank_right_arrow@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/rank_right_arrow@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/address_right_arrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/address_right_arrow@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/address_right_arrow@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/address_right_arrow@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/chat_bubble_outgoing@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/chat_bubble_outgoing@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/chat_bubble_outgoing@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/chat_bubble_outgoing@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/login_button_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/login_button_background.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/personal_my_address@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/personal_my_address@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/personal_my_address@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/personal_my_address@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/personal_my_coupon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/personal_my_coupon@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/personal_my_coupon@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/personal_my_coupon@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/personal_my_favorite@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/personal_my_favorite@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/personal_my_favorite@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/personal_my_favorite@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/personal_my_lottery@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/personal_my_lottery@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/personal_my_lottery@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/personal_my_lottery@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/personal_my_message@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/personal_my_message@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/personal_my_message@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/personal_my_message@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/personal_order_arrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/personal_order_arrow@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/personal_order_arrow@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/personal_order_arrow@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/personal_order_unpay@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/personal_order_unpay@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/personal_order_unpay@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/personal_order_unpay@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/phone-login-nonagree@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/phone-login-nonagree@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/phone-login-nonagree@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/phone-login-nonagree@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/photoBrowseLoading@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/photoBrowseLoading@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/photoBrowseLoading@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/photoBrowseLoading@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/superbrand_discount@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/superbrand_discount@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/superbrand_soldout@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/superbrand_soldout@2x.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/AppIcon.appiconset/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/AppIcon.appiconset/Icon.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/address_default_check@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/address_default_check@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/address_default_check@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/address_default_check@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/chat_bubble_incomming@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/chat_bubble_incomming@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/chat_bubble_incomming@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/chat_bubble_incomming@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/personal_my_suggestion@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/personal_my_suggestion@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/personal_my_suggestion@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/personal_my_suggestion@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/personal_order_unsend@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/personal_order_unsend@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/personal_order_unsend@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/personal_order_unsend@3x.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/AppIcon-2.appiconset/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/AppIcon-2.appiconset/Icon.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/AppIcon.appiconset/Icon-40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/AppIcon.appiconset/Icon-40.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/AppIcon.appiconset/Icon-72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/AppIcon.appiconset/Icon-72.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/AppIcon.appiconset/Icon-76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/AppIcon.appiconset/Icon-76.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/AppIcon.appiconset/Icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/AppIcon.appiconset/Icon@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/address_default_uncheck@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/address_default_uncheck@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/address_default_uncheck@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/address_default_uncheck@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/login_button_background@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/login_button_background@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/login_button_background@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/login_button_background@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/personal_order_after_sale@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/personal_order_after_sale@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/personal_order_after_sale@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/personal_order_after_sale@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/personal_order_unreceive@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/personal_order_unreceive@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/personal_order_unreceive@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/personal_order_unreceive@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/personal_order_unremark@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/personal_order_unremark@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/personal_order_unremark@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/personal_order_unremark@3x.png -------------------------------------------------------------------------------- /pinduoduo/Vendor/MJRefresh/MJRefresh.bundle/arrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Vendor/MJRefresh/MJRefresh.bundle/arrow@2x.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/AppIcon-2.appiconset/Icon-40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/AppIcon-2.appiconset/Icon-40.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/AppIcon-2.appiconset/Icon-72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/AppIcon-2.appiconset/Icon-72.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/AppIcon-2.appiconset/Icon-76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/AppIcon-2.appiconset/Icon-76.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/AppIcon-2.appiconset/Icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/AppIcon-2.appiconset/Icon@2x.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/AppIcon.appiconset/Icon-72@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/AppIcon.appiconset/Icon-72@2x.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/AppIcon.appiconset/Icon-Small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/AppIcon.appiconset/Icon-Small.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/personal_header_avatar_logo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/personal_header_avatar_logo@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/personal_header_avatar_logo@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/personal_header_avatar_logo@3x.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/AppIcon-2.appiconset/Icon-40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/AppIcon-2.appiconset/Icon-40@2x.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/AppIcon-2.appiconset/Icon-40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/AppIcon-2.appiconset/Icon-40@3x.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/AppIcon-2.appiconset/Icon-60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/AppIcon-2.appiconset/Icon-60@2x.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/AppIcon-2.appiconset/Icon-60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/AppIcon-2.appiconset/Icon-60@3x.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/AppIcon-2.appiconset/Icon-72@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/AppIcon-2.appiconset/Icon-72@2x.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/AppIcon-2.appiconset/Icon-76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/AppIcon-2.appiconset/Icon-76@2x.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/AppIcon-2.appiconset/Icon-Small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/AppIcon-2.appiconset/Icon-Small.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/AppIcon.appiconset/Icon-Small-50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/AppIcon.appiconset/Icon-Small-50.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/login_button_highlight_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/login_button_highlight_background.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/AppIcon-2.appiconset/Icon-83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/AppIcon-2.appiconset/Icon-83.5@2x.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/AppIcon-2.appiconset/Icon-Small-50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/AppIcon-2.appiconset/Icon-Small-50.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/AppIcon-2.appiconset/Icon-Small@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/AppIcon-2.appiconset/Icon-Small@2x.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/AppIcon-2.appiconset/Icon-Small@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/AppIcon-2.appiconset/Icon-Small@3x.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/AppIcon-2.appiconset/Icon-Small-50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/AppIcon-2.appiconset/Icon-Small-50@2x.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/AppIcon.appiconset/Icon-Small-50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/AppIcon.appiconset/Icon-Small-50@2x.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/LaunchImage.launchimage/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/LaunchImage.launchimage/LaunchImage.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/login_button_highlight_background@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/login_button_highlight_background@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/login_button_highlight_background@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/login_button_highlight_background@3x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/personal_header_avatar_placeholder@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/personal_header_avatar_placeholder@2x.png -------------------------------------------------------------------------------- /pinduoduo/Resource/Image/personal_header_avatar_placeholder@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Resource/Image/personal_header_avatar_placeholder@3x.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/LaunchImage.launchimage/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/LaunchImage.launchimage/LaunchImage@2x.png -------------------------------------------------------------------------------- /pinduoduo.xcodeproj/xcuserdata/foscom.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/LaunchImage.launchimage/LaunchImage-700@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/LaunchImage.launchimage/LaunchImage-700@2x.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/LaunchImage.launchimage/LaunchImage-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/LaunchImage.launchimage/LaunchImage-568h@2x.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/LaunchImage.launchimage/LaunchImage-700-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/LaunchImage.launchimage/LaunchImage-700-568h@2x.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/LaunchImage.launchimage/LaunchImage-800-667h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/LaunchImage.launchimage/LaunchImage-800-667h@2x.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/LaunchImage.launchimage/LaunchImage-Portrait~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/LaunchImage.launchimage/LaunchImage-Portrait~ipad.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/LaunchImage.launchimage/LaunchImage-Portrait@2x~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/LaunchImage.launchimage/LaunchImage-Portrait@2x~ipad.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/LaunchImage.launchimage/LaunchImage-700-Portrait~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/LaunchImage.launchimage/LaunchImage-700-Portrait~ipad.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/LaunchImage.launchimage/LaunchImage-700-Portrait@2x~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/LaunchImage.launchimage/LaunchImage-700-Portrait@2x~ipad.png -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/LaunchImage.launchimage/LaunchImage-800-Portrait-736h@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo/Assets.xcassets/LaunchImage.launchimage/LaunchImage-800-Portrait-736h@3x.png -------------------------------------------------------------------------------- /pinduoduo.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /pinduoduo.xcodeproj/project.xcworkspace/xcuserdata/foscom.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo.xcodeproj/project.xcworkspace/xcuserdata/foscom.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /pinduoduo.xcodeproj/project.xcworkspace/xcuserdata/machunlei.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CHLMA123/pinduoduo/HEAD/pinduoduo.xcodeproj/project.xcworkspace/xcuserdata/machunlei.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /pinduoduo/Common/BaseViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // BaseViewController.h 3 | // 图层蒙版 4 | // 5 | // Created by MCL on 16/6/16. 6 | // Copyright © 2016年 MCL. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface BaseViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /pinduoduo/Main/Home/Models/CommonDataModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // CommonDataModel.m 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/7/13. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import "CommonDataModel.h" 10 | 11 | @implementation CommonDataModel 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /pinduoduo/Main/Home/Models/CollectionItemModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // CollectionItemModel.m 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/22. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import "CollectionItemModel.h" 10 | 11 | @implementation CollectionItemModel 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /pinduoduo/Main/Home/Models/SuperBrandDataModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // SuperBrandDataModel.m 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/18. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import "SuperBrandDataModel.h" 10 | 11 | @implementation SuperBrandDataModel 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /pinduoduo/Main/OtherViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // OtherViewController.h 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/7/9. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import "BaseViewController.h" 10 | 11 | @interface OtherViewController : BaseViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /pinduoduo/Main/Home/Models/GoodsSubjectModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // MainScrollViewDataModel.m 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/18. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import "GoodsSubjectModel.h" 10 | 11 | @implementation GoodsSubjectModel 12 | 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /pinduoduo/Main/Home/Models/MobileAppGroupsModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // MobileAppGroupsModel.m 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/22. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import "MobileAppGroupsModel.h" 10 | 11 | @implementation MobileAppGroupsModel 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /pinduoduo/Common/BaseNavigationController.h: -------------------------------------------------------------------------------- 1 | // 2 | // BaseNavigationController.h 3 | // 图层蒙版 4 | // 5 | // Created by MCL on 16/6/16. 6 | // Copyright © 2016年 MCL. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface BaseNavigationController : UINavigationController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /pinduoduo/Main/Home/Models/RecommendSubjectsModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // HomeRecommendSubjectsModel.m 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/18. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import "RecommendSubjectsModel.h" 10 | 11 | @implementation RecommendSubjectsModel 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /pinduoduo/Main/Home/Controllers/HomeViewController副本.h: -------------------------------------------------------------------------------- 1 | // 2 | // HomeViewController.h 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/18. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import "BaseViewController.h" 10 | 11 | @interface HomeViewController : BaseViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /pinduoduo/Main/HotList/Controllers/PushViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // PushViewController.h 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/24. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import "BaseViewController.h" 10 | 11 | @interface PushViewController : BaseViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | -------------------------------------------------------------------------------- /pinduoduo/Main/Search/Controllers/SearchViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // SearchViewController.h 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/18. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import "BaseViewController.h" 10 | 11 | @interface SearchViewController : BaseViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | -------------------------------------------------------------------------------- /pinduoduo/pinduoduo.xcdatamodeld/.xccurrentversion: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | _XCCurrentVersionName 6 | pinduoduo.xcdatamodel 7 | 8 | 9 | -------------------------------------------------------------------------------- /pinduoduo/Main/HotList/Controllers/HotListViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // HotListViewController.h 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/18. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import "BaseViewController.h" 10 | 11 | @interface HotListViewController : BaseViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /pinduoduo/Main/Personal/Controllers/PersonalViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // PersonalViewController.h 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/18. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import "BaseViewController.h" 10 | 11 | @interface PersonalViewController : BaseViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /pinduoduo/Expand/Macros/ThirdMacros.h: -------------------------------------------------------------------------------- 1 | // 2 | // ThirdMacros.h 3 | // MobileProject 第三方SDK的Key及配置 4 | // 5 | // Created by wujunyang on 16/1/5. 6 | // Copyright © 2016年 wujunyang. All rights reserved. 7 | // 8 | 9 | #ifndef ThirdMacros_h 10 | #define ThirdMacros_h 11 | 12 | // eg:友盟统计SDK的key 13 | 14 | 15 | #endif /* ThirdMacros_h */ 16 | -------------------------------------------------------------------------------- /pinduoduo/Main/SuperBrand/Controllers/SuperBrandViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // SuperBrandViewController.h 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/18. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import "BaseViewController.h" 10 | 11 | @interface SuperBrandViewController : BaseViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | -------------------------------------------------------------------------------- /pinduoduo/Expand/Category/UILable/UILabel+Paragraph.h: -------------------------------------------------------------------------------- 1 | // 2 | // UILabel+Paragraph.h 3 | // MAPayPalDemo 4 | // 5 | // Created by MCL on 16/3/18. 6 | // Copyright © 2016年 MCL. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UILabel (Paragraph) 12 | 13 | + (UILabel *)makeLableWithText:(NSString *)textStr WithTextColor:(UIColor *)color; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /pinduoduo/Main/Home/Controllers/HomeViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // HomeViewController.h 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/18. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import "BaseViewController.h" 10 | 11 | @interface HomeViewController : BaseViewController 12 | 13 | @property (nonatomic, strong) NSMutableArray *positionArr; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/IMYAOPTableView/Private/IMYAOPTableViewUtils+Delegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // IMYAOPTableViewUtils+UITableViewDelegate.h 3 | // IMYAdvertisementDemo 4 | // 5 | // Created by ljh on 16/4/15. 6 | // Copyright © 2016年 IMY. All rights reserved. 7 | // 8 | 9 | #import "IMYAOPTableViewUtils.h" 10 | 11 | @interface IMYAOPTableViewUtils (UITableViewDelegate) 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/IMYAOPTableView/Private/IMYAOPTableViewUtils+DataSource.h: -------------------------------------------------------------------------------- 1 | // 2 | // IMYAOPTableViewUtils+UITableViewDataSource.h 3 | // IMYAdvertisementDemo 4 | // 5 | // Created by ljh on 16/4/15. 6 | // Copyright © 2016年 IMY. All rights reserved. 7 | // 8 | 9 | #import "IMYAOPTableViewUtils.h" 10 | 11 | @interface IMYAOPTableViewUtils (UITableViewDataSource) 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /pinduoduo/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/17. 6 | // Copyright © 2016年 CHLMA. 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 | -------------------------------------------------------------------------------- /pinduoduo/pinduoduo.xcdatamodeld/pinduoduo.xcdatamodel/contents: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /pinduoduo/Main/Home/Views/SuperBrandView.h: -------------------------------------------------------------------------------- 1 | // 2 | // SuperBrandView.h 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/23. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "GoodsListDataModel.h" 11 | 12 | @interface SuperBrandView : UIView 13 | 14 | - (instancetype)initWithFrame:(CGRect)frame withDataModel:(GoodsListDataModel *)model; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /pinduoduo/Main/Home/Models/CollectionItemModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // CollectionItemModel.h 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/22. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface CollectionItemModel : NSObject 12 | 13 | @property (nonatomic, strong) UIImage *image; 14 | @property (nonatomic, strong) NSString *imageDesc; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /pinduoduo/Main/Home/Other/IMYAOPDemo.h: -------------------------------------------------------------------------------- 1 | // 2 | // IMYAOPDemo.h 3 | // YYKitDemo 4 | // 5 | // Created by ljh on 16/6/19. 6 | // Copyright © 2016年 ibireme. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "IMYAOPTableView.h" 11 | @interface IMYAOPDemo : NSObject 12 | @property (weak, nonatomic) IMYAOPTableViewUtils *aopUtils; 13 | @property (nonatomic, strong) NSArray *dataArr; 14 | @end 15 | -------------------------------------------------------------------------------- /pinduoduo/Main/Home/Views/MItemCollectionViewCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // MCollectionViewCell.h 3 | // DXAlertView 4 | // 5 | // Created by MCL on 16/4/16. 6 | // Copyright © 2016年 xiekw. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MItemCollectionViewCell : UICollectionViewCell 12 | 13 | @property (nonatomic, strong) UIImageView *imageView; 14 | @property (nonatomic, strong) UILabel *imageLbl; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | -------------------------------------------------------------------------------- /pinduoduo/Main/Home/Views/GroupBuyView.h: -------------------------------------------------------------------------------- 1 | // 2 | // GroupBuyView.h 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/22. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "MobileAppGroupsModel.h" 11 | typedef void(^UpdateViewBlock)(MobileAppGroupsModel *model); 12 | 13 | @interface GroupBuyView : UIView 14 | 15 | @property (nonatomic, copy) UpdateViewBlock block; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /pinduoduo/Expand/Category/UIImage/UIImage+Alpha.h: -------------------------------------------------------------------------------- 1 | // UIImage+Alpha.h 2 | // Created by Trevor Harmon on 9/20/09. 3 | // Free for personal or commercial use, with or without modification. 4 | // No warranty is expressed or implied. 5 | 6 | // Helper methods for adding an alpha layer to an image 7 | @interface UIImage (Alpha) 8 | - (BOOL)hasAlpha; 9 | - (UIImage *)imageWithAlpha; 10 | - (UIImage *)transparentBorderImage:(NSUInteger)borderSize; 11 | @end 12 | -------------------------------------------------------------------------------- /pinduoduo/Expand/Category/UIImage/UIImage+RoundedCorner.h: -------------------------------------------------------------------------------- 1 | // UIImage+RoundedCorner.h 2 | // Created by Trevor Harmon on 9/20/09. 3 | // Free for personal or commercial use, with or without modification. 4 | // No warranty is expressed or implied. 5 | 6 | // Extends the UIImage class to support making rounded corners 7 | @interface UIImage (RoundedCorner) 8 | - (UIImage *)roundedCornerImage:(NSInteger)cornerSize borderSize:(NSInteger)borderSize; 9 | @end 10 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | -------------------------------------------------------------------------------- /pinduoduo/Common/BaseTabBarController.h: -------------------------------------------------------------------------------- 1 | // 2 | // BaseTabBarController.h 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/17. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface BaseTabBarController : UITabBarController 13 | 14 | @property (nonatomic, getter=isTabBarHidden,readonly)BOOL tabBarHidden; 15 | 16 | - (void)setTabBarHidden:(BOOL)hidden animated:(BOOL)animated; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /pinduoduo/Expand/Category/UIImage/UIImage+XHRounded.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+XHRounded.h 3 | // MessageDisplayExample 4 | // 5 | // Created by HUAJIE-1 on 14-4-25. 6 | // Copyright (c) 2014年 嗨,我是曾宪华(@xhzengAIB),曾加入YY Inc.担任高级移动开发工程师,拍立秀App联合创始人,热衷于简洁、而富有理性的事物 QQ:543413507 主页:http://zengxianhua.com All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (XHRounded) 12 | 13 | - (UIImage *)createRoundedWithRadius:(CGFloat)radius; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | -------------------------------------------------------------------------------- /pinduoduo/Main/Home/Views/OthersTableViewCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // OthersTableViewCell.h 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/22. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "SuperBrandDataModel.h" 11 | 12 | @interface OthersTableViewCell : UITableViewCell 13 | 14 | + (instancetype)cellWithTableView:(UITableView *)tableView; 15 | 16 | - (void)fillCellWithModel:(SuperBrandDataModel *)model; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /pinduoduo/Main/Home/Views/GoodsListTableViewCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // GoodsListTableViewCell.h 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/18. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "GoodsListDataModel.h" 11 | 12 | @interface GoodsListTableViewCell : UITableViewCell 13 | 14 | + (instancetype)cellWithTableView:(UITableView *)tableView; 15 | 16 | - (void)fillCellWithModel:(GoodsListDataModel *)model; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /pinduoduo/Main/Home/Views/SuperBrandTableViewCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // SuperBrandTableViewCell.h 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/22. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "SuperBrandDataModel.h" 11 | 12 | @interface SuperBrandTableViewCell : UITableViewCell 13 | 14 | + (instancetype)cellWithTableView:(UITableView *)tableView; 15 | 16 | - (void)fillCellWithModel:(SuperBrandDataModel *)model; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /pinduoduo/Main/Home/Views/othersCollectionViewCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // othersCollectionViewCell.h 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/22. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface othersCollectionViewCell : UICollectionViewCell 12 | 13 | @property (nonatomic, strong) UIImageView *goodsImageV; 14 | @property (nonatomic, strong) UILabel *imageLbl; 15 | @property (nonatomic, strong) UILabel *priceLbl; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | -------------------------------------------------------------------------------- /pinduoduo/Expand/Category/UIImage/UIImage+Utility.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+Utility.h 3 | // XHImageViewer 4 | // 5 | // Created by 曾 宪华 on 14-2-18. 6 | // Copyright (c) 2014年 嗨,我是曾宪华(@xhzengAIB),曾加入YY Inc.担任高级移动开发工程师,拍立秀App联合创始人,热衷于简洁、而富有理性的事物 QQ:543413507 主页:http://zengxianhua.com All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (Utility) 12 | 13 | + (UIImage *)fastImageWithData:(NSData *)data; 14 | + (UIImage *)fastImageWithContentsOfFile:(NSString *)path; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /pinduoduo/Assets.xcassets/Brand Assets.launchimage/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "orientation" : "portrait", 5 | "idiom" : "iphone", 6 | "minimum-system-version" : "7.0", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "orientation" : "portrait", 11 | "idiom" : "iphone", 12 | "minimum-system-version" : "7.0", 13 | "subtype" : "retina4", 14 | "scale" : "2x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Pinduoduo 2 | 仿写 Pinduoduo的 Demo于2016年6月17日 3 | 4 | 1 自定义导航和 RootViewController的实现 5 | 6 | 2 网络状态的监测 7 | 8 | 3 Block回调刷新界面数据并显示 -- 重写 Block的 getter方法 9 | 10 | 4 自定义 UItableViewCell的实现 11 | 12 | 5 自定义 UICollectionView的实现 13 | 14 | 6 使用 AFNetworking获取网络数 15 | 16 | 7 轮播图实现 17 | 18 | 8 使用 Masonry进行控件的相对布局 19 | 20 | 9 使用 MJRefresh实现 TableView的下拉刷新,实时加载数据并更新界面 21 | 22 | 10 使用 SDWebImage实现网络图片的自动缓存 23 | 24 | 11 利用运行时(runtime)实现字典转模型 如果字典内部嵌入字典 处理异常情况 (ps:工程中仅处理了单层嵌套.=) 25 | 26 | 12 控件的局部圆角问题: 图层蒙版(一个button或者label,只要右边的两个角圆角,或者只要一个圆角)。 27 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/IMYAOPTableView/IMYAOPTableView.h: -------------------------------------------------------------------------------- 1 | // 2 | // IMYAOPTableView.h 3 | // AOPTableView 4 | // 5 | // Created by ljh on 16/5/30. 6 | // Copyright © 2016年 ljh. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "IMYAOPTableViewUtils.h" 11 | #import "IMYAOPTableViewUtils+Proxy.h" 12 | 13 | @interface UITableView (IMYAOPTableViewUtils) 14 | ///创建并获取:AOPTableUtils 15 | @property (nonatomic, readonly) IMYAOPTableViewUtils* aop_utils; 16 | ///是否注入了:AOPTableUtils 17 | @property (nonatomic, readonly) BOOL aop_installed; 18 | @end 19 | -------------------------------------------------------------------------------- /pinduoduo/Expand/Category/NSObject/NSObject+modelConvertDic.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+modelConvertDic.h 3 | // PhotoManger 4 | // 5 | // Created by foscom on 16/6/15. 6 | // Copyright © 2016年 zengjia. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSObject (modelConvertDic) 12 | 13 | // 模型转字典 14 | - (NSDictionary *)dictionaryFromModelWithShowLog:(BOOL)show; 15 | 16 | // 字典转模型1 17 | - (void)assginToPropertyWithDic:(NSDictionary *)dic; 18 | 19 | // 字典转模型2 20 | + (instancetype)objectWithDict:(NSDictionary *)dict; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | -------------------------------------------------------------------------------- /pinduoduo/Main/Home/Models/CommonDataModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // CommonDataModel.h 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/7/13. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "GoodsSubjectModel.h" 11 | 12 | @interface CommonDataModel : NSObject 13 | 14 | @property (nonatomic, strong)GoodsSubjectModel *goodSubjectModel; 15 | @property (nonatomic, strong)NSArray *goodlistArr; 16 | @property (nonatomic, strong)NSString *position; 17 | @property (nonatomic, strong)NSString *cellIdentifier; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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" -------------------------------------------------------------------------------- /pinduoduo.xcodeproj/xcuserdata/machunlei.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 8 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | /** 显示刷新状态的label */ 13 | @property (weak, nonatomic, readonly) UILabel *stateLabel; 14 | /** 设置state状态下的文字 */ 15 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state; 16 | 17 | /** 获取state状态下的title */ 18 | - (NSString *)titleForState:(MJRefreshState)state; 19 | @end 20 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/SDWebImage/UIImage+WebP.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+WebP.h 3 | // SDWebImage 4 | // 5 | // Created by Olivier Poitrey on 07/06/13. 6 | // Copyright (c) 2013 Dailymotion. All rights reserved. 7 | // 8 | 9 | #ifdef SD_WEBP 10 | 11 | #import 12 | 13 | // Fix for issue #416 Undefined symbols for architecture armv7 since WebP introduction when deploying to device 14 | void WebPInitPremultiplyNEON(void); 15 | 16 | void WebPInitUpsamplersNEON(void); 17 | 18 | void VP8DspInitNEON(void); 19 | 20 | @interface UIImage (WebP) 21 | 22 | + (UIImage *)sd_imageWithWebPData:(NSData *)data; 23 | 24 | @end 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /pinduoduo.xcodeproj/xcuserdata/foscom.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | pinduoduo.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 366C45BA1D13DA3300BE790E 16 | 17 | primary 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | -------------------------------------------------------------------------------- /pinduoduo.xcodeproj/xcuserdata/machunlei.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | pinduoduo.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 366C45BA1D13DA3300BE790E 16 | 17 | primary 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | /** 显示刷新状态的label */ 13 | @property (weak, nonatomic, readonly) UILabel *stateLabel; 14 | 15 | /** 设置state状态下的文字 */ 16 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state; 17 | 18 | /** 隐藏刷新状态的文字 */ 19 | @property (assign, nonatomic, getter=isRefreshingTitleHidden) BOOL refreshingTitleHidden; 20 | @end 21 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/IMYAOPTableView/TableUtils/IMYAOPTableViewInsertBody.m: -------------------------------------------------------------------------------- 1 | // 2 | // IMYAOPTableViewInsertBody.m 3 | // AOPTableView 4 | // 5 | // Created by ljh on 16/5/31. 6 | // Copyright © 2016年 ljh. All rights reserved. 7 | // 8 | 9 | #import "IMYAOPTableViewInsertBody.h" 10 | 11 | @implementation IMYAOPTableViewInsertBody 12 | + (instancetype)insertBodyWithSection:(NSInteger)section 13 | { 14 | IMYAOPTableViewInsertBody* body = [self new]; 15 | body.section = section; 16 | return body; 17 | } 18 | + (instancetype)insertBodyWithIndexPath:(NSIndexPath*)indexPath 19 | { 20 | IMYAOPTableViewInsertBody* body = [self new]; 21 | body.indexPath = indexPath; 22 | return body; 23 | } 24 | @end 25 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | -------------------------------------------------------------------------------- /pinduoduo/Expand/Network/NetworkHelper.h: -------------------------------------------------------------------------------- 1 | // 2 | // NetworkHelper.h 3 | // pinduoduo 4 | // 5 | // Created by MACHUNLEI on 16/6/19. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef void(^NetworkHelperBlock)(id obj); 12 | 13 | @interface NetworkHelper : NSObject 14 | 15 | //@property (nonatomic, strong) NSString netStatus; 16 | 17 | + (instancetype)sharedManager; 18 | 19 | - (void)networkReaching; 20 | 21 | - (void)getWithURL:(NSString *)urlString WithParmeters:(NSDictionary *)dictionary compeletionWithBlock:(NetworkHelperBlock)block; 22 | 23 | - (void)postWithURL:(NSString *)urlString WithParameters:(NSDictionary *)dictionary compeletionWithBlock:(NetworkHelperBlock)block; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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("请使用automaticallyChangeAlpha属性"); 17 | 18 | /** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */ 19 | @property (assign, nonatomic) CGFloat triggerAutomaticallyRefreshPercent; 20 | @end 21 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | /** 显示刷新状态的label */ 20 | @property (weak, nonatomic, readonly) UILabel *stateLabel; 21 | /** 设置state状态下的文字 */ 22 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state; 23 | @end 24 | -------------------------------------------------------------------------------- /pinduoduo/Expand/Category/UIView/UIView+Convenience.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+Convenience.h 3 | // 4 | // Created by Molon on 13/11/12. 5 | // Copyright (c) 2013 Molon. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface UIView (Convenience) 11 | 12 | @property (nonatomic) CGPoint frameOrigin; 13 | @property (nonatomic) CGSize frameSize; 14 | 15 | @property (nonatomic) CGFloat frameX; 16 | @property (nonatomic) CGFloat frameY; 17 | 18 | @property (nonatomic) CGFloat frameRight; 19 | @property (nonatomic) CGFloat frameBottom; 20 | 21 | @property (nonatomic) CGFloat frameWidth; 22 | @property (nonatomic) CGFloat frameHeight; 23 | 24 | - (BOOL)containsSubView:(UIView *)subView; 25 | - (BOOL)containsSubViewOfClassType:(Class)class; 26 | - (void)removeAllSubViews; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/IMYAOPTableView/TableUtils/IMYAOPTableViewInsertBody.h: -------------------------------------------------------------------------------- 1 | // 2 | // IMYAOPTableViewInsertBody.h 3 | // AOPTableView 4 | // 5 | // Created by ljh on 16/5/31. 6 | // Copyright © 2016年 ljh. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface IMYAOPTableViewInsertBody : NSObject 12 | 13 | + (instancetype)insertBodyWithSection:(NSInteger)section; 14 | + (instancetype)insertBodyWithIndexPath:(NSIndexPath*)indexPath; 15 | 16 | ///预期插入的 section 位置 17 | @property (nonatomic, assign) NSInteger section; 18 | ///预期插入的 IndexPath 位置 19 | @property (nonatomic, copy) NSIndexPath* indexPath; 20 | 21 | ///最终插入后的section 22 | @property (nonatomic, assign) NSInteger resultSection; 23 | ///最终插入后的IndexPath 24 | @property (nonatomic, copy) NSIndexPath* resultIndexPath; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /pinduoduo/Expand/Category/UIImage/UIImage+Color.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+Color.h 3 | // Foscam 4 | // 5 | // Created by song.wang on 14-7-2. 6 | // Copyright (c) 2014年 sunny_zhang. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UIImage (Color) 12 | 13 | /** 14 | * 根据颜色生成指定大小的图片 15 | * 16 | * @param color 图片颜色 17 | * @param size 图片大小 18 | * 19 | * @return image 20 | */ 21 | + (UIImage *)imageWithColor:(UIColor *)color andSize:(CGSize)size; 22 | 23 | /** 24 | * 根据颜色生成带有圆角的指定大小的图片 25 | * 26 | * @param color 图片颜色 27 | * @param size 图片大小 28 | * @param corner 圆角位置 29 | * @param size 圆角大小 30 | * 31 | * @return image 32 | */ 33 | + (UIImage *)imageWithColor:(UIColor *)color andSize:(CGSize)size byRoundingCorner:(UIRectCorner)corner cornerRadii:(CGSize)size; 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/IMYAOPTableView/Private/IMYAOPTableViewUtils+Private.h: -------------------------------------------------------------------------------- 1 | // 2 | // IMYAOPTableViewUtils+Private.h 3 | // IMYAdvertisementDemo 4 | // 5 | // Created by ljh on 16/4/16. 6 | // Copyright © 2016年 IMY. All rights reserved. 7 | // 8 | 9 | #import "IMYAOPTableViewUtils.h" 10 | 11 | @protocol IADTableViewUtilsPrivate 12 | 13 | @property (nonatomic, weak) id tableDelegate; 14 | @property (nonatomic, weak) id tableDataSource; 15 | 16 | @property (nonatomic, strong) NSMutableArray* sections; 17 | @property (nonatomic, strong) NSMutableDictionary* sectionMap; 18 | 19 | @property (nonatomic) Class tableViewClass; 20 | 21 | ///是否由UI 进行调用 22 | @property (nonatomic, assign) NSInteger isUICalling; 23 | 24 | @end 25 | 26 | @interface IMYAOPTableViewUtils (Private) 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/IMYAOPTableView/Private/UITableView+IMYAOPTableView.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITableView+IMYADTableUtils.h 3 | // IMYAdvertisementDemo 4 | // 5 | // Created by ljh on 16/4/16. 6 | // Copyright © 2016年 IMY. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "IMYAOPTableViewUtils.h" 11 | 12 | @interface UITableView (IMYAOPTableOperation) 13 | + (SEL)aop_userSelectRowAtPendingSelectionIndexPathSEL; 14 | + (SEL)aop_updateRowDataSEL; 15 | + (SEL)aop_rebuildGeometrySEL; 16 | + (SEL)aop_updateContentSizeSEL; 17 | 18 | + (Class)imy_aopClass; 19 | @end 20 | 21 | 22 | @interface _IMYAOPTableView : UITableView 23 | - (void)aop_realReloadData; 24 | - (void)aop_refreshDelegate; 25 | - (void)aop_refreshDataSource; 26 | ///获取显示中的cell containType => 0:原生cell 1:插入的cell 2:全部cell 27 | - (NSArray*)aop_containVisibleCells:(IMYAOPType)containType; 28 | @end -------------------------------------------------------------------------------- /pinduoduo/Resource/Global/MAPrefixHeader.pch: -------------------------------------------------------------------------------- 1 | // 2 | // MAPrefixHeader.pch 3 | // 图层蒙版 4 | // 5 | // Created by MCL on 16/6/14. 6 | // Copyright © 2016年 MCL. All rights reserved. 7 | // 8 | 9 | #ifndef MAPrefixHeader_pch 10 | #define MAPrefixHeader_pch 11 | 12 | // Include any system framework and library headers here that should be included in all compilation units. 13 | // You will also need to set the Prefix Header build setting of one or more of your targets to reference this file. 14 | #ifdef __OBJC__ 15 | #import 16 | #import 17 | #import "MAMacro.h" 18 | #import "AppDelegate.h" 19 | #import "AssistantTool.h" 20 | #import "UIImage+Color.h" 21 | #import "UIImageView+WebCache.h" 22 | #import "JSONKit.h" 23 | #import "Masonry.h" 24 | #import "NSObject+modelConvertDic.h" 25 | #import "MJRefresh.h" 26 | #endif 27 | 28 | 29 | #endif /* MAPrefixHeader_pch */ 30 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/IMYAOPTableView/TableUtils/IMYAOPTableViewUtils+Proxy.h: -------------------------------------------------------------------------------- 1 | // 2 | // IMYAOPTableViewUtils+Proxy.h 3 | // Pods 4 | // 5 | // Created by ljh on 16/6/22. 6 | // 7 | // 8 | 9 | #import "IMYAOPTableViewUtils.h" 10 | 11 | @interface IMYAOPTableViewUtils (InsertedProxy) 12 | ///获取插入集合内,显示中的cell 13 | @property (nonatomic, readonly) NSArray<__kindof UITableViewCell*>* visibleInsertCells; 14 | ///获取显示中的cell 15 | - (NSArray<__kindof UITableViewCell*>*)visibleCellsWithType:(IMYAOPType)type; 16 | @end 17 | 18 | ///对TableView执行原始数据的操作, 不进行AOP的处理 19 | @interface IMYAOPTableViewUtils (TableViewProxy) 20 | 21 | - (CGRect)rectForRowAtIndexPath:(NSIndexPath*)indexPath; 22 | 23 | - (NSIndexPath*)indexPathForCell:(UITableViewCell*)cell; 24 | 25 | - (__kindof UITableViewCell*)cellForRowAtIndexPath:(NSIndexPath*)indexPath; 26 | 27 | ///more... 可直接使用这个tableView进行方法调用,不经过AOP处理 28 | - (UITableView*)proxyRawTableView; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /pinduoduo/Expand/Category/UIImage/UIImage+Resize.h: -------------------------------------------------------------------------------- 1 | // UIImage+Resize.h 2 | // Created by Trevor Harmon on 8/5/09. 3 | // Free for personal or commercial use, with or without modification. 4 | // No warranty is expressed or implied. 5 | 6 | // Extends the UIImage class to support resizing/cropping 7 | @interface UIImage (Resize) 8 | - (UIImage *)croppedImage:(CGRect)bounds; 9 | - (UIImage *)thumbnailImage:(NSInteger)thumbnailSize 10 | transparentBorder:(NSUInteger)borderSize 11 | cornerRadius:(NSUInteger)cornerRadius 12 | interpolationQuality:(CGInterpolationQuality)quality; 13 | - (UIImage *)resizedImage:(CGSize)newSize 14 | interpolationQuality:(CGInterpolationQuality)quality; 15 | - (UIImage *)resizedImageWithContentMode:(UIViewContentMode)contentMode 16 | bounds:(CGSize)bounds 17 | interpolationQuality:(CGInterpolationQuality)quality; 18 | @end 19 | -------------------------------------------------------------------------------- /pinduoduo/ViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.m 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/17. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import "ViewController.h" 10 | 11 | @interface ViewController () 12 | 13 | @end 14 | 15 | @implementation ViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | // Do any additional setup after loading the view, typically from a nib. 20 | /* 21 | NSString * contents =[[NSString alloc]initWithContentsOfFile:filepath encoding:NSUTF8StringEncoding error:nil]; 22 | 23 | NSArray * array =[contents objectFromJSONString]; 24 | NSLog(@"%@",array); 25 | for (NSDictionary * dic in array) { 26 | 27 | } 28 | 29 | */ 30 | } 31 | 32 | - (void)didReceiveMemoryWarning { 33 | [super didReceiveMemoryWarning]; 34 | // Dispose of any resources that can be recreated. 35 | } 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /pinduoduo/Expand/Tool/AssistantTool.h: -------------------------------------------------------------------------------- 1 | // 2 | // AssistantTool.h 3 | // objcmodeldic 4 | // 5 | // Created by foscom on 16/6/1. 6 | // Copyright © 2016年 foscam. All rights reserved. 7 | // 8 | /** 9 | * 可以将该工具类头文件放入pch文件,同时在全局宏定义的头文件中定义 eg:#define showModelContent(model) [AssistantTool dictionaryFromModel:model] 10 | * 11 | * @return 0 12 | */ 13 | #import 14 | #import 15 | @interface AssistantTool : NSObject 16 | 17 | // 数据模型转字典 输出数据模型 方便调试 18 | + (void)dictionaryFromModel:(id)model; 19 | 20 | // 根据网络返回数据的字典 输出对应的类的属性列表 eg: 21 | /* 22 | @property (nonatomic, copy) NSNumber *is_app; 23 | @property (nonatomic, copy) NSNumber *normal_price; 24 | @property (nonatomic, copy) NSNumber *event_type; 25 | @property (nonatomic, strong) NSString *image_url; 26 | @property (nonatomic, strong) NSDictionary *group; 27 | */ 28 | + (void)writeInfoWithDict:(NSDictionary *)dict; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/Masonry/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | com.cloudling.$(PRODUCT_NAME:rfc1034identifier) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(CURRENT_PROJECT_VERSION) 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /pinduoduo/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/17. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "BaseTabBarController.h" 12 | 13 | @interface AppDelegate : UIResponder 14 | 15 | @property (strong, nonatomic) UIWindow *window; 16 | @property (nonatomic, strong) BaseTabBarController *rootViewController; 17 | @property (assign, nonatomic) NSString *curNetworkStatus;//当前网络状态 18 | 19 | @property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext; 20 | @property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel; 21 | @property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator; 22 | 23 | - (void)saveContext; 24 | - (NSURL *)applicationDocumentsDirectory; 25 | 26 | + (instancetype)appDelegate; 27 | 28 | 29 | @end 30 | 31 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | -------------------------------------------------------------------------------- /pinduoduo/Common/BaseViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // BaseViewController.m 3 | // 图层蒙版 4 | // 5 | // Created by MCL on 16/6/16. 6 | // Copyright © 2016年 MCL. All rights reserved. 7 | // 8 | 9 | #import "BaseViewController.h" 10 | 11 | @interface BaseViewController () 12 | 13 | @end 14 | 15 | @implementation BaseViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | // Do any additional setup after loading the view. 20 | self.view.backgroundColor = RGBCOLOR(240, 240, 240); 21 | } 22 | 23 | - (void)didReceiveMemoryWarning { 24 | [super didReceiveMemoryWarning]; 25 | // Dispose of any resources that can be recreated. 26 | } 27 | 28 | /* 29 | #pragma mark - Navigation 30 | 31 | // In a storyboard-based application, you will often want to do a little preparation before navigation 32 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 33 | // Get the new view controller using [segue destinationViewController]. 34 | // Pass the selected object to the new view controller. 35 | } 36 | */ 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /pinduoduo/Main/OtherViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // OtherViewController.m 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/7/9. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import "OtherViewController.h" 10 | 11 | @interface OtherViewController () 12 | 13 | @end 14 | 15 | @implementation OtherViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | // Do any additional setup after loading the view. 20 | self.view.backgroundColor = [UIColor blueColor]; 21 | } 22 | 23 | - (void)didReceiveMemoryWarning { 24 | [super didReceiveMemoryWarning]; 25 | // Dispose of any resources that can be recreated. 26 | } 27 | 28 | /* 29 | #pragma mark - Navigation 30 | 31 | // In a storyboard-based application, you will often want to do a little preparation before navigation 32 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 33 | // Get the new view controller using [segue destinationViewController]. 34 | // Pass the selected object to the new view controller. 35 | } 36 | */ 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | -------------------------------------------------------------------------------- /pinduoduo/Expand/Category/UILable/UILabel+Paragraph.m: -------------------------------------------------------------------------------- 1 | // 2 | // UILabel+Paragraph.m 3 | // MAPayPalDemo 4 | // 5 | // Created by MCL on 16/3/18. 6 | // Copyright © 2016年 MCL. All rights reserved. 7 | // 8 | 9 | #import "UILabel+Paragraph.h" 10 | 11 | @implementation UILabel (Paragraph) 12 | 13 | + (UILabel *)makeLableWithText:(NSString *)textStr WithTextColor:(UIColor *)color{ 14 | 15 | UILabel *lblModel = [[UILabel alloc] init]; 16 | lblModel.textColor =color; 17 | lblModel.textAlignment = NSTextAlignmentCenter; 18 | lblModel.backgroundColor = [UIColor clearColor]; 19 | lblModel.numberOfLines =0; 20 | 21 | NSMutableAttributedString * attributedString = [[NSMutableAttributedString alloc] initWithString:textStr]; 22 | NSMutableParagraphStyle * paragraphStyle = [[NSMutableParagraphStyle alloc] init]; 23 | [paragraphStyle setLineSpacing:10]; 24 | [attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [textStr length])]; 25 | [lblModel setAttributedText:attributedString]; 26 | 27 | return lblModel; 28 | } 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /pinduoduo/Main/Search/Controllers/SearchViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // SearchViewController.m 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/18. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import "SearchViewController.h" 10 | 11 | @interface SearchViewController () 12 | 13 | @end 14 | 15 | @implementation SearchViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | // Do any additional setup after loading the view. 20 | self.view.backgroundColor = [[UIColor blueColor] colorWithAlphaComponent:0.25]; 21 | } 22 | 23 | - (void)didReceiveMemoryWarning { 24 | [super didReceiveMemoryWarning]; 25 | // Dispose of any resources that can be recreated. 26 | } 27 | 28 | /* 29 | #pragma mark - Navigation 30 | 31 | // In a storyboard-based application, you will often want to do a little preparation before navigation 32 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 33 | // Get the new view controller using [segue destinationViewController]. 34 | // Pass the selected object to the new view controller. 35 | } 36 | */ 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /pinduoduo/Expand/Category/UIImage/UIImage+Utility.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+Utility.m 3 | // XHImageViewer 4 | // 5 | // Created by 曾 宪华 on 14-2-18. 6 | // Copyright (c) 2014年 嗨,我是曾宪华(@xhzengAIB),曾加入YY Inc.担任高级移动开发工程师,拍立秀App联合创始人,热衷于简洁、而富有理性的事物 QQ:543413507 主页:http://zengxianhua.com All rights reserved. 7 | // 8 | 9 | #import "UIImage+Utility.h" 10 | 11 | @implementation UIImage (Utility) 12 | 13 | + (UIImage *)decode:(UIImage *)image { 14 | if(image == nil) { 15 | return nil; 16 | } 17 | 18 | UIGraphicsBeginImageContext(image.size); 19 | 20 | { 21 | [image drawAtPoint:CGPointMake(0, 0)]; 22 | image = UIGraphicsGetImageFromCurrentImageContext(); 23 | } 24 | UIGraphicsEndImageContext(); 25 | 26 | return image; 27 | } 28 | 29 | + (UIImage *)fastImageWithData:(NSData *)data { 30 | UIImage *image = [UIImage imageWithData:data]; 31 | return [self decode:image]; 32 | } 33 | 34 | + (UIImage *)fastImageWithContentsOfFile:(NSString *)path { 35 | UIImage *image = [[UIImage alloc] initWithContentsOfFile:path]; 36 | return [self decode:image]; 37 | } 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /pinduoduo/Main/Personal/Controllers/PersonalViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // PersonalViewController.m 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/18. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import "PersonalViewController.h" 10 | 11 | @interface PersonalViewController () 12 | 13 | @end 14 | 15 | @implementation PersonalViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | // Do any additional setup after loading the view. 20 | self.view.backgroundColor = [[UIColor greenColor] colorWithAlphaComponent:0.25]; 21 | } 22 | 23 | - (void)didReceiveMemoryWarning { 24 | [super didReceiveMemoryWarning]; 25 | // Dispose of any resources that can be recreated. 26 | } 27 | 28 | /* 29 | #pragma mark - Navigation 30 | 31 | // In a storyboard-based application, you will often want to do a little preparation before navigation 32 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 33 | // Get the new view controller using [segue destinationViewController]. 34 | // Pass the selected object to the new view controller. 35 | } 36 | */ 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /pinduoduo/Main/SuperBrand/Controllers/SuperBrandViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // SuperBrandViewController.m 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/18. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import "SuperBrandViewController.h" 10 | 11 | @interface SuperBrandViewController () 12 | 13 | @end 14 | 15 | @implementation SuperBrandViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | // Do any additional setup after loading the view. 20 | self.view.backgroundColor = [[UIColor purpleColor] colorWithAlphaComponent:0.25]; 21 | } 22 | 23 | - (void)didReceiveMemoryWarning { 24 | [super didReceiveMemoryWarning]; 25 | // Dispose of any resources that can be recreated. 26 | } 27 | 28 | /* 29 | #pragma mark - Navigation 30 | 31 | // In a storyboard-based application, you will often want to do a little preparation before navigation 32 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 33 | // Get the new view controller using [segue destinationViewController]. 34 | // Pass the selected object to the new view controller. 35 | } 36 | */ 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /pinduoduo/Main/HotList/Controllers/PushViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // PushViewController.m 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/24. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import "PushViewController.h" 10 | 11 | @interface PushViewController () 12 | 13 | @end 14 | 15 | @implementation PushViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | // Do any additional setup after loading the view. 20 | self.title = @"***试试侧滑返回吧***"; 21 | self.view.backgroundColor = [[UIColor orangeColor] colorWithAlphaComponent:0.25]; 22 | 23 | } 24 | 25 | - (void)didReceiveMemoryWarning { 26 | [super didReceiveMemoryWarning]; 27 | // Dispose of any resources that can be recreated. 28 | } 29 | 30 | /* 31 | #pragma mark - Navigation 32 | 33 | // In a storyboard-based application, you will often want to do a little preparation before navigation 34 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 35 | // Get the new view controller using [segue destinationViewController]. 36 | // Pass the selected object to the new view controller. 37 | } 38 | */ 39 | 40 | @end 41 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | -------------------------------------------------------------------------------- /pinduoduo/Main/Home/Views/MACarouselView.h: -------------------------------------------------------------------------------- 1 | // 2 | // MACarouselView.h 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/21. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class MACarouselView; 12 | @protocol MACarouselViewDelegate 13 | @optional 14 | /** 15 | * 点击图片的回调事件 16 | * 17 | * @param scrollView 一般传self 18 | * @param info 每张图片对应的model,由控制器使用imageModelInfoArray属性传递过来,再由该方法传递回调用者 19 | */ 20 | -(void)MACarouselView:(MACarouselView *)scrollView tapImageViewInfo:(id)info; 21 | 22 | @end 23 | 24 | @interface MACarouselView : UIView 25 | 26 | /** 27 | * 图片的信息,每张图片对应一个model,需要控制器传递过来 28 | */ 29 | @property (strong, nonatomic) NSMutableArray *imageModelInfoArray; 30 | /** 31 | * 需要显示的图片,需要控制器传递过来 32 | */ 33 | @property (strong, nonatomic) NSArray *imageArray; 34 | /** 35 | * 是否竖屏显示scrollview,默认是no 36 | */ 37 | @property (assign, nonatomic, getter=isScrollDirectionPortrait) BOOL scrollDirectionPortrait; 38 | @property (weak, nonatomic, readonly) UIPageControl *pageControl; 39 | @property (assign, nonatomic) NSInteger ImageViewCount; 40 | @property (weak, nonatomic) iddelegate; 41 | 42 | @end 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | -------------------------------------------------------------------------------- /pinduoduo/Main/Home/Models/MobileAppGroupsModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // MobileAppGroupsModel.h 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/22. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MobileAppGroupsModel : NSObject 12 | 13 | @property (nonatomic, strong)NSString *group_id; 14 | @property (nonatomic, strong)NSString *goods_id; 15 | @property (nonatomic, strong)NSString *goods_name; 16 | @property (nonatomic, strong)NSString *banner; 17 | @property (nonatomic, strong)NSString *thumb_url; 18 | @property (nonatomic, strong)NSString *desc; 19 | @property (nonatomic, strong)NSString *start_time; 20 | @property (nonatomic, strong)NSString *end_time; 21 | 22 | @end 23 | 24 | // mobile_app_groups 25 | /* 26 | { 27 | "group_id": 383099, 28 | "goods_id": 188207, 29 | "goods_name": "【直降80元】0.1元越南猫山王榴莲1个(4-6斤) 有奶油味的顶级榴莲! 限量250份【APP专享团】", 30 | "banner": "http://omsproductionimg.yangkeduo.com/images/app_enjoy/0/OcCghCnhggDknhuepx7RiOPcpRJBv9Oh.jpg", 31 | "thumb_url": "http://omsproductionimg.yangkeduo.com/images/app_enjoy/0/33Hi7oyhTf0ea2fmifTzodCALv3mwGed.jpg", 32 | "desc": "0.1元1个猫山王榴莲APP专享团进行中", 33 | "start_time": 1466330400, 34 | "end_time": 1466935200 35 | } 36 | */ 37 | -------------------------------------------------------------------------------- /pinduoduo/Expand/Category/UIImage/UIImage+Color.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+Color.m 3 | // Foscam 4 | // 5 | // Created by song.wang on 14-7-2. 6 | // Copyright (c) 2014年 sunny_zhang. All rights reserved. 7 | // 8 | 9 | #import "UIImage+Color.h" 10 | 11 | #define kRectCornerNone 1000111 12 | 13 | @implementation UIImage (Color) 14 | 15 | + (UIImage *)imageWithColor:(UIColor *)color andSize:(CGSize)size 16 | { 17 | return [UIImage imageWithColor:color andSize:size byRoundingCorner:kRectCornerNone cornerRadii:CGSizeZero]; 18 | } 19 | 20 | + (UIImage *)imageWithColor:(UIColor *)color andSize:(CGSize)size byRoundingCorner:(UIRectCorner) corner cornerRadii:(CGSize)cornerSize 21 | { 22 | CGRect rect = CGRectMake(0.0f, 0.0f, size.width, size.height); 23 | UIGraphicsBeginImageContextWithOptions(rect.size, NO, [UIScreen mainScreen].scale); 24 | CGContextRef context = UIGraphicsGetCurrentContext(); 25 | CGContextSetFillColorWithColor(context, [color CGColor]); 26 | if (corner != kRectCornerNone) { 27 | [[UIBezierPath bezierPathWithRoundedRect:rect byRoundingCorners:corner cornerRadii:cornerSize] addClip]; 28 | } 29 | CGContextFillRect(context, rect); 30 | UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 31 | UIGraphicsEndImageContext(); 32 | return image; 33 | 34 | } 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /pinduoduo/Main/Home/Views/MItemCollectionViewCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // MCollectionViewCell.m 3 | // DXAlertView 4 | // 5 | // Created by MCL on 16/4/16. 6 | // Copyright © 2016年 xiekw. All rights reserved. 7 | // 8 | 9 | #import "MItemCollectionViewCell.h" 10 | 11 | @implementation MItemCollectionViewCell 12 | 13 | - (instancetype)initWithFrame:(CGRect)frame{ 14 | self = [super initWithFrame:frame]; 15 | if (self) { 16 | self.backgroundColor = [UIColor whiteColor]; 17 | self.imageView.frame = CGRectMake(10, 10, 60, 60); 18 | self.imageView.center = CGPointMake(self.contentView.center.x,self.contentView.center.y - 10); 19 | [self addSubview:self.imageView]; 20 | self.imageLbl = [[UILabel alloc] initWithFrame:CGRectMake(0, frame.size.height- 30,frame.size.width, 20)]; 21 | self.imageLbl.textAlignment = NSTextAlignmentCenter; 22 | self.imageLbl.textColor = [UIColor blackColor]; 23 | self.imageLbl.font = [UIFont systemFontOfSize:13]; 24 | [self addSubview:self.imageLbl]; 25 | } 26 | return self; 27 | } 28 | 29 | - (UIImageView *)imageView{ 30 | if (!_imageView) { 31 | _imageView = [[UIImageView alloc]init]; 32 | } 33 | // _imageView.layer.borderColor = [UIColor whiteColor].CGColor; 34 | // _imageView.layer.borderWidth = 0.5; 35 | return _imageView; 36 | } 37 | @end 38 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/IMYAOPTableView/TableUtils/IMYAOPTableViewUtilsDefine.h: -------------------------------------------------------------------------------- 1 | // 2 | // IMYAOPTableViewUtilsDefine.h 3 | // IMYAdvertisementDemo 4 | // 5 | // Created by ljh on 16/5/20. 6 | // Copyright © 2016年 IMY. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class IMYAOPTableViewInsertBody, IMYAOPTableViewUtils; 12 | @protocol IMYAOPTableViewDelegate 13 | 14 | @required 15 | - (void)aopTableUtils:(IMYAOPTableViewUtils*)tableUtils willDisplayCell:(UITableViewCell*)cell forRowAtIndexPath:(NSIndexPath*)indexPath; 16 | 17 | @optional 18 | ///实现了这个方法 将不会再走原有的 获取 height 的方法 帖子列表置顶广告使用 19 | - (CGFloat)aopTableUtils:(IMYAOPTableViewUtils*)tableUtils heightForHeaderInSection:(NSInteger)section; 20 | 21 | @end 22 | 23 | @protocol IMYAOPTableViewDataSource 24 | 25 | @required 26 | - (void)aopTableUtils:(IMYAOPTableViewUtils*)tableUtils numberOfSection:(NSInteger)sectionNumber; 27 | 28 | @end 29 | 30 | ///禁止独立初始化 31 | @protocol IMY_UNAVAILABLE_ATTRIBUTE_ALLOC 32 | - (instancetype)init UNAVAILABLE_ATTRIBUTE; 33 | + (instancetype) new UNAVAILABLE_ATTRIBUTE; 34 | + (instancetype)alloc UNAVAILABLE_ATTRIBUTE; 35 | @end 36 | 37 | ///数据类型 38 | typedef NS_ENUM(NSUInteger, IMYAOPType) { 39 | ///原始数据 40 | IMYAOPTypeRaw, 41 | ///插入数据 42 | IMYAOPTypeInsert, 43 | ///全部数据 44 | IMYAOPTypeAll, 45 | }; -------------------------------------------------------------------------------- /pinduoduo/Main/Home/Models/GoodsListDataModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // GoodsListDataModel.m 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/18. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import "GoodsListDataModel.h" 10 | 11 | @implementation GoodsListDataModel 12 | 13 | //以下是另外一种初始化Model的方法 可嵌套Model 14 | 15 | // /** 新闻标题 */ 16 | //@property (nonatomic, copy) NSString *title; 17 | ///** 新闻发布时间 */ 18 | //@property (nonatomic, copy) NSString *ptime; 19 | ///** 新闻内容 */ 20 | //@property (nonatomic, copy) NSString *body; 21 | ///** 新闻配图(希望这个数组中以后放HMNewsDetailImg模型) */ 22 | //@property (nonatomic, strong) NSArray *img; 23 | // 24 | //+ (instancetype)detailWithDict:(NSDictionary *)dict; 25 | 26 | 27 | //+ (instancetype)detailWithDict:(NSDictionary *)dict{ 28 | /* 29 | SXDetailModel *detail = [[self alloc]init]; 30 | detail.title = dict[@"title"]; 31 | detail.ptime = dict[@"ptime"]; 32 | detail.body = dict[@"body"]; 33 | 34 | NSArray *imgArray = dict[@"img"]; 35 | NSMutableArray *temArray = [NSMutableArray arrayWithCapacity:imgArray.count]; 36 | 37 | for (NSDictionary *dict in imgArray) { 38 | SXDetailImgModel *imgModel = [SXDetailImgModel detailImgWithDict:dict]; 39 | [temArray addObject:imgModel]; 40 | } 41 | detail.img = temArray; 42 | 43 | 44 | return detail; 45 | */ 46 | //} 47 | 48 | @end 49 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | -------------------------------------------------------------------------------- /pinduoduo/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NSAppTransportSecurity 6 | 7 | NSAllowsArbitraryLoads 8 | 9 | 10 | CFBundleDevelopmentRegion 11 | en 12 | CFBundleExecutable 13 | $(EXECUTABLE_NAME) 14 | CFBundleIdentifier 15 | $(PRODUCT_BUNDLE_IDENTIFIER) 16 | CFBundleInfoDictionaryVersion 17 | 6.0 18 | CFBundleName 19 | $(PRODUCT_NAME) 20 | CFBundlePackageType 21 | APPL 22 | CFBundleShortVersionString 23 | 1.0 24 | CFBundleSignature 25 | ???? 26 | CFBundleVersion 27 | 1 28 | LSRequiresIPhoneOS 29 | 30 | UILaunchStoryboardName 31 | LaunchScreen 32 | UIMainStoryboardFile 33 | Main 34 | UIRequiredDeviceCapabilities 35 | 36 | armv7 37 | 38 | UISupportedInterfaceOrientations 39 | 40 | UIInterfaceOrientationPortrait 41 | UIInterfaceOrientationLandscapeLeft 42 | UIInterfaceOrientationLandscapeRight 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/MJRefresh/MJRefreshConst.m: -------------------------------------------------------------------------------- 1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh 2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000 3 | #import 4 | 5 | const CGFloat MJRefreshHeaderHeight = 54.0; 6 | const CGFloat MJRefreshFooterHeight = 44.0; 7 | const CGFloat MJRefreshFastAnimationDuration = 0.25; 8 | const CGFloat MJRefreshSlowAnimationDuration = 0.4; 9 | 10 | NSString *const MJRefreshKeyPathContentOffset = @"contentOffset"; 11 | NSString *const MJRefreshKeyPathContentInset = @"contentInset"; 12 | NSString *const MJRefreshKeyPathContentSize = @"contentSize"; 13 | NSString *const MJRefreshKeyPathPanState = @"state"; 14 | 15 | NSString *const MJRefreshHeaderLastUpdatedTimeKey = @"MJRefreshHeaderLastUpdatedTimeKey"; 16 | 17 | NSString *const MJRefreshHeaderIdleText = @"下拉可以刷新"; 18 | NSString *const MJRefreshHeaderPullingText = @"松开立即刷新"; 19 | NSString *const MJRefreshHeaderRefreshingText = @"正在刷新数据中..."; 20 | 21 | NSString *const MJRefreshAutoFooterIdleText = @"点击或上拉加载更多"; 22 | NSString *const MJRefreshAutoFooterRefreshingText = @"正在加载更多的数据..."; 23 | NSString *const MJRefreshAutoFooterNoMoreDataText = @"已经全部加载完毕"; 24 | 25 | NSString *const MJRefreshBackFooterIdleText = @"上拉可以加载更多"; 26 | NSString *const MJRefreshBackFooterPullingText = @"松开立即加载更多"; 27 | NSString *const MJRefreshBackFooterRefreshingText = @"正在加载更多的数据..."; 28 | NSString *const MJRefreshBackFooterNoMoreDataText = @"已经全部加载完毕"; -------------------------------------------------------------------------------- /pinduoduo/Vendor/AFNetworking/UIKit+AFNetworking/UIImage+AFNetworking.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+AFNetworking.h 3 | // 4 | // 5 | // Created by Paulo Ferreira on 08/07/15. 6 | // 7 | // Permission is hereby granted, free of charge, to any person obtaining a copy 8 | // of this software and associated documentation files (the "Software"), to deal 9 | // in the Software without restriction, including without limitation the rights 10 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | // copies of the Software, and to permit persons to whom the Software is 12 | // furnished to do so, subject to the following conditions: 13 | // 14 | // The above copyright notice and this permission notice shall be included in 15 | // all copies or substantial portions of the Software. 16 | // 17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | // THE SOFTWARE. 24 | 25 | #if TARGET_OS_IOS || TARGET_OS_TV 26 | 27 | #import 28 | 29 | @interface UIImage (AFNetworking) 30 | 31 | + (UIImage*) safeImageWithData:(NSData*)data; 32 | 33 | @end 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | -------------------------------------------------------------------------------- /pinduoduo/Main/Home/Views/othersCollectionViewCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // othersCollectionViewCell.m 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/22. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import "othersCollectionViewCell.h" 10 | 11 | @implementation othersCollectionViewCell 12 | 13 | 14 | // 360 15 | /* 16 | 10 17 | 40 18 | 10 19 | 20 | 200 21 | 10 22 | 50 23 | 10 24 | 20 25 | 10 26 | */ 27 | - (instancetype)initWithFrame:(CGRect)frame{ 28 | self = [super initWithFrame:frame]; 29 | if (self) { 30 | self.backgroundColor = [UIColor whiteColor]; 31 | //150 *280 32 | self.goodsImageV = [[UIImageView alloc]init]; 33 | self.goodsImageV.frame = CGRectMake(0, 10, 150, 150); 34 | self.goodsImageV.layer.borderWidth = 1; 35 | 36 | self.imageLbl = [[UILabel alloc] initWithFrame:CGRectMake(5, 180, 140, 60)]; 37 | self.imageLbl.textAlignment = NSTextAlignmentLeft; 38 | self.imageLbl.textColor = [UIColor blackColor]; 39 | self.imageLbl.font = [UIFont systemFontOfSize:15]; 40 | self.imageLbl.numberOfLines = 3; 41 | 42 | self.priceLbl = [[UILabel alloc] initWithFrame:CGRectMake(0, 250, 150, 30)]; 43 | self.priceLbl.textAlignment = NSTextAlignmentLeft; 44 | self.priceLbl.textColor = [UIColor redColor]; 45 | self.priceLbl.font = [UIFont systemFontOfSize:17]; 46 | 47 | [self addSubview:self.goodsImageV]; 48 | [self addSubview:self.imageLbl]; 49 | [self addSubview:self.priceLbl]; 50 | } 51 | return self; 52 | } 53 | 54 | - (void)commitInitData{ 55 | 56 | } 57 | 58 | @end 59 | -------------------------------------------------------------------------------- /pinduoduo/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/17. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | 14 | @end 15 | 16 | /* 17 | 首页: 18 | 轮播图: 19 | GET 20 | http://apiv2.yangkeduo.com/subjects 21 | Host: apiv2.yangkeduo.com 22 | 23 | TableviewInfo: 24 | GET 25 | http://apiv2.yangkeduo.com/v2/goods?size=50&page=1 26 | 27 | 上拉获取更多的数据 28 | http://apiv2.yangkeduo.com/v2/haitaov2?size=50&page=1 29 | http://apiv2.yangkeduo.com/v2/haitaov2?size=50&page=2 30 | 31 | page ++ 32 | 33 | 34 | 35 | 每日秒杀 36 | GET 37 | http://apiv2.yangkeduo.com/spike_list?page=1&size=50 38 | Host: apiv2.yangkeduo.com 39 | 40 | 超值大牌 41 | GET 42 | http://apiv2.yangkeduo.com/v2/super_brands 43 | Host: apiv2.yangkeduo.com 44 | 45 | 9.9 专场 46 | GET 47 | http://apiv2.yangkeduo.com/v2/subject/384/goods 48 | Host: apiv2.yangkeduo.com 49 | 50 | 每日抽奖 51 | GET 52 | http://apiv2.yangkeduo.com/lucky_draw_list 53 | apiv2.yangkeduo.com 54 | 55 | 食品 56 | GET 57 | http://apiv2.yangkeduo.com/operation/1/groups?opt_type=1&size=1&offset=0 58 | 59 | 服饰箱包 60 | GET 61 | http://apiv2.yangkeduo.com/operation/14/groups?opt_type=1&size=1&offset=0 62 | 63 | 家居生活 64 | http://apiv2.yangkeduo.com/operation/15/groups?opt_type=1&size=1&offset=0 65 | 66 | 母婴 67 | http://apiv2.yangkeduo.com/operation/4/groups?opt_type=1&size=1&offset=0 68 | 69 | 美妆护肤 70 | http://apiv2.yangkeduo.com/operation/16/groups?opt_type=1&size=1&offset=0 71 | 72 | 海淘 73 | http://apiv2.yangkeduo.com/v2/haitaov2?size=50&page=1 74 | 75 | 76 | 77 | */ -------------------------------------------------------------------------------- /pinduoduo/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 | -------------------------------------------------------------------------------- /pinduoduo/Main/Home/Models/SuperBrandDataModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // SuperBrandDataModel.h 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/18. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "GoodsSubjectModel.h" 11 | 12 | @interface SuperBrandDataModel : NSObject 13 | 14 | @property (nonatomic, strong)GoodsSubjectModel *goodSubjectModel; 15 | @property (nonatomic, strong)NSArray *goodlistArr; 16 | @property (nonatomic, strong)NSString *position; 17 | @property (nonatomic, strong)NSString *cellIdentifier; 18 | 19 | @end 20 | 21 | /* 22 | home_super_brand 23 | { 24 | "subject_id": 426, 25 | "subject": "6/18大牌", 26 | "second_name": "", 27 | "desc": "", 28 | "start_time": 1466179200, 29 | "end_time": 1466265600, 30 | "home_banner": "", 31 | "home_banner_height": 0, 32 | "home_banner_width": 0, 33 | "type": "super_brand", 34 | "position": 4, 35 | "share_image": "", 36 | "goods_list": [ 37 | { 38 | "goods_id": 108811, 39 | "goods_name": "84.9元 【618来了,这价格不抢就没了!】SKG养生壶绿色/紫色/咖啡色三色可选正品加厚玻璃", 40 | "is_onsale": 1, 41 | "thumb_url": "http://omsproductionimg.yangkeduo.com/images/goods/1605232923843592/6HL9e63Ti4DepMVb2ewX1pTWIaHsFKYG.jpg", 42 | "hd_thumb_url": "http://omsproductionimg.yangkeduo.com/images/goods/1605232923843592/Domsc65nEbh8zyWQgYeOnIVFo8e9EnHj.jpg", 43 | "price": 8490, 44 | "image_url": "http://omsproductionimg.yangkeduo.com/images/goods/1605232923843592/dnAjrIKPYeUXcjiG0NsvqaQH0G1pEPH8.jpg", 45 | "market_price": 69900, 46 | "sales": 523, 47 | "logo": "http://omsproductionimg.yangkeduo.com/images/super_brand/0/r5nAKltpZzHqEPG15sdFsM4hHfn8eQeb.jpg", 48 | "is_app": 0, 49 | "event_type": 5, 50 | "customer_num": 2, 51 | "promotion_goods": "675525,675920" 52 | }, 53 | 54 | */ -------------------------------------------------------------------------------- /pinduoduo/Main/Home/Models/RecommendSubjectsModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // HomeRecommendSubjectsModel.h 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/18. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "GoodsSubjectModel.h" 11 | 12 | @interface RecommendSubjectsModel : NSObject 13 | 14 | @property (nonatomic, strong)GoodsSubjectModel *goodSubjectModel; 15 | @property (nonatomic, strong)NSArray *goodlistArr; 16 | @property (nonatomic, strong)NSString *position; 17 | @property (nonatomic, strong)NSString *cellIdentifier; 18 | 19 | @end 20 | 21 | /* 22 | 23 | GoodsSubject 24 | 25 | { 26 | "subject_id": 373, 27 | "subject": "天天特价", 28 | "second_name": "", 29 | "desc": "天天特价", 30 | "home_banner": "http://omsproductionimg.yangkeduo.com/images/goods/373/5w5fVArMmEa6hyKYvQhZZgEqbWBAFYZm.jpg", 31 | "home_banner_height": 350, 32 | "home_banner_width": 640, 33 | "type": "home_recommend", 34 | "position": 8, 35 | "share_image": "", 36 | "goods_list": [ 37 | { 38 | "goods_id": 183635, 39 | "goods_name": "23.9元 黑布林5斤(19-26个)美国黑李品种(plum)现摘现发胜智利进口品种 孕妇水果【预售6月26日完成发货】", 40 | "is_onsale": 1, 41 | "thumb_url": "http://omsproductionimg.yangkeduo.com/images/goods/1606161336307601/ogHtyIkbJEjd4L08v0L7ktEDdms28vmU.jpg", 42 | "hd_thumb_url": "http://omsproductionimg.yangkeduo.com/images/goods/1606161336307601/uJexEWUmsC6fHmuX0pVGkTWmvRkx5Z4W.jpg", 43 | "price": 2390, 44 | "image_url": "http://omsproductionimg.yangkeduo.com/images/goods/386720/p0uZIbdRkzeFt9K3sbIOkSq1on1NTPnr.jpg", 45 | "sales": 1649, 46 | "logo": "http://img-cn-shanghai.aliyuncs.com/pddtest/images/goods/16051690677682492OCa8F104zm0SSkdmiRby8cCtCLHyRcS.jpg", 47 | "is_app": 0, 48 | "event_type": 0, 49 | "customer_num": 2 50 | }, 51 | 52 | */ -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | -------------------------------------------------------------------------------- /pinduoduo/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 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/AFNetworking/AFNetworking.h: -------------------------------------------------------------------------------- 1 | // AFNetworking.h 2 | // 3 | // Copyright (c) 2013 AFNetworking (http://afnetworking.com/) 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 13 | // all 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 21 | // THE SOFTWARE. 22 | 23 | #import 24 | #import 25 | #import 26 | 27 | #ifndef _AFNETWORKING_ 28 | #define _AFNETWORKING_ 29 | 30 | #import "AFURLRequestSerialization.h" 31 | #import "AFURLResponseSerialization.h" 32 | #import "AFSecurityPolicy.h" 33 | 34 | #if !TARGET_OS_WATCH 35 | #import "AFNetworkReachabilityManager.h" 36 | #endif 37 | 38 | #import "AFURLSessionManager.h" 39 | #import "AFHTTPSessionManager.h" 40 | 41 | #endif /* _AFNETWORKING_ */ 42 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/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 | -------------------------------------------------------------------------------- /pinduoduo/Main/HotList/Controllers/HotListViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // HotListViewController.m 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/18. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import "HotListViewController.h" 10 | #import "PushViewController.h" 11 | 12 | @interface HotListViewController () 13 | 14 | @end 15 | 16 | @implementation HotListViewController 17 | 18 | - (void)viewDidLoad { 19 | [super viewDidLoad]; 20 | // Do any additional setup after loading the view. 21 | self.view.backgroundColor = [[UIColor redColor] colorWithAlphaComponent:0.25]; 22 | 23 | UIButton *pushBtn = [UIButton buttonWithType:UIButtonTypeCustom]; 24 | pushBtn.frame = CGRectMake(0, 0, 200, 200); 25 | pushBtn.center = self.view.center; 26 | pushBtn.backgroundColor = [[UIColor purpleColor] colorWithAlphaComponent:0.25]; 27 | [pushBtn setTitle:@"PUSH ME" forState:UIControlStateNormal]; 28 | [pushBtn addTarget:self action:@selector(pushAction) forControlEvents:UIControlEventTouchUpInside]; 29 | 30 | UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(pushAction)]; 31 | [self.view addGestureRecognizer:singleTap]; 32 | } 33 | 34 | - (void)didReceiveMemoryWarning { 35 | [super didReceiveMemoryWarning]; 36 | // Dispose of any resources that can be recreated. 37 | } 38 | 39 | - (void)pushAction{ 40 | PushViewController *push = [[PushViewController alloc] init]; 41 | [self.navigationController pushViewController:push animated:NO]; 42 | } 43 | 44 | /* 45 | #pragma mark - Navigation 46 | 47 | // In a storyboard-based application, you will often want to do a little preparation before navigation 48 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 49 | // Get the new view controller using [segue destinationViewController]. 50 | // Pass the selected object to the new view controller. 51 | } 52 | */ 53 | 54 | @end 55 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h: -------------------------------------------------------------------------------- 1 | // UIKit+AFNetworking.h 2 | // 3 | // Copyright (c) 2011–2016 Alamofire Software Foundation (http://alamofire.org/) 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 13 | // all 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 21 | // THE SOFTWARE. 22 | 23 | #if TARGET_OS_IOS || TARGET_OS_TV 24 | #import 25 | 26 | #ifndef _UIKIT_AFNETWORKING_ 27 | #define _UIKIT_AFNETWORKING_ 28 | 29 | #if TARGET_OS_IOS 30 | #import "AFAutoPurgingImageCache.h" 31 | #import "AFImageDownloader.h" 32 | #import "AFNetworkActivityIndicatorManager.h" 33 | #import "UIRefreshControl+AFNetworking.h" 34 | #import "UIWebView+AFNetworking.h" 35 | #endif 36 | 37 | #import "UIActivityIndicatorView+AFNetworking.h" 38 | #import "UIButton+AFNetworking.h" 39 | #import "UIImageView+AFNetworking.h" 40 | #import "UIProgressView+AFNetworking.h" 41 | #endif /* _UIKIT_AFNETWORKING_ */ 42 | #endif 43 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/IMYAOPTableView/TableUtils/IMYAOPTableViewUtils.h: -------------------------------------------------------------------------------- 1 | // 2 | // IMYAOPTableViewUtils.h 3 | // IMYAdvertisementDemo 4 | // 5 | // Created by ljh on 16/4/15. 6 | // Copyright © 2016年 IMY. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "IMYAOPTableViewUtilsDefine.h" 11 | #import "IMYAOPTableViewInsertBody.h" 12 | 13 | /** 14 | * 请通过TableView 的 aop_utils 方法,获取该实例, 禁止独立初始化 15 | * 原来所有的TableView方法将会被hook,如果需要调用原有方法请看 IMYAOPTableViewUtils+Proxy.h 16 | */ 17 | @interface IMYAOPTableViewUtils : NSObject 18 | 19 | @property (nonatomic, readonly, weak) UITableView* tableView; 20 | 21 | ///AOP TableView 的回调 22 | @property (nonatomic, weak) id delegate; 23 | @property (nonatomic, weak) id dataSource; 24 | 25 | ///插入sections 跟 indexPaths 26 | - (void)insertWithSections:(NSArray*)sections; 27 | - (void)insertWithIndexPaths:(NSArray*)indexPaths; 28 | 29 | /** 30 | * 是否合并刷新, 如果开启会有个0.2的间隔来进行合并刷新 Default:NO 31 | * 需要开启这个功能,请在podfile中加入 pod 'IMYAsyncBlock' 32 | */ 33 | @property (nonatomic, assign) BOOL combineReloadData; 34 | 35 | @end 36 | 37 | 38 | ///转换 IndexPath 39 | @interface IMYAOPTableViewUtils (IndexPath) 40 | 41 | ///table的 indexPath 转 逻辑调用的indexPath 42 | - (NSIndexPath*)realIndexPathByTable:(NSIndexPath*)tableIndexPath; 43 | ///逻辑indexPath 转 table 使用的indexPath 44 | - (NSIndexPath*)tableIndexPathByReal:(NSIndexPath*)realIndexPath; 45 | 46 | ///table的section 转 逻辑调用的section 47 | - (NSInteger)realSectionByTable:(NSInteger)tableSection; 48 | ///逻辑section 转 table 使用的section 49 | - (NSInteger)tableSectionByReal:(NSInteger)realSection; 50 | 51 | /// 数组转换, 效果跟上面一样 52 | - (NSArray*)realIndexPathsByTableIndexPaths:(NSArray*)tableIndexPaths; 53 | - (NSArray*)tableIndexPathsByRealIndexPaths:(NSArray*)realIndexPaths; 54 | 55 | - (NSIndexSet*)realSectionsByTableSet:(NSIndexSet*)tableSet; 56 | - (NSIndexSet*)tableSectionsByRealSet:(NSIndexSet*)realSet; 57 | 58 | @end 59 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/Masonry/MASConstraint+Private.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASConstraint+Private.h 3 | // Masonry 4 | // 5 | // Created by Nick Tymchenko on 29/04/14. 6 | // Copyright (c) 2014 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASConstraint.h" 10 | 11 | @protocol MASConstraintDelegate; 12 | 13 | 14 | @interface MASConstraint () 15 | 16 | /** 17 | * Whether or not to check for an existing constraint instead of adding constraint 18 | */ 19 | @property (nonatomic, assign) BOOL updateExisting; 20 | 21 | /** 22 | * Usually MASConstraintMaker but could be a parent MASConstraint 23 | */ 24 | @property (nonatomic, weak) id delegate; 25 | 26 | /** 27 | * Based on a provided value type, is equal to calling: 28 | * NSNumber - setOffset: 29 | * NSValue with CGPoint - setPointOffset: 30 | * NSValue with CGSize - setSizeOffset: 31 | * NSValue with MASEdgeInsets - setInsets: 32 | */ 33 | - (void)setLayoutConstantWithValue:(NSValue *)value; 34 | 35 | @end 36 | 37 | 38 | @interface MASConstraint (Abstract) 39 | 40 | /** 41 | * Sets the constraint relation to given NSLayoutRelation 42 | * returns a block which accepts one of the following: 43 | * MASViewAttribute, UIView, NSValue, NSArray 44 | * see readme for more details. 45 | */ 46 | - (MASConstraint * (^)(id, NSLayoutRelation))equalToWithRelation; 47 | 48 | /** 49 | * Override to set a custom chaining behaviour 50 | */ 51 | - (MASConstraint *)addConstraintWithLayoutAttribute:(NSLayoutAttribute)layoutAttribute; 52 | 53 | @end 54 | 55 | 56 | @protocol MASConstraintDelegate 57 | 58 | /** 59 | * Notifies the delegate when the constraint needs to be replaced with another constraint. For example 60 | * A MASViewConstraint may turn into a MASCompositeConstraint when an array is passed to one of the equality blocks 61 | */ 62 | - (void)constraint:(MASConstraint *)constraint shouldBeReplacedWithConstraint:(MASConstraint *)replacementConstraint; 63 | 64 | - (MASConstraint *)constraint:(MASConstraint *)constraint addConstraintWithLayoutAttribute:(NSLayoutAttribute)layoutAttribute; 65 | 66 | @end 67 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.m: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshAutoNormalFooter.m 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/4/24. 6 | // Copyright (c) 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshAutoNormalFooter.h" 10 | 11 | @interface MJRefreshAutoNormalFooter() 12 | @property (weak, nonatomic) UIActivityIndicatorView *loadingView; 13 | @end 14 | 15 | @implementation MJRefreshAutoNormalFooter 16 | #pragma mark - 懒加载子控件 17 | - (UIActivityIndicatorView *)loadingView 18 | { 19 | if (!_loadingView) { 20 | UIActivityIndicatorView *loadingView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:self.activityIndicatorViewStyle]; 21 | loadingView.hidesWhenStopped = YES; 22 | [self addSubview:_loadingView = loadingView]; 23 | } 24 | return _loadingView; 25 | } 26 | 27 | - (void)setActivityIndicatorViewStyle:(UIActivityIndicatorViewStyle)activityIndicatorViewStyle 28 | { 29 | _activityIndicatorViewStyle = activityIndicatorViewStyle; 30 | 31 | self.loadingView = nil; 32 | [self setNeedsLayout]; 33 | } 34 | #pragma makr - 重写父类的方法 35 | - (void)prepare 36 | { 37 | [super prepare]; 38 | 39 | self.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray; 40 | } 41 | 42 | - (void)placeSubviews 43 | { 44 | [super placeSubviews]; 45 | 46 | if (self.loadingView.constraints.count) return; 47 | 48 | // 圈圈 49 | CGFloat loadingCenterX = self.mj_w * 0.5; 50 | if (!self.isRefreshingTitleHidden) { 51 | loadingCenterX -= 100; 52 | } 53 | CGFloat loadingCenterY = self.mj_h * 0.5; 54 | self.loadingView.center = CGPointMake(loadingCenterX, loadingCenterY); 55 | } 56 | 57 | - (void)setState:(MJRefreshState)state 58 | { 59 | MJRefreshCheckState 60 | 61 | // 根据状态做事情 62 | if (state == MJRefreshStateNoMoreData || state == MJRefreshStateIdle) { 63 | [self.loadingView stopAnimating]; 64 | } else if (state == MJRefreshStateRefreshing) { 65 | [self.loadingView startAnimating]; 66 | } 67 | } 68 | 69 | @end 70 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/SDWebImage/SDWebImageCompat.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * (c) Jamie Pinkham 5 | * 6 | * For the full copyright and license information, please view the LICENSE 7 | * file that was distributed with this source code. 8 | */ 9 | 10 | #import 11 | 12 | #ifdef __OBJC_GC__ 13 | #error SDWebImage does not support Objective-C Garbage Collection 14 | #endif 15 | 16 | #if __IPHONE_OS_VERSION_MIN_REQUIRED != 20000 && __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_5_0 17 | #error SDWebImage doesn't support Deployment Target version < 5.0 18 | #endif 19 | 20 | #if !TARGET_OS_IPHONE 21 | #import 22 | #ifndef UIImage 23 | #define UIImage NSImage 24 | #endif 25 | #ifndef UIImageView 26 | #define UIImageView NSImageView 27 | #endif 28 | #else 29 | 30 | #import 31 | 32 | #endif 33 | 34 | #ifndef NS_ENUM 35 | #define NS_ENUM(_type, _name) enum _name : _type _name; enum _name : _type 36 | #endif 37 | 38 | #ifndef NS_OPTIONS 39 | #define NS_OPTIONS(_type, _name) enum _name : _type _name; enum _name : _type 40 | #endif 41 | 42 | #if OS_OBJECT_USE_OBJC 43 | #undef SDDispatchQueueRelease 44 | #undef SDDispatchQueueSetterSementics 45 | #define SDDispatchQueueRelease(q) 46 | #define SDDispatchQueueSetterSementics strong 47 | #else 48 | #undef SDDispatchQueueRelease 49 | #undef SDDispatchQueueSetterSementics 50 | #define SDDispatchQueueRelease(q) (dispatch_release(q)) 51 | #define SDDispatchQueueSetterSementics assign 52 | #endif 53 | 54 | extern UIImage *SDScaledImageForKey(NSString *key, UIImage *image); 55 | 56 | typedef void(^SDWebImageNoParamsBlock)(); 57 | 58 | extern NSString *const SDWebImageErrorDomain; 59 | 60 | #define dispatch_main_sync_safe(block)\ 61 | if ([NSThread isMainThread]) {\ 62 | block();\ 63 | } else {\ 64 | dispatch_sync(dispatch_get_main_queue(), block);\ 65 | } 66 | 67 | #define dispatch_main_async_safe(block)\ 68 | if ([NSThread isMainThread]) {\ 69 | block();\ 70 | } else {\ 71 | dispatch_async(dispatch_get_main_queue(), block);\ 72 | } 73 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/MJRefresh/Base/MJRefreshFooter.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 | // MJRefreshFooter.m 4 | // MJRefreshExample 5 | // 6 | // Created by MJ Lee on 15/3/5. 7 | // Copyright (c) 2015年 小码哥. All rights reserved. 8 | // 9 | 10 | #import "MJRefreshFooter.h" 11 | 12 | @interface MJRefreshFooter() 13 | 14 | @end 15 | 16 | @implementation MJRefreshFooter 17 | #pragma mark - 构造方法 18 | + (instancetype)footerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock 19 | { 20 | MJRefreshFooter *cmp = [[self alloc] init]; 21 | cmp.refreshingBlock = refreshingBlock; 22 | return cmp; 23 | } 24 | + (instancetype)footerWithRefreshingTarget:(id)target refreshingAction:(SEL)action 25 | { 26 | MJRefreshFooter *cmp = [[self alloc] init]; 27 | [cmp setRefreshingTarget:target refreshingAction:action]; 28 | return cmp; 29 | } 30 | 31 | #pragma mark - 重写父类的方法 32 | - (void)prepare 33 | { 34 | [super prepare]; 35 | 36 | // 设置自己的高度 37 | self.mj_h = MJRefreshFooterHeight; 38 | 39 | // 默认不会自动隐藏 40 | self.automaticallyHidden = NO; 41 | } 42 | 43 | - (void)willMoveToSuperview:(UIView *)newSuperview 44 | { 45 | [super willMoveToSuperview:newSuperview]; 46 | 47 | if (newSuperview) { 48 | // 监听scrollView数据的变化 49 | if ([self.scrollView isKindOfClass:[UITableView class]] || [self.scrollView isKindOfClass:[UICollectionView class]]) { 50 | [self.scrollView setMj_reloadDataBlock:^(NSInteger totalDataCount) { 51 | if (self.isAutomaticallyHidden) { 52 | self.hidden = (totalDataCount == 0); 53 | } 54 | }]; 55 | } 56 | } 57 | } 58 | 59 | #pragma mark - 公共方法 60 | - (void)endRefreshingWithNoMoreData 61 | { 62 | self.state = MJRefreshStateNoMoreData; 63 | } 64 | 65 | - (void)noticeNoMoreData 66 | { 67 | [self endRefreshingWithNoMoreData]; 68 | } 69 | 70 | - (void)resetNoMoreData 71 | { 72 | self.state = MJRefreshStateIdle; 73 | } 74 | @end 75 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/SDWebImage/UIView+WebCacheOperation.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "UIView+WebCacheOperation.h" 10 | #import "objc/runtime.h" 11 | 12 | static char loadOperationKey; 13 | 14 | @implementation UIView (WebCacheOperation) 15 | 16 | - (NSMutableDictionary *)operationDictionary { 17 | NSMutableDictionary *operations = objc_getAssociatedObject(self, &loadOperationKey); 18 | if (operations) { 19 | return operations; 20 | } 21 | operations = [NSMutableDictionary dictionary]; 22 | objc_setAssociatedObject(self, &loadOperationKey, operations, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 23 | return operations; 24 | } 25 | 26 | - (void)sd_setImageLoadOperation:(id)operation forKey:(NSString *)key { 27 | [self sd_cancelImageLoadOperationWithKey:key]; 28 | NSMutableDictionary *operationDictionary = [self operationDictionary]; 29 | [operationDictionary setObject:operation forKey:key]; 30 | } 31 | 32 | - (void)sd_cancelImageLoadOperationWithKey:(NSString *)key { 33 | // Cancel in progress downloader from queue 34 | NSMutableDictionary *operationDictionary = [self operationDictionary]; 35 | id operations = [operationDictionary objectForKey:key]; 36 | if (operations) { 37 | if ([operations isKindOfClass:[NSArray class]]) { 38 | for (id operation in operations) { 39 | if (operation) { 40 | [operation cancel]; 41 | } 42 | } 43 | } else if ([operations conformsToProtocol:@protocol(SDWebImageOperation)]){ 44 | [(id) operations cancel]; 45 | } 46 | [operationDictionary removeObjectForKey:key]; 47 | } 48 | } 49 | 50 | - (void)sd_removeImageLoadOperationWithKey:(NSString *)key { 51 | NSMutableDictionary *operationDictionary = [self operationDictionary]; 52 | [operationDictionary removeObjectForKey:key]; 53 | } 54 | 55 | @end 56 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.m: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshBackStateFooter.m 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/6/13. 6 | // Copyright © 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshBackStateFooter.h" 10 | 11 | @interface MJRefreshBackStateFooter() 12 | { 13 | /** 显示刷新状态的label */ 14 | __unsafe_unretained UILabel *_stateLabel; 15 | } 16 | /** 所有状态对应的文字 */ 17 | @property (strong, nonatomic) NSMutableDictionary *stateTitles; 18 | @end 19 | 20 | @implementation MJRefreshBackStateFooter 21 | #pragma mark - 懒加载 22 | - (NSMutableDictionary *)stateTitles 23 | { 24 | if (!_stateTitles) { 25 | self.stateTitles = [NSMutableDictionary dictionary]; 26 | } 27 | return _stateTitles; 28 | } 29 | 30 | - (UILabel *)stateLabel 31 | { 32 | if (!_stateLabel) { 33 | [self addSubview:_stateLabel = [UILabel label]]; 34 | } 35 | return _stateLabel; 36 | } 37 | 38 | #pragma mark - 公共方法 39 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state 40 | { 41 | if (title == nil) return; 42 | self.stateTitles[@(state)] = title; 43 | self.stateLabel.text = self.stateTitles[@(self.state)]; 44 | } 45 | 46 | - (NSString *)titleForState:(MJRefreshState)state { 47 | return self.stateTitles[@(state)]; 48 | } 49 | 50 | #pragma mark - 重写父类的方法 51 | - (void)prepare 52 | { 53 | [super prepare]; 54 | 55 | // 初始化文字 56 | [self setTitle:MJRefreshBackFooterIdleText forState:MJRefreshStateIdle]; 57 | [self setTitle:MJRefreshBackFooterPullingText forState:MJRefreshStatePulling]; 58 | [self setTitle:MJRefreshBackFooterRefreshingText forState:MJRefreshStateRefreshing]; 59 | [self setTitle:MJRefreshBackFooterNoMoreDataText forState:MJRefreshStateNoMoreData]; 60 | } 61 | 62 | - (void)placeSubviews 63 | { 64 | [super placeSubviews]; 65 | 66 | if (self.stateLabel.constraints.count) return; 67 | 68 | // 状态标签 69 | self.stateLabel.frame = self.bounds; 70 | } 71 | 72 | - (void)setState:(MJRefreshState)state 73 | { 74 | MJRefreshCheckState 75 | 76 | // 设置状态文字 77 | self.stateLabel.text = self.stateTitles[@(state)]; 78 | } 79 | @end 80 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h: -------------------------------------------------------------------------------- 1 | // UIActivityIndicatorView+AFNetworking.h 2 | // Copyright (c) 2011–2016 Alamofire Software Foundation (http://alamofire.org/) 3 | // 4 | // Permission is hereby granted, free of charge, to any person obtaining a copy 5 | // of this software and associated documentation files (the "Software"), to deal 6 | // in the Software without restriction, including without limitation the rights 7 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | // copies of the Software, and to permit persons to whom the Software is 9 | // furnished to do so, subject to the following conditions: 10 | // 11 | // The above copyright notice and this permission notice shall be included in 12 | // all copies or substantial portions of the Software. 13 | // 14 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 20 | // THE SOFTWARE. 21 | 22 | #import 23 | 24 | #import 25 | 26 | #if TARGET_OS_IOS || TARGET_OS_TV 27 | 28 | #import 29 | 30 | /** 31 | This category adds methods to the UIKit framework's `UIActivityIndicatorView` class. The methods in this category provide support for automatically starting and stopping animation depending on the loading state of a session task. 32 | */ 33 | @interface UIActivityIndicatorView (AFNetworking) 34 | 35 | ///---------------------------------- 36 | /// @name Animating for Session Tasks 37 | ///---------------------------------- 38 | 39 | /** 40 | Binds the animating state to the state of the specified task. 41 | 42 | @param task The task. If `nil`, automatic updating from any previously specified operation will be disabled. 43 | */ 44 | - (void)setAnimatingWithStateOfTask:(nullable NSURLSessionTask *)task; 45 | 46 | @end 47 | 48 | #endif 49 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h: -------------------------------------------------------------------------------- 1 | // UIRefreshControl+AFNetworking.m 2 | // 3 | // Copyright (c) 2011–2016 Alamofire Software Foundation (http://alamofire.org/) 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 13 | // all 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 21 | // THE SOFTWARE. 22 | 23 | #import 24 | 25 | #import 26 | 27 | #if TARGET_OS_IOS 28 | 29 | #import 30 | 31 | NS_ASSUME_NONNULL_BEGIN 32 | 33 | /** 34 | This category adds methods to the UIKit framework's `UIRefreshControl` class. The methods in this category provide support for automatically beginning and ending refreshing depending on the loading state of a session task. 35 | */ 36 | @interface UIRefreshControl (AFNetworking) 37 | 38 | ///----------------------------------- 39 | /// @name Refreshing for Session Tasks 40 | ///----------------------------------- 41 | 42 | /** 43 | Binds the refreshing state to the state of the specified task. 44 | 45 | @param task The task. If `nil`, automatic updating from any previously specified operation will be disabled. 46 | */ 47 | - (void)setRefreshingWithStateOfTask:(NSURLSessionTask *)task; 48 | 49 | @end 50 | 51 | NS_ASSUME_NONNULL_END 52 | 53 | #endif 54 | -------------------------------------------------------------------------------- /pinduoduo/Main/Home/Views/SuperBrandView.m: -------------------------------------------------------------------------------- 1 | // 2 | // SuperBrandView.m 3 | // pinduoduo 4 | // 5 | // Created by MCL on 16/6/23. 6 | // Copyright © 2016年 CHLMA. All rights reserved. 7 | // 8 | 9 | #import "SuperBrandView.h" 10 | 11 | @interface SuperBrandView () 12 | 13 | @property (nonatomic, strong) UIImageView *goodsImageV; 14 | @property (nonatomic, strong) UILabel *discountLbl; 15 | @property (nonatomic, strong) UIImageView *logoImageV; 16 | @property (nonatomic, strong) UILabel *priceLbl; 17 | 18 | @end 19 | 20 | @implementation SuperBrandView 21 | 22 | - (instancetype)initWithFrame:(CGRect)frame withDataModel:(GoodsListDataModel *)model{ 23 | self = [super initWithFrame:frame]; 24 | if (self) { 25 | [self commitInitView]; 26 | [self commitInitDataWithModel:model]; 27 | } 28 | return self; 29 | } 30 | 31 | - (void)commitInitView{ 32 | 33 | self.goodsImageV = [[UIImageView alloc] init]; 34 | _goodsImageV.frame = CGRectMake(0, 0, 120, 120); 35 | _goodsImageV.layer.borderWidth = 1; 36 | 37 | self.discountLbl = [[UILabel alloc] init]; 38 | _discountLbl.frame = CGRectMake(60, 10, 50, 20); 39 | _discountLbl.textAlignment = NSTextAlignmentCenter; 40 | _discountLbl.font = [UIFont systemFontOfSize:15]; 41 | _discountLbl.text = @"3.21折"; 42 | 43 | self.logoImageV = [[UIImageView alloc] init]; 44 | _logoImageV.frame = CGRectMake(20, 130, 80, 50); 45 | 46 | self.priceLbl = [[UILabel alloc] init]; 47 | _priceLbl.frame = CGRectMake(20, 190, 80, 25); 48 | _priceLbl.textAlignment = NSTextAlignmentCenter; 49 | _priceLbl.font = [UIFont systemFontOfSize:17]; 50 | 51 | [self addSubview:_goodsImageV]; 52 | [self addSubview:_discountLbl]; 53 | [self addSubview:_logoImageV]; 54 | [self addSubview:_priceLbl]; 55 | } 56 | 57 | - (void)commitInitDataWithModel:(GoodsListDataModel *)model{ 58 | 59 | [_goodsImageV sd_setImageWithURL:[NSURL URLWithString:model.thumb_url] placeholderImage:[UIImage imageNamed:@"default_square"]]; 60 | [_logoImageV sd_setImageWithURL:[NSURL URLWithString:model.logo] placeholderImage:[UIImage imageNamed:@"default_square"]]; 61 | _priceLbl.text = [NSString stringWithFormat:@"¥ %@",model.price]; 62 | } 63 | 64 | 65 | /* 66 | // Only override drawRect: if you perform custom drawing. 67 | // An empty implementation adversely affects performance during animation. 68 | - (void)drawRect:(CGRect)rect { 69 | // Drawing code 70 | } 71 | */ 72 | 73 | @end 74 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.m: -------------------------------------------------------------------------------- 1 | // 2 | // MJRefreshAutoStateFooter.m 3 | // MJRefreshExample 4 | // 5 | // Created by MJ Lee on 15/6/13. 6 | // Copyright © 2015年 小码哥. All rights reserved. 7 | // 8 | 9 | #import "MJRefreshAutoStateFooter.h" 10 | 11 | @interface MJRefreshAutoStateFooter() 12 | { 13 | /** 显示刷新状态的label */ 14 | __unsafe_unretained UILabel *_stateLabel; 15 | } 16 | /** 所有状态对应的文字 */ 17 | @property (strong, nonatomic) NSMutableDictionary *stateTitles; 18 | @end 19 | 20 | @implementation MJRefreshAutoStateFooter 21 | #pragma mark - 懒加载 22 | - (NSMutableDictionary *)stateTitles 23 | { 24 | if (!_stateTitles) { 25 | self.stateTitles = [NSMutableDictionary dictionary]; 26 | } 27 | return _stateTitles; 28 | } 29 | 30 | - (UILabel *)stateLabel 31 | { 32 | if (!_stateLabel) { 33 | [self addSubview:_stateLabel = [UILabel label]]; 34 | } 35 | return _stateLabel; 36 | } 37 | 38 | #pragma mark - 公共方法 39 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state 40 | { 41 | if (title == nil) return; 42 | self.stateTitles[@(state)] = title; 43 | self.stateLabel.text = self.stateTitles[@(self.state)]; 44 | } 45 | 46 | #pragma mark - 私有方法 47 | - (void)stateLabelClick 48 | { 49 | if (self.state == MJRefreshStateIdle) { 50 | [self beginRefreshing]; 51 | } 52 | } 53 | 54 | #pragma mark - 重写父类的方法 55 | - (void)prepare 56 | { 57 | [super prepare]; 58 | 59 | // 初始化文字 60 | [self setTitle:MJRefreshAutoFooterIdleText forState:MJRefreshStateIdle]; 61 | [self setTitle:MJRefreshAutoFooterRefreshingText forState:MJRefreshStateRefreshing]; 62 | [self setTitle:MJRefreshAutoFooterNoMoreDataText forState:MJRefreshStateNoMoreData]; 63 | 64 | // 监听label 65 | self.stateLabel.userInteractionEnabled = YES; 66 | [self.stateLabel addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(stateLabelClick)]]; 67 | } 68 | 69 | - (void)placeSubviews 70 | { 71 | [super placeSubviews]; 72 | 73 | if (self.stateLabel.constraints.count) return; 74 | 75 | // 状态标签 76 | self.stateLabel.frame = self.bounds; 77 | } 78 | 79 | - (void)setState:(MJRefreshState)state 80 | { 81 | MJRefreshCheckState 82 | 83 | if (self.isRefreshingTitleHidden && state == MJRefreshStateRefreshing) { 84 | self.stateLabel.text = nil; 85 | } else { 86 | self.stateLabel.text = self.stateTitles[@(state)]; 87 | } 88 | } 89 | @end -------------------------------------------------------------------------------- /pinduoduo/Expand/Category/UIImage/UIImage+XHRounded.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+XHRounded.m 3 | // MessageDisplayExample 4 | // 5 | // Created by HUAJIE-1 on 14-4-25. 6 | // Copyright (c) 2014年 嗨,我是曾宪华(@xhzengAIB),曾加入YY Inc.担任高级移动开发工程师,拍立秀App联合创始人,热衷于简洁、而富有理性的事物 QQ:543413507 主页:http://zengxianhua.com All rights reserved. 7 | // 8 | 9 | #import "UIImage+XHRounded.h" 10 | 11 | @implementation UIImage (XHRounded) 12 | 13 | static void addRoundedRectToPath(CGContextRef context, CGRect rect, float ovalWidth, 14 | float ovalHeight) { 15 | float fw, fh; 16 | if (ovalWidth == 0 || ovalHeight == 0) { 17 | CGContextAddRect(context, rect); 18 | return; 19 | } 20 | 21 | CGContextSaveGState(context); 22 | CGContextTranslateCTM(context, CGRectGetMinX(rect), CGRectGetMinY(rect)); 23 | CGContextScaleCTM(context, ovalWidth, ovalHeight); 24 | fw = CGRectGetWidth(rect) / ovalWidth; 25 | fh = CGRectGetHeight(rect) / ovalHeight; 26 | 27 | CGContextMoveToPoint(context, fw, fh/2); // Start at lower right corner 28 | CGContextAddArcToPoint(context, fw, fh, fw/2, fh, 1); // Top right corner 29 | CGContextAddArcToPoint(context, 0, fh, 0, fh/2, 1); // Top left corner 30 | CGContextAddArcToPoint(context, 0, 0, fw/2, 0, 1); // Lower left corner 31 | CGContextAddArcToPoint(context, fw, 0, fw, fh/2, 1); // Back to lower right 32 | 33 | CGContextClosePath(context); 34 | CGContextRestoreGState(context); 35 | } 36 | 37 | - (UIImage *)createRoundedWithRadius:(CGFloat)radius { 38 | if (!radius) 39 | radius = 8; 40 | // the size of CGContextRef 41 | int w = self.size.width; 42 | int h = self.size.height; 43 | 44 | UIImage *img = self; 45 | CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 46 | CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace, (CGBitmapInfo)kCGImageAlphaPremultipliedFirst); 47 | CGRect rect = CGRectMake(0, 0, w, h); 48 | 49 | CGContextBeginPath(context); 50 | addRoundedRectToPath(context, rect, radius, radius); 51 | CGContextClosePath(context); 52 | CGContextClip(context); 53 | CGContextDrawImage(context, CGRectMake(0, 0, w, h), img.CGImage); 54 | CGImageRef imageMasked = CGBitmapContextCreateImage(context); 55 | CGContextRelease(context); 56 | CGColorSpaceRelease(colorSpace); 57 | UIImage *image = [UIImage imageWithCGImage:imageMasked]; 58 | CGImageRelease(imageMasked); 59 | return image; 60 | } 61 | 62 | @end 63 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/SDWebImage/UIImage+WebP.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+WebP.m 3 | // SDWebImage 4 | // 5 | // Created by Olivier Poitrey on 07/06/13. 6 | // Copyright (c) 2013 Dailymotion. All rights reserved. 7 | // 8 | 9 | #ifdef SD_WEBP 10 | #import "UIImage+WebP.h" 11 | 12 | #if !COCOAPODS 13 | #import "webp/decode.h" 14 | #else 15 | #import "webp/decode.h" 16 | #endif 17 | 18 | // Callback for CGDataProviderRelease 19 | static void FreeImageData(void *info, const void *data, size_t size) 20 | { 21 | free((void *)data); 22 | } 23 | 24 | @implementation UIImage (WebP) 25 | 26 | + (UIImage *)sd_imageWithWebPData:(NSData *)data { 27 | WebPDecoderConfig config; 28 | if (!WebPInitDecoderConfig(&config)) { 29 | return nil; 30 | } 31 | 32 | if (WebPGetFeatures(data.bytes, data.length, &config.input) != VP8_STATUS_OK) { 33 | return nil; 34 | } 35 | 36 | config.output.colorspace = config.input.has_alpha ? MODE_rgbA : MODE_RGB; 37 | config.options.use_threads = 1; 38 | 39 | // Decode the WebP image data into a RGBA value array. 40 | if (WebPDecode(data.bytes, data.length, &config) != VP8_STATUS_OK) { 41 | return nil; 42 | } 43 | 44 | int width = config.input.width; 45 | int height = config.input.height; 46 | if (config.options.use_scaling) { 47 | width = config.options.scaled_width; 48 | height = config.options.scaled_height; 49 | } 50 | 51 | // Construct a UIImage from the decoded RGBA value array. 52 | CGDataProviderRef provider = 53 | CGDataProviderCreateWithData(NULL, config.output.u.RGBA.rgba, config.output.u.RGBA.size, FreeImageData); 54 | CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB(); 55 | CGBitmapInfo bitmapInfo = config.input.has_alpha ? kCGBitmapByteOrder32Big | kCGImageAlphaPremultipliedLast : 0; 56 | size_t components = config.input.has_alpha ? 4 : 3; 57 | CGColorRenderingIntent renderingIntent = kCGRenderingIntentDefault; 58 | CGImageRef imageRef = CGImageCreate(width, height, 8, components * 8, components * width, colorSpaceRef, bitmapInfo, provider, NULL, NO, renderingIntent); 59 | 60 | CGColorSpaceRelease(colorSpaceRef); 61 | CGDataProviderRelease(provider); 62 | 63 | UIImage *image = [[UIImage alloc] initWithCGImage:imageRef]; 64 | CGImageRelease(imageRef); 65 | 66 | return image; 67 | } 68 | 69 | @end 70 | 71 | #if !COCOAPODS 72 | // Functions to resolve some undefined symbols when using WebP and force_load flag 73 | void WebPInitPremultiplyNEON(void) {} 74 | void WebPInitUpsamplersNEON(void) {} 75 | void VP8DspInitNEON(void) {} 76 | #endif 77 | 78 | #endif 79 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/MJRefresh/MJRefreshConst.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 | #import 4 | #import 5 | 6 | // 弱引用 7 | #define MJWeakSelf __weak typeof(self) weakSelf = self; 8 | 9 | // 日志输出 10 | #ifdef DEBUG 11 | #define MJRefreshLog(...) NSLog(__VA_ARGS__) 12 | #else 13 | #define MJRefreshLog(...) 14 | #endif 15 | 16 | // 过期提醒 17 | #define MJRefreshDeprecated(instead) NS_DEPRECATED(2_0, 2_0, 2_0, 2_0, instead) 18 | 19 | // 运行时objc_msgSend 20 | #define MJRefreshMsgSend(...) ((void (*)(void *, SEL, UIView *))objc_msgSend)(__VA_ARGS__) 21 | #define MJRefreshMsgTarget(target) (__bridge void *)(target) 22 | 23 | // RGB颜色 24 | #define MJRefreshColor(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1.0] 25 | 26 | // 文字颜色 27 | #define MJRefreshLabelTextColor MJRefreshColor(90, 90, 90) 28 | 29 | // 字体大小 30 | #define MJRefreshLabelFont [UIFont boldSystemFontOfSize:14] 31 | 32 | // 图片路径 33 | #define MJRefreshSrcName(file) [@"MJRefresh.bundle" stringByAppendingPathComponent:file] 34 | #define MJRefreshFrameworkSrcName(file) [@"Frameworks/MJRefresh.framework/MJRefresh.bundle" stringByAppendingPathComponent:file] 35 | 36 | // 常量 37 | UIKIT_EXTERN const CGFloat MJRefreshHeaderHeight; 38 | UIKIT_EXTERN const CGFloat MJRefreshFooterHeight; 39 | UIKIT_EXTERN const CGFloat MJRefreshFastAnimationDuration; 40 | UIKIT_EXTERN const CGFloat MJRefreshSlowAnimationDuration; 41 | 42 | UIKIT_EXTERN NSString *const MJRefreshKeyPathContentOffset; 43 | UIKIT_EXTERN NSString *const MJRefreshKeyPathContentSize; 44 | UIKIT_EXTERN NSString *const MJRefreshKeyPathContentInset; 45 | UIKIT_EXTERN NSString *const MJRefreshKeyPathPanState; 46 | 47 | UIKIT_EXTERN NSString *const MJRefreshHeaderLastUpdatedTimeKey; 48 | 49 | UIKIT_EXTERN NSString *const MJRefreshHeaderIdleText; 50 | UIKIT_EXTERN NSString *const MJRefreshHeaderPullingText; 51 | UIKIT_EXTERN NSString *const MJRefreshHeaderRefreshingText; 52 | 53 | UIKIT_EXTERN NSString *const MJRefreshAutoFooterIdleText; 54 | UIKIT_EXTERN NSString *const MJRefreshAutoFooterRefreshingText; 55 | UIKIT_EXTERN NSString *const MJRefreshAutoFooterNoMoreDataText; 56 | 57 | UIKIT_EXTERN NSString *const MJRefreshBackFooterIdleText; 58 | UIKIT_EXTERN NSString *const MJRefreshBackFooterPullingText; 59 | UIKIT_EXTERN NSString *const MJRefreshBackFooterRefreshingText; 60 | UIKIT_EXTERN NSString *const MJRefreshBackFooterNoMoreDataText; 61 | 62 | // 状态检查 63 | #define MJRefreshCheckState \ 64 | MJRefreshState oldState = self.state; \ 65 | if (state == oldState) return; \ 66 | [super setState:state]; 67 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/MJRefresh/UIScrollView+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 | // UIScrollView+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 "UIScrollView+MJExtension.h" 11 | #import 12 | 13 | @implementation UIScrollView (MJExtension) 14 | 15 | - (void)setMj_insetT:(CGFloat)mj_insetT 16 | { 17 | UIEdgeInsets inset = self.contentInset; 18 | inset.top = mj_insetT; 19 | self.contentInset = inset; 20 | } 21 | 22 | - (CGFloat)mj_insetT 23 | { 24 | return self.contentInset.top; 25 | } 26 | 27 | - (void)setMj_insetB:(CGFloat)mj_insetB 28 | { 29 | UIEdgeInsets inset = self.contentInset; 30 | inset.bottom = mj_insetB; 31 | self.contentInset = inset; 32 | } 33 | 34 | - (CGFloat)mj_insetB 35 | { 36 | return self.contentInset.bottom; 37 | } 38 | 39 | - (void)setMj_insetL:(CGFloat)mj_insetL 40 | { 41 | UIEdgeInsets inset = self.contentInset; 42 | inset.left = mj_insetL; 43 | self.contentInset = inset; 44 | } 45 | 46 | - (CGFloat)mj_insetL 47 | { 48 | return self.contentInset.left; 49 | } 50 | 51 | - (void)setMj_insetR:(CGFloat)mj_insetR 52 | { 53 | UIEdgeInsets inset = self.contentInset; 54 | inset.right = mj_insetR; 55 | self.contentInset = inset; 56 | } 57 | 58 | - (CGFloat)mj_insetR 59 | { 60 | return self.contentInset.right; 61 | } 62 | 63 | - (void)setMj_offsetX:(CGFloat)mj_offsetX 64 | { 65 | CGPoint offset = self.contentOffset; 66 | offset.x = mj_offsetX; 67 | self.contentOffset = offset; 68 | } 69 | 70 | - (CGFloat)mj_offsetX 71 | { 72 | return self.contentOffset.x; 73 | } 74 | 75 | - (void)setMj_offsetY:(CGFloat)mj_offsetY 76 | { 77 | CGPoint offset = self.contentOffset; 78 | offset.y = mj_offsetY; 79 | self.contentOffset = offset; 80 | } 81 | 82 | - (CGFloat)mj_offsetY 83 | { 84 | return self.contentOffset.y; 85 | } 86 | 87 | - (void)setMj_contentW:(CGFloat)mj_contentW 88 | { 89 | CGSize size = self.contentSize; 90 | size.width = mj_contentW; 91 | self.contentSize = size; 92 | } 93 | 94 | - (CGFloat)mj_contentW 95 | { 96 | return self.contentSize.width; 97 | } 98 | 99 | - (void)setMj_contentH:(CGFloat)mj_contentH 100 | { 101 | CGSize size = self.contentSize; 102 | size.height = mj_contentH; 103 | self.contentSize = size; 104 | } 105 | 106 | - (CGFloat)mj_contentH 107 | { 108 | return self.contentSize.height; 109 | } 110 | @end 111 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.h: -------------------------------------------------------------------------------- 1 | // UIProgressView+AFNetworking.h 2 | // Copyright (c) 2011–2016 Alamofire Software Foundation (http://alamofire.org/) 3 | // 4 | // Permission is hereby granted, free of charge, to any person obtaining a copy 5 | // of this software and associated documentation files (the "Software"), to deal 6 | // in the Software without restriction, including without limitation the rights 7 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | // copies of the Software, and to permit persons to whom the Software is 9 | // furnished to do so, subject to the following conditions: 10 | // 11 | // The above copyright notice and this permission notice shall be included in 12 | // all copies or substantial portions of the Software. 13 | // 14 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 20 | // THE SOFTWARE. 21 | 22 | #import 23 | 24 | #import 25 | 26 | #if TARGET_OS_IOS || TARGET_OS_TV 27 | 28 | #import 29 | 30 | NS_ASSUME_NONNULL_BEGIN 31 | 32 | 33 | /** 34 | This category adds methods to the UIKit framework's `UIProgressView` class. The methods in this category provide support for binding the progress to the upload and download progress of a session task. 35 | */ 36 | @interface UIProgressView (AFNetworking) 37 | 38 | ///------------------------------------ 39 | /// @name Setting Session Task Progress 40 | ///------------------------------------ 41 | 42 | /** 43 | Binds the progress to the upload progress of the specified session task. 44 | 45 | @param task The session task. 46 | @param animated `YES` if the change should be animated, `NO` if the change should happen immediately. 47 | */ 48 | - (void)setProgressWithUploadProgressOfTask:(NSURLSessionUploadTask *)task 49 | animated:(BOOL)animated; 50 | 51 | /** 52 | Binds the progress to the download progress of the specified session task. 53 | 54 | @param task The session task. 55 | @param animated `YES` if the change should be animated, `NO` if the change should happen immediately. 56 | */ 57 | - (void)setProgressWithDownloadProgressOfTask:(NSURLSessionDownloadTask *)task 58 | animated:(BOOL)animated; 59 | 60 | @end 61 | 62 | NS_ASSUME_NONNULL_END 63 | 64 | #endif 65 | -------------------------------------------------------------------------------- /pinduoduo/Vendor/Masonry/NSArray+MASAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSArray+MASAdditions.h 3 | // 4 | // 5 | // Created by Daniel Hammond on 11/26/13. 6 | // 7 | // 8 | 9 | #import "MASUtilities.h" 10 | #import "MASConstraintMaker.h" 11 | #import "MASViewAttribute.h" 12 | 13 | typedef NS_ENUM(NSUInteger, MASAxisType) { 14 | MASAxisTypeHorizontal, 15 | MASAxisTypeVertical 16 | }; 17 | 18 | @interface NSArray (MASAdditions) 19 | 20 | /** 21 | * Creates a MASConstraintMaker with each view in the callee. 22 | * Any constraints defined are added to the view or the appropriate superview once the block has finished executing on each view 23 | * 24 | * @param block scope within which you can build up the constraints which you wish to apply to each view. 25 | * 26 | * @return Array of created MASConstraints 27 | */ 28 | - (NSArray *)mas_makeConstraints:(void (^)(MASConstraintMaker *make))block; 29 | 30 | /** 31 | * Creates a MASConstraintMaker with each view in the callee. 32 | * Any constraints defined are added to each view or the appropriate superview once the block has finished executing on each view. 33 | * If an existing constraint exists then it will be updated instead. 34 | * 35 | * @param block scope within which you can build up the constraints which you wish to apply to each view. 36 | * 37 | * @return Array of created/updated MASConstraints 38 | */ 39 | - (NSArray *)mas_updateConstraints:(void (^)(MASConstraintMaker *make))block; 40 | 41 | /** 42 | * Creates a MASConstraintMaker with each view in the callee. 43 | * Any constraints defined are added to each view or the appropriate superview once the block has finished executing on each view. 44 | * All constraints previously installed for the views will be removed. 45 | * 46 | * @param block scope within which you can build up the constraints which you wish to apply to each view. 47 | * 48 | * @return Array of created/updated MASConstraints 49 | */ 50 | - (NSArray *)mas_remakeConstraints:(void (^)(MASConstraintMaker *make))block; 51 | 52 | /** 53 | * distribute with fixed spacing 54 | * 55 | * @param axisType which axis to distribute items along 56 | * @param fixedSpacing the spacing between each item 57 | * @param leadSpacing the spacing before the first item and the container 58 | * @param tailSpacing the spacing after the last item and the container 59 | */ 60 | - (void)mas_distributeViewsAlongAxis:(MASAxisType)axisType withFixedSpacing:(CGFloat)fixedSpacing leadSpacing:(CGFloat)leadSpacing tailSpacing:(CGFloat)tailSpacing; 61 | 62 | /** 63 | * distribute with fixed item size 64 | * 65 | * @param axisType which axis to distribute items along 66 | * @param fixedItemLength the fixed length of each item 67 | * @param leadSpacing the spacing before the first item and the container 68 | * @param tailSpacing the spacing after the last item and the container 69 | */ 70 | - (void)mas_distributeViewsAlongAxis:(MASAxisType)axisType withFixedItemLength:(CGFloat)fixedItemLength leadSpacing:(CGFloat)leadSpacing tailSpacing:(CGFloat)tailSpacing; 71 | 72 | @end 73 | -------------------------------------------------------------------------------- /pinduoduo/Expand/Category/UIView/UIView+Convenience.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+Convenience.m 3 | // 4 | // Created by Molon on 13/11/12. 5 | // Copyright (c) 2013 Molon. All rights reserved. 6 | // 7 | 8 | #import "UIView+convenience.h" 9 | #import 10 | 11 | @implementation UIView (Convenience) 12 | 13 | - (BOOL)containsSubView:(UIView *)subView 14 | { 15 | for (UIView *view in [self subviews]) { 16 | if ([view isEqual:subView]) { 17 | return YES; 18 | } 19 | } 20 | return NO; 21 | } 22 | 23 | - (BOOL)containsSubViewOfClassType:(Class)class { 24 | for (UIView *view in [self subviews]) { 25 | if ([view isMemberOfClass:class]) { 26 | return YES; 27 | } 28 | } 29 | return NO; 30 | } 31 | 32 | - (void)removeAllSubViews { 33 | for (UIView *view in [self subviews]) { 34 | [view removeFromSuperview]; 35 | } 36 | } 37 | 38 | - (CGPoint)frameOrigin { 39 | return self.frame.origin; 40 | } 41 | 42 | - (void)setFrameOrigin:(CGPoint)newOrigin { 43 | self.frame = CGRectMake(newOrigin.x, newOrigin.y, self.frame.size.width, self.frame.size.height); 44 | } 45 | 46 | - (CGSize)frameSize { 47 | return self.frame.size; 48 | } 49 | 50 | - (void)setFrameSize:(CGSize)newSize { 51 | self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, 52 | newSize.width, newSize.height); 53 | } 54 | 55 | - (CGFloat)frameX { 56 | return self.frame.origin.x; 57 | } 58 | 59 | - (void)setFrameX:(CGFloat)newX { 60 | self.frame = CGRectMake(newX, self.frame.origin.y, 61 | self.frame.size.width, self.frame.size.height); 62 | } 63 | 64 | - (CGFloat)frameY { 65 | return self.frame.origin.y; 66 | } 67 | 68 | - (void)setFrameY:(CGFloat)newY { 69 | self.frame = CGRectMake(self.frame.origin.x, newY, 70 | self.frame.size.width, self.frame.size.height); 71 | } 72 | 73 | - (CGFloat)frameRight { 74 | return self.frame.origin.x + self.frame.size.width; 75 | } 76 | 77 | - (void)setFrameRight:(CGFloat)newRight { 78 | self.frame = CGRectMake(newRight - self.frame.size.width, self.frame.origin.y, 79 | self.frame.size.width, self.frame.size.height); 80 | } 81 | 82 | - (CGFloat)frameBottom { 83 | return self.frame.origin.y + self.frame.size.height; 84 | } 85 | 86 | - (void)setFrameBottom:(CGFloat)newBottom { 87 | self.frame = CGRectMake(self.frame.origin.x, newBottom - self.frame.size.height, 88 | self.frame.size.width, self.frame.size.height); 89 | } 90 | 91 | - (CGFloat)frameWidth { 92 | return self.frame.size.width; 93 | } 94 | 95 | - (void)setFrameWidth:(CGFloat)newWidth { 96 | self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, 97 | newWidth, self.frame.size.height); 98 | } 99 | 100 | - (CGFloat)frameHeight { 101 | return self.frame.size.height; 102 | } 103 | 104 | - (void)setFrameHeight:(CGFloat)newHeight { 105 | self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, 106 | self.frame.size.width, newHeight); 107 | } 108 | 109 | @end 110 | --------------------------------------------------------------------------------