├── 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 |
--------------------------------------------------------------------------------