Showing preview only (2,400K chars total). Download the full file or copy to clipboard to get everything.
Repository: chikang/CKMeiTuanShopView
Branch: master
Commit: ca72ab1e6f73
Files: 543
Total size: 2.1 MB
Directory structure:
gitextract_42nycll3/
├── .gitignore
├── CKMeiTuanShopView/
│ ├── CKMeiTuanShopView/
│ │ ├── AppDelegate/
│ │ │ ├── AppDelegate.h
│ │ │ └── AppDelegate.m
│ │ ├── Category/
│ │ │ ├── NSDate+Utilities.h
│ │ │ ├── NSDate+Utilities.m
│ │ │ ├── NSString+Extension.h
│ │ │ ├── NSString+Extension.m
│ │ │ ├── UIImage+BlurImage.h
│ │ │ ├── UIImage+BlurImage.m
│ │ │ ├── UILabel+ChangeLineSpaceAndWordSpace.h
│ │ │ ├── UILabel+ChangeLineSpaceAndWordSpace.m
│ │ │ ├── UILabel+Extensions.h
│ │ │ ├── UILabel+Extensions.m
│ │ │ ├── UIView+Extension.h
│ │ │ ├── UIView+Extension.m
│ │ │ ├── UIView+Helper.h
│ │ │ └── UIView+Helper.m
│ │ ├── Cell/
│ │ │ ├── ReserveEvluateCell.h
│ │ │ ├── ReserveEvluateCell.m
│ │ │ ├── TakeawayProductCardCell.h
│ │ │ ├── TakeawayProductCardCell.m
│ │ │ ├── TakeawayProductCollectionCell.h
│ │ │ ├── TakeawayProductCollectionCell.m
│ │ │ ├── TakeawayProductListCell.h
│ │ │ └── TakeawayProductListCell.m
│ │ ├── Define/
│ │ │ ├── ColorMacro.h
│ │ │ ├── CommonMacro.h
│ │ │ └── ParmMacro.h
│ │ ├── Info.plist
│ │ ├── Model/
│ │ │ ├── EvaluateModel.h
│ │ │ ├── EvaluateModel.m
│ │ │ ├── NewShopListModel.h
│ │ │ ├── NewShopListModel.m
│ │ │ ├── NewShopModel.h
│ │ │ ├── NewShopModel.m
│ │ │ ├── ShoppingCartOrderListInfo.h
│ │ │ └── ShoppingCartOrderListInfo.m
│ │ ├── Supporting Flies/
│ │ │ ├── Assets.xcassets/
│ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Contents.json
│ │ │ │ ├── NewShopProduct/
│ │ │ │ │ ├── Already collected.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── back_grey.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── back_white.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── bg-shadow.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── collect_grey.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── collect_white.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── coupons.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-Packup.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-Slidingback.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-coupons.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-delete.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-discounts.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-enterprise.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-folding.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-merchants.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-messagecenter.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-new.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-reference.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-sale.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-search box.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-selling.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-sentiment.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-shoppingcart.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── message_grey.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── message_white.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── more_grey.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── more_white.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── shadow.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── sousuo_white.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── yilingqu.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── ServiceReservation/
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── but-shut.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── checkbox_checked2.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-addition.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-address-gray.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-address.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-appraise.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-card.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-certification.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-click-shaixuan.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-click-up.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-click.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-collect-red.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-collect-white.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-collect.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-confirm.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-contact.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-dianpu.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-dingwei.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-footprint.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-free.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-idcard.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-localize-white.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-localize.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-no service.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-particulars.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-pay.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-prompting.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-quantity.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-refund.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-refunds.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-scoring.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-search-gray.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-search-white.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-sequencing.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-service.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-shang.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-sharing.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-shop.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-shoucang.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-shut down.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-smile.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-state.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-subtraction.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-succeed.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-tab-black.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-tab-dwon.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-tab-up.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-tab-white.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-telephone.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-time-gray.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-tips.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-unckeck.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-wait.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon-yuyue.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon_ arrow_down_black.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon_infoIocation.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon_infosearch.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon_location_ash.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon_return_black.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon_round.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon_wepay2.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── locate.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ └── Takeaway/
│ │ │ │ ├── Contents.json
│ │ │ │ ├── ShopTagIcon/
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── but_close.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon_brd.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon_dwon_triangle.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon_new.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon_sale.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon_unfold_gary.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon_unfold_white.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon_up_gray.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── lab_bg_red.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── lab_close_yellow.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── lab_company.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── lab_con_green.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── lab_dit_yellow.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── lab_invite.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── lab_like.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── lab_np.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── lab_personal.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── lab_red.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── lab_ren_cyan.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── lab_rest.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── lab_sale_red.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── lab_sie.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg_coupon_red.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg_coupon_yellow.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg_coupons.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── but_add_gary.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── but_add_yellow.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── but_click.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── but_del.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── but_edit_14.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── but_hay_white.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── but_hay_yel.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── but_reduce.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── but_reduce_gary.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── but_return_bg.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── but_uhy_white.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── but_unh_gary.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon-announcement.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon_back_white.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon_chili.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon_cop_click.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon_next_black.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon_state.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon_takeout.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── placeholdImg/
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── img_135.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── img_280.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── img_30.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── img_30_yj.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── img_375.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── img_50.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── img_60.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── img_80.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── img_82.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── img_86.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── star/
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── icon_str_gar_10.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon_str_gary_20.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon_str_gary_25.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon_str_yel_10.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── icon_str_yel_20.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── icon_str_yel_25.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ └── takeawayIcon/
│ │ │ │ ├── Contents.json
│ │ │ │ ├── addProduct_icon.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── but_bad_gary.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── but_camera.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── but_cot_gary.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── but_del_bg.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── but_god_yel.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── but_phe.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── but_sc_gary.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── but_sc_white.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── but_spn_yellow.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon_ad.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon_ads.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon_ant.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon_bad_gary.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon_brd_big.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon_chili.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon_dit.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon_dit_white.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon_good_gary.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon_head.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon_idcard.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon_info_gray.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon_info_yel.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon_loc_gary.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon_location.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon_location_gary.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon_ml_gary.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon_next_up.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon_ref_yel.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon_score.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon_sel_yellow.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon_smi_yel.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon_state.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon_store_takeaway.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon_tel.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon_time.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon_time_yel.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── icon_up_black.imageset/
│ │ │ │ │ └── Contents.json
│ │ │ │ └── lab_new_big.imageset/
│ │ │ │ └── Contents.json
│ │ │ ├── Base.lproj/
│ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ └── Main.storyboard
│ │ │ ├── CKPrefixHeader.pch
│ │ │ ├── main.m
│ │ │ ├── pizza.json
│ │ │ └── shop.json
│ │ ├── TakeawayShopView/
│ │ │ ├── HeaderReusableView.h
│ │ │ ├── HeaderReusableView.m
│ │ │ ├── JHHeaderFlowLayout.h
│ │ │ ├── JHHeaderFlowLayout.m
│ │ │ ├── LJDynamicItem.h
│ │ │ ├── LJDynamicItem.m
│ │ │ ├── ShopEvaluateView.h
│ │ │ ├── ShopEvaluateView.m
│ │ │ ├── ShopHomePageView.h
│ │ │ ├── ShopHomePageView.m
│ │ │ ├── ShopMerchantView.h
│ │ │ ├── ShopMerchantView.m
│ │ │ ├── ShopScrollView.h
│ │ │ ├── ShopScrollView.m
│ │ │ ├── TakeawayShopMainVC.h
│ │ │ ├── TakeawayShopMainVC.m
│ │ │ ├── TakeawayShopView.h
│ │ │ └── TakeawayShopView.m
│ │ ├── ThridParty/
│ │ │ ├── FXBlurView/
│ │ │ │ ├── FXBlurView.h
│ │ │ │ └── FXBlurView.m
│ │ │ ├── SDPhotoBrowser/
│ │ │ │ ├── SDBrowserImageView.h
│ │ │ │ ├── SDBrowserImageView.m
│ │ │ │ ├── SDPhotoBrowser.h
│ │ │ │ ├── SDPhotoBrowser.m
│ │ │ │ ├── SDPhotoBrowserConfig.h
│ │ │ │ ├── SDWaitingView.h
│ │ │ │ └── SDWaitingView.m
│ │ │ └── YBPopupMenu/
│ │ │ ├── CustomTestCell.h
│ │ │ ├── CustomTestCell.m
│ │ │ ├── CustomTestCell.xib
│ │ │ ├── YBPopupMenu.h
│ │ │ ├── YBPopupMenu.m
│ │ │ ├── YBPopupMenuPath.h
│ │ │ ├── YBPopupMenuPath.m
│ │ │ ├── YBRectConst.h
│ │ │ └── YBRectConst.m
│ │ └── Utils/
│ │ ├── AppDefaultUtil.h
│ │ ├── AppDefaultUtil.m
│ │ ├── AppMethods.h
│ │ ├── AppMethods.m
│ │ ├── ToolManager.h
│ │ ├── ToolManager.m
│ │ ├── UITool.h
│ │ └── UITool.m
│ ├── CKMeiTuanShopView.xcodeproj/
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace/
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata/
│ │ └── IDEWorkspaceChecks.plist
│ ├── CKMeiTuanShopView.xcworkspace/
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata/
│ │ └── IDEWorkspaceChecks.plist
│ ├── CKMeiTuanShopViewTests/
│ │ ├── CKMeiTuanShopViewTests.m
│ │ └── Info.plist
│ ├── CKMeiTuanShopViewUITests/
│ │ ├── CKMeiTuanShopViewUITests.m
│ │ └── Info.plist
│ ├── Podfile
│ └── Pods/
│ ├── AFNetworking/
│ │ ├── AFNetworking/
│ │ │ ├── AFCompatibilityMacros.h
│ │ │ ├── AFHTTPSessionManager.h
│ │ │ ├── AFHTTPSessionManager.m
│ │ │ ├── AFNetworkReachabilityManager.h
│ │ │ ├── AFNetworkReachabilityManager.m
│ │ │ ├── AFNetworking.h
│ │ │ ├── AFSecurityPolicy.h
│ │ │ ├── AFSecurityPolicy.m
│ │ │ ├── AFURLRequestSerialization.h
│ │ │ ├── AFURLRequestSerialization.m
│ │ │ ├── AFURLResponseSerialization.h
│ │ │ ├── AFURLResponseSerialization.m
│ │ │ ├── AFURLSessionManager.h
│ │ │ └── AFURLSessionManager.m
│ │ ├── LICENSE
│ │ ├── README.md
│ │ └── UIKit+AFNetworking/
│ │ ├── AFAutoPurgingImageCache.h
│ │ ├── AFAutoPurgingImageCache.m
│ │ ├── AFImageDownloader.h
│ │ ├── AFImageDownloader.m
│ │ ├── AFNetworkActivityIndicatorManager.h
│ │ ├── AFNetworkActivityIndicatorManager.m
│ │ ├── UIActivityIndicatorView+AFNetworking.h
│ │ ├── UIActivityIndicatorView+AFNetworking.m
│ │ ├── UIButton+AFNetworking.h
│ │ ├── UIButton+AFNetworking.m
│ │ ├── UIImage+AFNetworking.h
│ │ ├── UIImageView+AFNetworking.h
│ │ ├── UIImageView+AFNetworking.m
│ │ ├── UIKit+AFNetworking.h
│ │ ├── UIProgressView+AFNetworking.h
│ │ ├── UIProgressView+AFNetworking.m
│ │ ├── UIRefreshControl+AFNetworking.h
│ │ ├── UIRefreshControl+AFNetworking.m
│ │ ├── UIWebView+AFNetworking.h
│ │ └── UIWebView+AFNetworking.m
│ ├── IQKeyboardManager/
│ │ ├── IQKeyboardManager/
│ │ │ ├── Categories/
│ │ │ │ ├── IQNSArray+Sort.h
│ │ │ │ ├── IQNSArray+Sort.m
│ │ │ │ ├── IQUIScrollView+Additions.h
│ │ │ │ ├── IQUIScrollView+Additions.m
│ │ │ │ ├── IQUITextFieldView+Additions.h
│ │ │ │ ├── IQUITextFieldView+Additions.m
│ │ │ │ ├── IQUIView+Hierarchy.h
│ │ │ │ ├── IQUIView+Hierarchy.m
│ │ │ │ ├── IQUIViewController+Additions.h
│ │ │ │ └── IQUIViewController+Additions.m
│ │ │ ├── Constants/
│ │ │ │ ├── IQKeyboardManagerConstants.h
│ │ │ │ └── IQKeyboardManagerConstantsInternal.h
│ │ │ ├── IQKeyboardManager.h
│ │ │ ├── IQKeyboardManager.m
│ │ │ ├── IQKeyboardReturnKeyHandler.h
│ │ │ ├── IQKeyboardReturnKeyHandler.m
│ │ │ ├── IQTextView/
│ │ │ │ ├── IQTextView.h
│ │ │ │ └── IQTextView.m
│ │ │ └── IQToolbar/
│ │ │ ├── IQBarButtonItem.h
│ │ │ ├── IQBarButtonItem.m
│ │ │ ├── IQPreviousNextView.h
│ │ │ ├── IQPreviousNextView.m
│ │ │ ├── IQTitleBarButtonItem.h
│ │ │ ├── IQTitleBarButtonItem.m
│ │ │ ├── IQToolbar.h
│ │ │ ├── IQToolbar.m
│ │ │ ├── IQUIView+IQKeyboardToolbar.h
│ │ │ └── IQUIView+IQKeyboardToolbar.m
│ │ ├── LICENSE.md
│ │ └── README.md
│ ├── JSONModel/
│ │ ├── JSONModel/
│ │ │ ├── JSONModel/
│ │ │ │ ├── JSONModel.h
│ │ │ │ ├── JSONModel.m
│ │ │ │ ├── JSONModelClassProperty.h
│ │ │ │ ├── JSONModelClassProperty.m
│ │ │ │ ├── JSONModelError.h
│ │ │ │ └── JSONModelError.m
│ │ │ ├── JSONModelLib.h
│ │ │ ├── JSONModelNetworking/
│ │ │ │ ├── JSONAPI.h
│ │ │ │ ├── JSONAPI.m
│ │ │ │ ├── JSONHTTPClient.h
│ │ │ │ ├── JSONHTTPClient.m
│ │ │ │ ├── JSONModel+networking.h
│ │ │ │ └── JSONModel+networking.m
│ │ │ └── JSONModelTransformations/
│ │ │ ├── JSONKeyMapper.h
│ │ │ ├── JSONKeyMapper.m
│ │ │ ├── JSONValueTransformer.h
│ │ │ └── JSONValueTransformer.m
│ │ ├── LICENSE
│ │ └── README.md
│ ├── MBProgressHUD/
│ │ ├── LICENSE
│ │ ├── MBProgressHUD.h
│ │ ├── MBProgressHUD.m
│ │ └── README.mdown
│ ├── MJRefresh/
│ │ ├── LICENSE
│ │ ├── MJRefresh/
│ │ │ ├── Base/
│ │ │ │ ├── MJRefreshAutoFooter.h
│ │ │ │ ├── MJRefreshAutoFooter.m
│ │ │ │ ├── MJRefreshBackFooter.h
│ │ │ │ ├── MJRefreshBackFooter.m
│ │ │ │ ├── MJRefreshComponent.h
│ │ │ │ ├── MJRefreshComponent.m
│ │ │ │ ├── MJRefreshFooter.h
│ │ │ │ ├── MJRefreshFooter.m
│ │ │ │ ├── MJRefreshHeader.h
│ │ │ │ └── MJRefreshHeader.m
│ │ │ ├── Custom/
│ │ │ │ ├── Footer/
│ │ │ │ │ ├── Auto/
│ │ │ │ │ │ ├── MJRefreshAutoGifFooter.h
│ │ │ │ │ │ ├── MJRefreshAutoGifFooter.m
│ │ │ │ │ │ ├── MJRefreshAutoNormalFooter.h
│ │ │ │ │ │ ├── MJRefreshAutoNormalFooter.m
│ │ │ │ │ │ ├── MJRefreshAutoStateFooter.h
│ │ │ │ │ │ └── MJRefreshAutoStateFooter.m
│ │ │ │ │ └── Back/
│ │ │ │ │ ├── MJRefreshBackGifFooter.h
│ │ │ │ │ ├── MJRefreshBackGifFooter.m
│ │ │ │ │ ├── MJRefreshBackNormalFooter.h
│ │ │ │ │ ├── MJRefreshBackNormalFooter.m
│ │ │ │ │ ├── MJRefreshBackStateFooter.h
│ │ │ │ │ └── MJRefreshBackStateFooter.m
│ │ │ │ └── Header/
│ │ │ │ ├── MJRefreshGifHeader.h
│ │ │ │ ├── MJRefreshGifHeader.m
│ │ │ │ ├── MJRefreshNormalHeader.h
│ │ │ │ ├── MJRefreshNormalHeader.m
│ │ │ │ ├── MJRefreshStateHeader.h
│ │ │ │ └── MJRefreshStateHeader.m
│ │ │ ├── MJRefresh.bundle/
│ │ │ │ ├── en.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── zh-Hans.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ └── zh-Hant.lproj/
│ │ │ │ └── Localizable.strings
│ │ │ ├── MJRefresh.h
│ │ │ ├── MJRefreshConst.h
│ │ │ ├── MJRefreshConst.m
│ │ │ ├── NSBundle+MJRefresh.h
│ │ │ ├── NSBundle+MJRefresh.m
│ │ │ ├── UIScrollView+MJExtension.h
│ │ │ ├── UIScrollView+MJExtension.m
│ │ │ ├── UIScrollView+MJRefresh.h
│ │ │ ├── UIScrollView+MJRefresh.m
│ │ │ ├── UIView+MJExtension.h
│ │ │ └── UIView+MJExtension.m
│ │ └── README.md
│ ├── Masonry/
│ │ ├── LICENSE
│ │ ├── Masonry/
│ │ │ ├── MASCompositeConstraint.h
│ │ │ ├── MASCompositeConstraint.m
│ │ │ ├── MASConstraint+Private.h
│ │ │ ├── MASConstraint.h
│ │ │ ├── MASConstraint.m
│ │ │ ├── MASConstraintMaker.h
│ │ │ ├── MASConstraintMaker.m
│ │ │ ├── MASLayoutConstraint.h
│ │ │ ├── MASLayoutConstraint.m
│ │ │ ├── MASUtilities.h
│ │ │ ├── MASViewAttribute.h
│ │ │ ├── MASViewAttribute.m
│ │ │ ├── MASViewConstraint.h
│ │ │ ├── MASViewConstraint.m
│ │ │ ├── Masonry.h
│ │ │ ├── NSArray+MASAdditions.h
│ │ │ ├── NSArray+MASAdditions.m
│ │ │ ├── NSArray+MASShorthandAdditions.h
│ │ │ ├── NSLayoutConstraint+MASDebugAdditions.h
│ │ │ ├── NSLayoutConstraint+MASDebugAdditions.m
│ │ │ ├── View+MASAdditions.h
│ │ │ ├── View+MASAdditions.m
│ │ │ ├── View+MASShorthandAdditions.h
│ │ │ ├── ViewController+MASAdditions.h
│ │ │ └── ViewController+MASAdditions.m
│ │ └── README.md
│ ├── Pods.xcodeproj/
│ │ └── project.pbxproj
│ ├── SDWebImage/
│ │ ├── LICENSE
│ │ ├── README.md
│ │ └── SDWebImage/
│ │ ├── NSButton+WebCache.h
│ │ ├── NSButton+WebCache.m
│ │ ├── NSData+ImageContentType.h
│ │ ├── NSData+ImageContentType.m
│ │ ├── NSImage+WebCache.h
│ │ ├── NSImage+WebCache.m
│ │ ├── SDAnimatedImageRep.h
│ │ ├── SDAnimatedImageRep.m
│ │ ├── SDImageCache.h
│ │ ├── SDImageCache.m
│ │ ├── SDImageCacheConfig.h
│ │ ├── SDImageCacheConfig.m
│ │ ├── SDWebImageCoder.h
│ │ ├── SDWebImageCoder.m
│ │ ├── SDWebImageCoderHelper.h
│ │ ├── SDWebImageCoderHelper.m
│ │ ├── SDWebImageCodersManager.h
│ │ ├── SDWebImageCodersManager.m
│ │ ├── SDWebImageCompat.h
│ │ ├── SDWebImageCompat.m
│ │ ├── SDWebImageDownloader.h
│ │ ├── SDWebImageDownloader.m
│ │ ├── SDWebImageDownloaderOperation.h
│ │ ├── SDWebImageDownloaderOperation.m
│ │ ├── SDWebImageFrame.h
│ │ ├── SDWebImageFrame.m
│ │ ├── SDWebImageGIFCoder.h
│ │ ├── SDWebImageGIFCoder.m
│ │ ├── SDWebImageImageIOCoder.h
│ │ ├── SDWebImageImageIOCoder.m
│ │ ├── SDWebImageManager.h
│ │ ├── SDWebImageManager.m
│ │ ├── SDWebImageOperation.h
│ │ ├── SDWebImagePrefetcher.h
│ │ ├── SDWebImagePrefetcher.m
│ │ ├── SDWebImageTransition.h
│ │ ├── SDWebImageTransition.m
│ │ ├── UIButton+WebCache.h
│ │ ├── UIButton+WebCache.m
│ │ ├── UIImage+ForceDecode.h
│ │ ├── UIImage+ForceDecode.m
│ │ ├── UIImage+GIF.h
│ │ ├── UIImage+GIF.m
│ │ ├── UIImage+MultiFormat.h
│ │ ├── UIImage+MultiFormat.m
│ │ ├── UIImageView+HighlightedWebCache.h
│ │ ├── UIImageView+HighlightedWebCache.m
│ │ ├── UIImageView+WebCache.h
│ │ ├── UIImageView+WebCache.m
│ │ ├── UIView+WebCache.h
│ │ ├── UIView+WebCache.m
│ │ ├── UIView+WebCacheOperation.h
│ │ └── UIView+WebCacheOperation.m
│ └── Target Support Files/
│ ├── AFNetworking/
│ │ ├── AFNetworking-dummy.m
│ │ ├── AFNetworking-prefix.pch
│ │ └── AFNetworking.xcconfig
│ ├── IQKeyboardManager/
│ │ ├── IQKeyboardManager-dummy.m
│ │ ├── IQKeyboardManager-prefix.pch
│ │ └── IQKeyboardManager.xcconfig
│ ├── JSONModel/
│ │ ├── JSONModel-dummy.m
│ │ ├── JSONModel-prefix.pch
│ │ └── JSONModel.xcconfig
│ ├── MBProgressHUD/
│ │ ├── MBProgressHUD-dummy.m
│ │ ├── MBProgressHUD-prefix.pch
│ │ └── MBProgressHUD.xcconfig
│ ├── MJRefresh/
│ │ ├── MJRefresh-dummy.m
│ │ ├── MJRefresh-prefix.pch
│ │ └── MJRefresh.xcconfig
│ ├── Masonry/
│ │ ├── Masonry-dummy.m
│ │ ├── Masonry-prefix.pch
│ │ └── Masonry.xcconfig
│ ├── Pods-CKMeiTuanShopView/
│ │ ├── Pods-CKMeiTuanShopView-acknowledgements.markdown
│ │ ├── Pods-CKMeiTuanShopView-acknowledgements.plist
│ │ ├── Pods-CKMeiTuanShopView-dummy.m
│ │ ├── Pods-CKMeiTuanShopView-frameworks.sh
│ │ ├── Pods-CKMeiTuanShopView-resources.sh
│ │ ├── Pods-CKMeiTuanShopView.debug.xcconfig
│ │ └── Pods-CKMeiTuanShopView.release.xcconfig
│ └── SDWebImage/
│ ├── SDWebImage-dummy.m
│ ├── SDWebImage-prefix.pch
│ └── SDWebImage.xcconfig
├── LICENSE
└── README.md
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
# Xcode
#
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
## Build generated
build/
DerivedData/
## Various settings
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata/
## Other
*.moved-aside
*.xccheckout
*.xcscmblueprint
## Obj-C/Swift specific
*.hmap
*.ipa
*.dSYM.zip
*.dSYM
# CocoaPods
#
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
#
# Pods/
# Carthage
#
# Add this line if you want to avoid checking in source code from Carthage dependencies.
# Carthage/Checkouts
Carthage/Build
# fastlane
#
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
# screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://docs.fastlane.tools/best-practices/source-control/#source-control
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots/**/*.png
fastlane/test_output
# Code Injection
#
# After new code Injection tools there's a generated folder /iOSInjectionProject
# https://github.com/johnno1962/injectionforxcode
iOSInjectionProject/
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/AppDelegate/AppDelegate.h
================================================
//
// AppDelegate.h
// CKMeiTuanShopView
//
// Created by 池康 on 2018/7/31.
// Copyright © 2018年 CK. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@end
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/AppDelegate/AppDelegate.m
================================================
//
// AppDelegate.m
// CKMeiTuanShopView
//
// Created by 池康 on 2018/7/31.
// Copyright © 2018年 CK. All rights reserved.
//
#import "AppDelegate.h"
#import "TakeawayShopMainVC.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.backgroundColor = [UIColor whiteColor];
TakeawayShopMainVC *takeawayVC = [[TakeawayShopMainVC alloc]init];
self.window.rootViewController = takeawayVC;
return YES;
}
- (void)applicationWillResignActive:(UIApplication *)application {
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
}
- (void)applicationDidEnterBackground:(UIApplication *)application {
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
// Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}
- (void)applicationWillTerminate:(UIApplication *)application {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}
@end
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Category/NSDate+Utilities.h
================================================
#import <Foundation/Foundation.h>
#define D_MINUTE 60
#define D_HOUR 3600
#define D_DAY 86400
#define D_WEEK 604800
#define D_YEAR 31556926
#define kNSDateUtilitiesFormatFullDateWithTime @"MMM d, yyyy h:mm a"
#define kNSDateUtilitiesFormatFullDate @"MMM d, yyyy"
#define kNSDateUtilitiesFormatShortDateWithTime @"MMM d h:mm a"
#define kNSDateUtilitiesFormatShortDate @"MMM d"
#define kNSDateUtilitiesFormatWeekday @"EEEE"
#define kNSDateUtilitiesFormatWeekdayWithTime @"EEEE h:mm a"
#define kNSDateUtilitiesFormatTime @"HH:mm"
#define kNSDateUtilitiesFormatTimeWithPrefix @"'at' h:mm a"
#define kNSDateUtilitiesFormatSQLDate @"yyyy-MM-dd"
#define kNSDateUtilitiesFormatSQLTime @"HH:mm:ss"
#define kNSDateUtilitiesFormatSQLDateWithTime @"yyyy-MM-dd HH:mm:ss"
@interface NSDate (Utilities)
+ (NSCalendar *) currentCalendar; // avoid bottlenecks
/** 相对于现在,明天的日期 */
+ (NSDate *) dateTomorrow;
/** 获取今天的日期 yyyy-MM-dd **/
+ (NSString *) dateTodayString;
/** 获取明天的日期 yyyy-MM-dd **/
+ (NSString *) dateTomorrowString;
/***获取今天的日期,日期格式*/
+ (NSString *) dateTodayStringWithFormatter:(NSString *)formatterString;
/** 获取明天的日期 日期格式 **/
+ (NSString *) dateTomorrowString:(NSString *)formatterString;
/** 相对于现在,昨天的日期 */
+ (NSDate *) dateYesterday;
/** 相对于现在 days 天后的日期 */
+ (NSDate *) dateWithDaysFromNow: (NSInteger) days;
/** 相对于现在 days 天前的日期 */
+ (NSDate *) dateWithDaysBeforeNow: (NSInteger) days;
/** 相对于现在 dHours 小时后的日期 */
+ (NSDate *) dateWithHoursFromNow: (NSInteger) dHours;
/** 相对于现在 dHours 小时前的日期 */
+ (NSDate *) dateWithHoursBeforeNow: (NSInteger) dHours;
/** 相对于现在 dMinutes 分钟后的日期 */
+ (NSDate *) dateWithMinutesFromNow: (NSInteger) dMinutes;
/** 相对于现在 dMinutes 分钟前的日期 */
+ (NSDate *) dateWithMinutesBeforeNow: (NSInteger) dMinutes;
/** 获取两个日期之间的时间差(天) **/
+ (NSInteger) getDayBetweenWithDateOne:(NSDate *) dateOne withdateTwo: (NSDate *) dateTwo;
/** 忽略时间对日期比较 */
- (BOOL) isEqualToDateIgnoringTime: (NSDate *) aDate;
// Short string utilities
- (NSString *) stringWithDateStyle: (NSDateFormatterStyle) dateStyle timeStyle: (NSDateFormatterStyle) timeStyle;
//日期格式转换
- (NSString *) stringWithFormat: (NSString *) format;
@property (nonatomic, readonly) NSString *shortString;
@property (nonatomic, readonly) NSString *shortDateString;
@property (nonatomic, readonly) NSString *shortTimeString;
@property (nonatomic, readonly) NSString *mediumString;
@property (nonatomic, readonly) NSString *mediumDateString;
@property (nonatomic, readonly) NSString *mediumTimeString;
@property (nonatomic, readonly) NSString *longString;
@property (nonatomic, readonly) NSString *longDateString;
@property (nonatomic, readonly) NSString *longTimeString;
- (BOOL) isToday;
- (BOOL) isTomorrow;
- (BOOL) isYesterday;
- (BOOL) isSameWeekAsDate: (NSDate *) aDate;
- (BOOL) isThisWeek;
- (BOOL) isNextWeek;
- (BOOL) isLastWeek;
- (BOOL) isSameMonthAsDate: (NSDate *) aDate;
- (BOOL) isThisMonth;
- (BOOL) isNextMonth;
- (BOOL) isLastMonth;
- (BOOL) isSameYearAsDate: (NSDate *) aDate;
- (BOOL) isThisYear;
- (BOOL) isNextYear;
- (BOOL) isLastYear;
- (BOOL) isEarlierThanDate: (NSDate *) aDate;
- (BOOL) isLaterThanDate: (NSDate *) aDate;
- (BOOL) isInFuture;
- (BOOL) isInPast;
// Date roles
- (BOOL) isTypicallyWorkday;
- (BOOL) isTypicallyWeekend;
// Adjusting dates
- (NSDate *) dateByAddingYears: (NSInteger) dYears;
- (NSDate *) dateBySubtractingYears: (NSInteger) dYears;
- (NSDate *) dateByAddingMonths: (NSInteger) dMonths;
- (NSDate *) dateBySubtractingMonths: (NSInteger) dMonths;
- (NSDate *) dateByAddingDays: (NSInteger) dDays;
- (NSDate *) dateBySubtractingDays: (NSInteger) dDays;
- (NSDate *) dateByAddingHours: (NSInteger) dHours;
- (NSDate *) dateBySubtractingHours: (NSInteger) dHours;
- (NSDate *) dateByAddingMinutes: (NSInteger) dMinutes;
- (NSDate *) dateBySubtractingMinutes: (NSInteger) dMinutes;
// Date extremes
- (NSDate *) dateAtStartOfDay;
- (NSDate *) dateAtEndOfDay;
// Retrieving intervals
- (NSInteger) minutesAfterDate: (NSDate *) aDate;
- (NSInteger) minutesBeforeDate: (NSDate *) aDate;
- (NSInteger) hoursAfterDate: (NSDate *) aDate;
- (NSInteger) hoursBeforeDate: (NSDate *) aDate;
- (NSInteger) daysAfterDate: (NSDate *) aDate;
- (NSInteger) daysBeforeDate: (NSDate *) aDate;
- (NSInteger)distanceInDaysToDate:(NSDate *)anotherDate;
#pragma mark 时间分隔单位
/** 接下来最近的小时 */
@property (readonly) NSInteger nearestHour;
/** 小时 */
@property (readonly) NSInteger hour;
/** 分钟 */
@property (readonly) NSInteger minute;
/** 秒钟 */
@property (readonly) NSInteger seconds;
/** 日期 */
@property (readonly) NSInteger day;
/** 月份 */
@property (readonly) NSInteger month;
/** 年份 */
@property (readonly) NSInteger year;
/** 当年的第几个星期 */
@property (readonly) NSInteger week;
/** 星期几 */
@property (readonly) NSInteger weekday;
/** 当月第几个星期 */
@property (readonly) NSInteger nthWeekday; // e.g. 2nd Tuesday of the month == 2
@end
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Category/NSDate+Utilities.m
================================================
#import "NSDate+Utilities.h"
static const unsigned componentFlags = (NSYearCalendarUnit| NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit | NSWeekdayCalendarUnit | NSWeekdayOrdinalCalendarUnit);
@implementation NSDate (Utilities)
+ (NSCalendar *) currentCalendar
{
static NSCalendar *sharedCalendar = nil;
if (!sharedCalendar)
sharedCalendar = [NSCalendar autoupdatingCurrentCalendar];
return sharedCalendar;
}
#pragma mark - Relative Dates
+ (NSDate *) dateWithDaysFromNow: (NSInteger) days
{
return [[NSDate date] dateByAddingDays:days];
}
+ (NSDate *) dateWithDaysBeforeNow: (NSInteger) days
{
return [[NSDate date] dateBySubtractingDays:days];
}
+ (NSDate *) dateTomorrow
{
return [NSDate dateWithDaysFromNow:1];
}
+ (NSString *) dateTodayString
{
NSDate *today = [NSDate dateWithDaysFromNow:0];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd"];
return [formatter stringFromDate:today];
}
+ (NSString *) dateTomorrowString
{
NSDate *today = [NSDate dateWithDaysFromNow:1];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd"];
return [formatter stringFromDate:today];
}
+ (NSString *) dateTodayStringWithFormatter:(NSString *)formatterString
{
NSDate *today = [NSDate dateWithDaysFromNow:0];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:formatterString];
return [formatter stringFromDate:today];
}
+ (NSString *) dateTomorrowString:(NSString *)formatterString
{
NSDate *today = [NSDate dateWithDaysFromNow:1];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:formatterString];
return [formatter stringFromDate:today];
}
+ (NSDate *) dateYesterday
{
return [NSDate dateWithDaysBeforeNow:1];
}
+ (NSDate *) dateWithHoursFromNow: (NSInteger) dHours
{
NSTimeInterval aTimeInterval = [[NSDate date] timeIntervalSinceReferenceDate] + D_HOUR * dHours;
NSDate *newDate = [NSDate dateWithTimeIntervalSinceReferenceDate:aTimeInterval];
return newDate;
}
+ (NSDate *) dateWithHoursBeforeNow: (NSInteger) dHours
{
NSTimeInterval aTimeInterval = [[NSDate date] timeIntervalSinceReferenceDate] - D_HOUR * dHours;
NSDate *newDate = [NSDate dateWithTimeIntervalSinceReferenceDate:aTimeInterval];
return newDate;
}
+ (NSDate *) dateWithMinutesFromNow: (NSInteger) dMinutes
{
NSTimeInterval aTimeInterval = [[NSDate date] timeIntervalSinceReferenceDate] + D_MINUTE * dMinutes;
NSDate *newDate = [NSDate dateWithTimeIntervalSinceReferenceDate:aTimeInterval];
return newDate;
}
+ (NSDate *) dateWithMinutesBeforeNow: (NSInteger) dMinutes
{
NSTimeInterval aTimeInterval = [[NSDate date] timeIntervalSinceReferenceDate] - D_MINUTE * dMinutes;
NSDate *newDate = [NSDate dateWithTimeIntervalSinceReferenceDate:aTimeInterval];
return newDate;
}
+ (NSInteger) getDayBetweenWithDateOne:(NSDate *) dateOne withdateTwo: (NSDate *) dateTwo
{
if(dateOne && dateTwo){
NSInteger timediff = (NSInteger)[dateTwo timeIntervalSince1970]-[dateOne timeIntervalSince1970];
NSInteger oneDaySecs = 24*3600;
NSInteger day = timediff/oneDaySecs;
return day;
}
return 0;
}
#pragma mark - String Properties
- (NSString *) stringWithFormat: (NSString *) format
{
NSDateFormatter *formatter = [NSDateFormatter new];
formatter.dateFormat = format;
return [formatter stringFromDate:self];
}
- (NSString *) stringWithDateStyle: (NSDateFormatterStyle) dateStyle timeStyle: (NSDateFormatterStyle) timeStyle
{
NSDateFormatter *formatter = [NSDateFormatter new];
formatter.dateStyle = dateStyle;
formatter.timeStyle = timeStyle;
return [formatter stringFromDate:self];
}
- (NSString *) shortString
{
return [self stringWithDateStyle:NSDateFormatterShortStyle timeStyle:NSDateFormatterShortStyle];
}
- (NSString *) shortTimeString
{
return [self stringWithDateStyle:NSDateFormatterNoStyle timeStyle:NSDateFormatterShortStyle];
}
- (NSString *) shortDateString
{
return [self stringWithDateStyle:NSDateFormatterShortStyle timeStyle:NSDateFormatterNoStyle];
}
- (NSString *) mediumString
{
return [self stringWithDateStyle:NSDateFormatterMediumStyle timeStyle:NSDateFormatterMediumStyle ];
}
- (NSString *) mediumTimeString
{
return [self stringWithDateStyle:NSDateFormatterNoStyle timeStyle:NSDateFormatterMediumStyle ];
}
- (NSString *) mediumDateString
{
return [self stringWithDateStyle:NSDateFormatterMediumStyle timeStyle:NSDateFormatterNoStyle];
}
- (NSString *) longString
{
return [self stringWithDateStyle:NSDateFormatterLongStyle timeStyle:NSDateFormatterLongStyle ];
}
- (NSString *) longTimeString
{
return [self stringWithDateStyle:NSDateFormatterNoStyle timeStyle:NSDateFormatterLongStyle ];
}
- (NSString *) longDateString
{
return [self stringWithDateStyle:NSDateFormatterLongStyle timeStyle:NSDateFormatterNoStyle];
}
#pragma mark - Comparing Dates
- (BOOL) isEqualToDateIgnoringTime: (NSDate *) aDate
{
NSDateComponents *components1 = [[NSDate currentCalendar] components:componentFlags fromDate:self];
NSDateComponents *components2 = [[NSDate currentCalendar] components:componentFlags fromDate:aDate];
return ((components1.year == components2.year) &&
(components1.month == components2.month) &&
(components1.day == components2.day));
}
- (BOOL) isToday
{
return [self isEqualToDateIgnoringTime:[NSDate date]];
}
- (BOOL) isTomorrow
{
return [self isEqualToDateIgnoringTime:[NSDate dateTomorrow]];
}
- (BOOL) isYesterday
{
return [self isEqualToDateIgnoringTime:[NSDate dateYesterday]];
}
// This hard codes the assumption that a week is 7 days
- (BOOL) isSameWeekAsDate: (NSDate *) aDate
{
NSDateComponents *components1 = [[NSDate currentCalendar] components:componentFlags fromDate:self];
NSDateComponents *components2 = [[NSDate currentCalendar] components:componentFlags fromDate:aDate];
// Must be same week. 12/31 and 1/1 will both be week "1" if they are in the same week
if (components1.week != components2.week) return NO;
// Must have a time interval under 1 week.
return (fabs([self timeIntervalSinceDate:aDate]) < D_WEEK);
}
- (BOOL) isThisWeek
{
return [self isSameWeekAsDate:[NSDate date]];
}
- (BOOL) isNextWeek
{
NSTimeInterval aTimeInterval = [[NSDate date] timeIntervalSinceReferenceDate] + D_WEEK;
NSDate *newDate = [NSDate dateWithTimeIntervalSinceReferenceDate:aTimeInterval];
return [self isSameWeekAsDate:newDate];
}
- (BOOL) isLastWeek
{
NSTimeInterval aTimeInterval = [[NSDate date] timeIntervalSinceReferenceDate] - D_WEEK;
NSDate *newDate = [NSDate dateWithTimeIntervalSinceReferenceDate:aTimeInterval];
return [self isSameWeekAsDate:newDate];
}
- (BOOL) isSameMonthAsDate: (NSDate *) aDate
{
NSDateComponents *components1 = [[NSDate currentCalendar] components:NSYearCalendarUnit | NSMonthCalendarUnit fromDate:self];
NSDateComponents *components2 = [[NSDate currentCalendar] components:NSYearCalendarUnit | NSMonthCalendarUnit fromDate:aDate];
return ((components1.month == components2.month) &&
(components1.year == components2.year));
}
- (BOOL) isThisMonth
{
return [self isSameMonthAsDate:[NSDate date]];
}
- (BOOL) isLastMonth
{
return [self isSameMonthAsDate:[[NSDate date] dateBySubtractingMonths:1]];
}
- (BOOL) isNextMonth
{
return [self isSameMonthAsDate:[[NSDate date] dateByAddingMonths:1]];
}
- (BOOL) isSameYearAsDate: (NSDate *) aDate
{
NSDateComponents *components1 = [[NSDate currentCalendar] components:NSYearCalendarUnit fromDate:self];
NSDateComponents *components2 = [[NSDate currentCalendar] components:NSYearCalendarUnit fromDate:aDate];
return (components1.year == components2.year);
}
- (BOOL) isThisYear
{
return [self isSameYearAsDate:[NSDate date]];
}
- (BOOL) isNextYear
{
NSDateComponents *components1 = [[NSDate currentCalendar] components:NSYearCalendarUnit fromDate:self];
NSDateComponents *components2 = [[NSDate currentCalendar] components:NSYearCalendarUnit fromDate:[NSDate date]];
return (components1.year == (components2.year + 1));
}
- (BOOL) isLastYear
{
NSDateComponents *components1 = [[NSDate currentCalendar] components:NSYearCalendarUnit fromDate:self];
NSDateComponents *components2 = [[NSDate currentCalendar] components:NSYearCalendarUnit fromDate:[NSDate date]];
return (components1.year == (components2.year - 1));
}
- (BOOL) isEarlierThanDate: (NSDate *) aDate
{
return ([self compare:aDate] == NSOrderedAscending);
}
- (BOOL) isLaterThanDate: (NSDate *) aDate
{
return ([self compare:aDate] == NSOrderedDescending);
}
- (BOOL) isInFuture
{
return ([self isLaterThanDate:[NSDate date]]);
}
- (BOOL) isInPast
{
return ([self isEarlierThanDate:[NSDate date]]);
}
#pragma mark - Roles
- (BOOL) isTypicallyWeekend
{
NSDateComponents *components = [[NSDate currentCalendar] components:NSWeekdayCalendarUnit fromDate:self];
if ((components.weekday == 1) ||
(components.weekday == 7))
return YES;
return NO;
}
- (BOOL) isTypicallyWorkday
{
return ![self isTypicallyWeekend];
}
#pragma mark - Adjusting Dates
- (NSDate *) dateByAddingYears: (NSInteger) dYears
{
NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
[dateComponents setYear:dYears];
NSDate *newDate = [[NSCalendar currentCalendar] dateByAddingComponents:dateComponents toDate:self options:0];
return newDate;
}
- (NSDate *) dateBySubtractingYears: (NSInteger) dYears
{
return [self dateByAddingYears:-dYears];
}
- (NSDate *) dateByAddingMonths: (NSInteger) dMonths
{
NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
[dateComponents setMonth:dMonths];
NSDate *newDate = [[NSCalendar currentCalendar] dateByAddingComponents:dateComponents toDate:self options:0];
return newDate;
}
- (NSDate *) dateBySubtractingMonths: (NSInteger) dMonths
{
return [self dateByAddingMonths:-dMonths];
}
// Courtesy of dedan who mentions issues with Daylight Savings
- (NSDate *) dateByAddingDays: (NSInteger) dDays
{
NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
[dateComponents setDay:dDays];
NSDate *newDate = [[NSCalendar currentCalendar] dateByAddingComponents:dateComponents toDate:self options:0];
return newDate;
}
- (NSDate *) dateBySubtractingDays: (NSInteger) dDays
{
return [self dateByAddingDays: (dDays * -1)];
}
- (NSDate *) dateByAddingHours: (NSInteger) dHours
{
NSTimeInterval aTimeInterval = [self timeIntervalSinceReferenceDate] + D_HOUR * dHours;
NSDate *newDate = [NSDate dateWithTimeIntervalSinceReferenceDate:aTimeInterval];
return newDate;
}
- (NSDate *) dateBySubtractingHours: (NSInteger) dHours
{
return [self dateByAddingHours: (dHours * -1)];
}
- (NSDate *) dateByAddingMinutes: (NSInteger) dMinutes
{
NSTimeInterval aTimeInterval = [self timeIntervalSinceReferenceDate] + D_MINUTE * dMinutes;
NSDate *newDate = [NSDate dateWithTimeIntervalSinceReferenceDate:aTimeInterval];
return newDate;
}
- (NSDate *) dateBySubtractingMinutes: (NSInteger) dMinutes
{
return [self dateByAddingMinutes: (dMinutes * -1)];
}
- (NSDateComponents *) componentsWithOffsetFromDate: (NSDate *) aDate
{
NSDateComponents *dTime = [[NSDate currentCalendar] components:componentFlags fromDate:aDate toDate:self options:0];
return dTime;
}
#pragma mark - Extremes
- (NSDate *) dateAtStartOfDay
{
NSDateComponents *components = [[NSDate currentCalendar] components:componentFlags fromDate:self];
components.hour = 0;
components.minute = 0;
components.second = 0;
return [[NSDate currentCalendar] dateFromComponents:components];
}
// Thanks gsempe & mteece
- (NSDate *) dateAtEndOfDay
{
NSDateComponents *components = [[NSDate currentCalendar] components:componentFlags fromDate:self];
components.hour = 23; // Thanks Aleksey Kononov
components.minute = 59;
components.second = 59;
return [[NSDate currentCalendar] dateFromComponents:components];
}
#pragma mark - Retrieving Intervals
- (NSInteger) minutesAfterDate: (NSDate *) aDate
{
NSTimeInterval ti = [self timeIntervalSinceDate:aDate];
return (NSInteger) (ti / D_MINUTE);
}
- (NSInteger) minutesBeforeDate: (NSDate *) aDate
{
NSTimeInterval ti = [aDate timeIntervalSinceDate:self];
return (NSInteger) (ti / D_MINUTE);
}
- (NSInteger) hoursAfterDate: (NSDate *) aDate
{
NSTimeInterval ti = [self timeIntervalSinceDate:aDate];
return (NSInteger) (ti / D_HOUR);
}
- (NSInteger) hoursBeforeDate: (NSDate *) aDate
{
NSTimeInterval ti = [aDate timeIntervalSinceDate:self];
return (NSInteger) (ti / D_HOUR);
}
- (NSInteger) daysAfterDate: (NSDate *) aDate
{
NSTimeInterval ti = [self timeIntervalSinceDate:aDate];
return (NSInteger) (ti / D_DAY);
}
- (NSInteger) daysBeforeDate: (NSDate *) aDate
{
NSTimeInterval ti = [aDate timeIntervalSinceDate:self];
return (NSInteger) (ti / D_DAY);
}
// Thanks, dmitrydims
// I have not yet thoroughly tested this
- (NSInteger)distanceInDaysToDate:(NSDate *)anotherDate
{
NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [gregorianCalendar components:NSDayCalendarUnit fromDate:self toDate:anotherDate options:0];
return components.day;
}
#pragma mark - Decomposing Dates
- (NSInteger) nearestHour
{
NSTimeInterval aTimeInterval = [[NSDate date] timeIntervalSinceReferenceDate] + D_MINUTE * 30;
NSDate *newDate = [NSDate dateWithTimeIntervalSinceReferenceDate:aTimeInterval];
NSDateComponents *components = [[NSDate currentCalendar] components:NSHourCalendarUnit fromDate:newDate];
return components.hour;
}
- (NSInteger) hour
{
NSDateComponents *components = [[NSDate currentCalendar] components:componentFlags fromDate:self];
return components.hour;
}
- (NSInteger) minute
{
NSDateComponents *components = [[NSDate currentCalendar] components:componentFlags fromDate:self];
return components.minute;
}
- (NSInteger) seconds
{
NSDateComponents *components = [[NSDate currentCalendar] components:componentFlags fromDate:self];
return components.second;
}
- (NSInteger) day
{
NSDateComponents *components = [[NSDate currentCalendar] components:componentFlags fromDate:self];
return components.day;
}
- (NSInteger) month
{
NSDateComponents *components = [[NSDate currentCalendar] components:componentFlags fromDate:self];
return components.month;
}
- (NSInteger) week
{
NSDateComponents *components = [[NSDate currentCalendar] components:componentFlags fromDate:self];
return components.week;
}
- (NSInteger) weekday
{
NSDateComponents *components = [[NSDate currentCalendar] components:componentFlags fromDate:self];
return components.weekday;
}
- (NSInteger) nthWeekday // e.g. 2nd Tuesday of the month is 2
{
NSDateComponents *components = [[NSDate currentCalendar] components:componentFlags fromDate:self];
return components.weekdayOrdinal;
}
- (NSInteger) year
{
NSDateComponents *components = [[NSDate currentCalendar] components:componentFlags fromDate:self];
return components.year;
}
@end
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Category/NSString+Extension.h
================================================
//
// NSString+Extension.h
// 汇银
//
// Created by 李小斌 on 14-11-27.
// Copyright (c) 2014年 7ien. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface NSString (Extension)
+(NSString *) priceWithSign:(CGFloat)value;
+(NSString *) priceWithoutSign:(CGFloat)value;
+(NSString *)stringUtils:(id)stringValue;
+(NSString *)jsonUtils:(id)stringValue;
+(NSString *)jsonUtils22:(id)stringValue;
/*
* 判断字符串是否为空白的
*/
- (BOOL)isBlank;
/*
* 判断字符串是否为空
*/
- (BOOL)isEmpty;
+ (BOOL)isEmpty:(id)stringValue;
- (BOOL)isNULL;
// 把手机号第4-7位变成星号
+(NSString *)phoneNumToAsterisk:(NSString*)phoneNum;
// 把邮箱@前面变成星号
+(NSString*)emailToAsterisk:(NSString *)email;
// 把身份证号第5-14位变成星号
+(NSString *)idCardToAsterisk:(NSString *)idCardNum;
// 判断是否是身份证号码
+(BOOL)validateIdCard:(NSString *)idCard;
// 邮箱验证
+(BOOL)validateEmail:(NSString *)email;
//判断字符串中是否含有表情
+ (BOOL)stringContainsEmoji:(NSString *)string;
// Vindor标示符 (IDFV-identifierForVendor)
+ (NSString *)returnIdfv;
// 手机号码验证
+(BOOL)validateMobile:(NSString *)mobile;
//固话验证
+ (BOOL) validateAreaTel:(NSString *)areaTel;
//获取拼音首字母(传入汉字字符串, 返回大写拼音首字母)
+ (NSString *)firstCharactor:(NSString *)aString;
//将URL内的中文进行编码
+ (NSString *)URLEncodedString:(NSString *)urlString;
//字典转换成字符串
+(NSString *) jsonStringWithDictionary:(NSDictionary *)dictionary;
//字符串转成字典
+ (NSDictionary *)dicWithString:(NSString *)string;
//数组转换成字符串
+(NSString *) jsonStringWithArray:(NSArray *)array;
//json字符串转换成普通字符串
//+(NSString *) jsonStringWithString:(NSString *) string;
//json对象转换成字符串
+(NSString *) jsonStringWithObject:(id) object;
//重写containsString方法,兼容8.0以下版本
- (BOOL)containsString:(NSString *)aString NS_AVAILABLE(10_10, 8_0);
//通过文本宽度计算高度
-(CGSize) calculateSize:(UIFont *)font maxWidth:(CGFloat)width;
/*获取网络流量信息*/
+ (long long) getInterfaceBytes;
/**过滤表情*/
+ (NSString *)disable_emoji:(NSString *)text;
/**获取缓存大小*/
+ (NSString *)getCacheSize;
//根据正则,过滤特殊字符
+ (NSString *)filterCharactor:(NSString *)string withRegex:(NSString *)regexStr;
//有效数字
- (BOOL)yw_isValidateDecimalsNum;\
/// 获取字符串宽高
- (CGSize)sizeWithFont:(UIFont *)font maxSize:(CGSize)maxSize;
/**
设置行间距
@param label 需要设置行间距的label
@param textStr 需要设置行间距的文本
@param font 字体大小
@param lineSpacing 间距
*/
+(void)setLabelSpaceWithLabel:(UILabel*)label withTextStr:(NSString*)textStr withFont:(UIFont*)font withLineSpacing:(NSInteger)lineSpacing;
/**
计算UILabel的高度(带有行间距的情况跟上面设置行间距方法同时使用才有效)
@param textStr label的文本
@param font 字体
@param width 文本宽度
@param lineSpacing 有行间距的label传入实际行间距 没有默认为0
@return label实际的高度
*/
+(CGFloat)getSpaceLabelHeightWithText:(NSString*)textStr withFont:(UIFont*)font withWidth:(CGFloat)width withLineSpacing:(NSInteger)lineSpacing;
@end
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Category/NSString+Extension.m
================================================
//
// NSString+Extension.m
// 汇银
//
// Created by 李小斌 on 14-11-27.
// Copyright (c) 2014年 7ien. All rights reserved.
//
#import "NSString+Extension.h"
#include <ifaddrs.h>
#include <arpa/inet.h>
#include <net/if.h>
@implementation NSString (Extension)
+(NSString *) priceWithSign:(CGFloat)value
{
return [NSString stringWithFormat:@"¥%.2f", value];
}
+(NSString *) priceWithoutSign:(CGFloat)value
{
return [NSString stringWithFormat:@"%0.2f", value];
}
+(NSString *)jsonUtils:(id)stringValue
{
NSString *string = [NSString stringWithFormat:@"%@", stringValue];
if([string isEqualToString:@"<null>"])
{
string = @"";
}
if(string == nil)
{
string = @"";
}
if([string isEqualToString:@"(null)"])
{
string = @"";
}
if([string isEqualToString:@"<null>"])
{
string = @"";
}
if([string isEqualToString:@""])
{
string = @"";
}
if(string.length == 0)
{
string = @"";
}
return string;
}
+(NSString *)jsonUtils22:(id)stringValue
{
NSString *string = [NSString stringWithFormat:@"%@", stringValue];
if([string isEqualToString:@"<null>"])
{
string = @"0";
}
if(string == nil)
{
string = @"0";
}
if([string isEqualToString:@"(null)"])
{
string = @"0";
}
if([string isEqualToString:@""])
{
string = @"0";
}
if(string.length == 0)
{
string = @"0";
}
return string;
}
+(NSString *)stringUtils:(id)stringValue
{
NSString *string = [NSString stringWithFormat:@"%@", stringValue];
if([string isEqualToString:@"<null>"])
{
string = @"";
}
if(string == nil)
{
string = @"";
}
if([string isEqualToString:@"(null)"])
{
string = @"";
}
if(string.length == 0)
{
string = @"";
}
return string;
}
/*
* 判断字符串是否为空白的
*/
- (BOOL)isBlank
{
if ((self == nil) || (self.length == 0)) {
return YES;
}
NSString *trimedString = [self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
if ([trimedString length] == 0) {
return YES;
} else {
return NO;
}
return YES;
}
/*
* 判断字符串是否为空
*/
- (BOOL)isEmpty
{
return (([self isKindOfClass:[NSNull class]]) || [self isEqual:[NSNull null]]||(self.length == 0) || (self == nil)|| ([self isEqualToString:@"(null)"]) || ([self isEqualToString:@"<null>"]));
}
+ (BOOL)isEmpty:(id)stringValue
{
NSString *string = [NSString stringWithFormat:@"%@", stringValue];
return (([string isKindOfClass:[NSNull class]]) || [string isEqual:[NSNull null]]||(string.length == 0) || (string == nil)|| ([string isEqualToString:@"(null)"]) || ([string isEqualToString:@"<null>"]) || ([[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] isEqualToString:@""]));
}
- (BOOL)isNULL
{
return [self isKindOfClass:[NSNull class]] || [self isEqual:[NSNull null]];
}
// 把手机号第4-7位变成星号
+(NSString *)phoneNumToAsterisk:(NSString*)phoneNum
{
if (phoneNum.length>=7) {
return [phoneNum stringByReplacingCharactersInRange:NSMakeRange(3,4) withString:@"****"];
}
return phoneNum;
}
// 把邮箱@前面变成星号
+(NSString*)emailToAsterisk:(NSString *)email
{
NSArray *arr = [email componentsSeparatedByString:@"@"];
NSString *str = [arr objectAtIndex:0];
return [email stringByReplacingCharactersInRange:NSMakeRange(str.length, email.length-str.length) withString:@"****"];
}
// 把身份证号第11-14位变成星号
+(NSString*)idCardToAsterisk:(NSString *)idCardNum
{
return [idCardNum stringByReplacingCharactersInRange:NSMakeRange(10, 4) withString:@"****"];
}
//邮箱验证
+ (BOOL) validateEmail:(NSString *)email
{//564826150@qq.com
NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
return [emailTest evaluateWithObject:email];
}
//判断字符串中是否含有表情-------系统键盘有问题
+ (BOOL)stringContainsEmoji:(NSString *)string{
__block BOOL returnValue = NO;
[string enumerateSubstringsInRange:NSMakeRange(0, [string length])
options:NSStringEnumerationByComposedCharacterSequences
usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
const unichar hs = [substring characterAtIndex:0];
if (0xd800 <= hs && hs <= 0xdbff) {
if (substring.length > 1) {
const unichar ls = [substring characterAtIndex:1];
const int uc = ((hs - 0xd800) * 0x400) + (ls - 0xdc00) + 0x10000;
if (0x1d000 <= uc && uc <= 0x1f77f) {
returnValue = YES;
}
}
} else if (substring.length > 1) {
const unichar ls = [substring characterAtIndex:1];
if (ls == 0x20e3) {
returnValue = YES;
}
} else {
if (0x2100 <= hs && hs <= 0x27ff) {
returnValue = YES;
} else if (0x2B05 <= hs && hs <= 0x2b07) {
returnValue = YES;
} else if (0x2934 <= hs && hs <= 0x2935) {
returnValue = YES;
} else if (0x3297 <= hs && hs <= 0x3299) {
returnValue = YES;
} else if (hs == 0xa9 || hs == 0xae || hs == 0x303d || hs == 0x3030 || hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b || hs == 0x2b50) {
returnValue = YES;
}
}
}];
return returnValue;
}
// Vindor标示符 (IDFV-identifierForVendor)
+ (NSString *)returnIdfv
{
NSString *idfv = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
// EXLog(@"idfv...%@",idfv);
return idfv;
}
//手机号码验证
+ (BOOL) validateMobile:(NSString *)mobile
{
//手机号以13, 15,18开头,八个 \d 数字字符
NSString *phoneRegex = @"^((13[0-9])|(14[0-9])|(15[^4,\\D])|(16[0-9])|(17[0-9])|(18[0,0-9]|(19[0-9])))\\d{8}$";
NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",phoneRegex];
return [phoneTest evaluateWithObject:mobile];
/*
NSString *phoneRegex = @"^((13[0-9])|(14[0-9])|(15[0-9])|(17[0-9])|(18[0-9]))(\\d{8})$";
NSPredicate *regextesPhone = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",phoneRegex];
if ([regextesPhone evaluateWithObject:self] == YES)
{
return YES;
}
else
{
return NO;
}
*/
}
//固话验证
+ (BOOL) validateAreaTel:(NSString *)areaTel;
{
NSString *phoneRegex = @"^((0\\d{2,3})-)(\\d{7,8})(-(\\d{3,}))?$";
NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",phoneRegex];
return [phoneTest evaluateWithObject:areaTel];
}
//获取拼音首字母(传入汉字字符串, 返回大写拼音首字母)
+ (NSString *)firstCharactor:(NSString *)aString
{
//转成了可变字符串
NSMutableString *str = [NSMutableString stringWithString:aString];
//先转换为带声调的拼音
CFStringTransform((CFMutableStringRef)str,NULL, kCFStringTransformMandarinLatin,NO);
//再转换为不带声调的拼音
CFStringTransform((CFMutableStringRef)str,NULL, kCFStringTransformStripDiacritics,NO);
//转化为大写拼音
NSString *pinYin = [str capitalizedString];
//获取并返回首字母
return [pinYin substringToIndex:1];
}
/**
* 功能:获取指定范围的字符串
*
* 参数:字符串的开始下标
*
* 参数:字符串的结束下标
*/
+(NSString *)getStringWithRange:(NSString *)str Value1:(NSInteger)value1 Value2:(NSInteger)value2;
{
return [str substringWithRange:NSMakeRange(value1,value2)];
}
/**
* 功能:判断是否在地区码内
*
* 参数:地区码
*/
+(BOOL)areaCode:(NSString *)code
{
NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
[dic setObject:@"北京" forKey:@"11"];
[dic setObject:@"天津" forKey:@"12"];
[dic setObject:@"河北" forKey:@"13"];
[dic setObject:@"山西" forKey:@"14"];
[dic setObject:@"内蒙古" forKey:@"15"];
[dic setObject:@"辽宁" forKey:@"21"];
[dic setObject:@"吉林" forKey:@"22"];
[dic setObject:@"黑龙江" forKey:@"23"];
[dic setObject:@"上海" forKey:@"31"];
[dic setObject:@"江苏" forKey:@"32"];
[dic setObject:@"浙江" forKey:@"33"];
[dic setObject:@"安徽" forKey:@"34"];
[dic setObject:@"福建" forKey:@"35"];
[dic setObject:@"江西" forKey:@"36"];
[dic setObject:@"山东" forKey:@"37"];
[dic setObject:@"河南" forKey:@"41"];
[dic setObject:@"湖北" forKey:@"42"];
[dic setObject:@"湖南" forKey:@"43"];
[dic setObject:@"广东" forKey:@"44"];
[dic setObject:@"广西" forKey:@"45"];
[dic setObject:@"海南" forKey:@"46"];
[dic setObject:@"重庆" forKey:@"50"];
[dic setObject:@"四川" forKey:@"51"];
[dic setObject:@"贵州" forKey:@"52"];
[dic setObject:@"云南" forKey:@"53"];
[dic setObject:@"西藏" forKey:@"54"];
[dic setObject:@"陕西" forKey:@"61"];
[dic setObject:@"甘肃" forKey:@"62"];
[dic setObject:@"青海" forKey:@"63"];
[dic setObject:@"宁夏" forKey:@"64"];
[dic setObject:@"新疆" forKey:@"65"];
[dic setObject:@"台湾" forKey:@"71"];
[dic setObject:@"香港" forKey:@"81"];
[dic setObject:@"澳门" forKey:@"82"];
[dic setObject:@"国外" forKey:@"91"];
if ([dic objectForKey:code] == nil) {
return NO;
}
return YES;
}
/**
* 功能:验证身份证是否合法
*
* 参数:输入的身份证号
*/
+(BOOL)validateIdCard:(NSString *)idCard
{
//判断位数
if ([idCard length] < 15 ||[idCard length] > 18) {
return NO;
}
NSString *carid = idCard;
long lSumQT =0;
//加权因子
int R[] ={7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };
//校验码
unsigned char sChecker[11]={'1','0','X', '9', '8', '7', '6', '5', '4', '3', '2'};
//将15位身份证号转换成18位
NSMutableString *mString = [NSMutableString stringWithString:idCard];
if ([idCard length] == 15) {
[mString insertString:@"19" atIndex:6];
long p = 0;
const char *pid = [mString UTF8String];
for (int i=0; i<=16; i++)
{
p += (pid[i]-48) * R[i];
}
int o = p%11;
NSString *string_content = [NSString stringWithFormat:@"%c",sChecker[o]];
[mString insertString:string_content atIndex:[mString length]];
carid = mString;
}
//判断地区码
NSString * sProvince = [carid substringToIndex:2];
if (![self areaCode:sProvince]) {
return NO;
}
//判断年月日是否有效
//年份
int strYear = [[self getStringWithRange:carid Value1:6 Value2:4] intValue];
//月份
int strMonth = [[self getStringWithRange:carid Value1:10 Value2:2] intValue];
//日
int strDay = [[self getStringWithRange:carid Value1:12 Value2:2] intValue];
NSTimeZone *localZone = [NSTimeZone localTimeZone];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
[dateFormatter setTimeZone:localZone];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date=[dateFormatter dateFromString:[NSString stringWithFormat:@"%d-%d-%d 12:01:01",strYear,strMonth,strDay]];
if (date == nil) {
return NO;
}
const char *PaperId = [carid UTF8String];
//检验长度
if( 18 != strlen(PaperId)) return -1;
//校验数字
for (int i=0; i<18; i++)
{
if ( !isdigit(PaperId[i]) && !(('X' == PaperId[i] || 'x' == PaperId[i]) && 17 == i) )
{
return NO;
}
}
//验证最末的校验码
for (int i=0; i<=16; i++)
{
lSumQT += (PaperId[i]-48) * R[i];
}
if (sChecker[lSumQT%11] != PaperId[17] )
{
return NO;
}
return YES;
}
//通过文本宽度计算高度
-(CGSize) calculateSize:(UIFont *)font maxWidth:(CGFloat)width
{
CGSize size = CGSizeMake(width,1000);
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc]init];
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
NSDictionary *attributes = @{NSFontAttributeName:font, NSParagraphStyleAttributeName:paragraphStyle.copy};
CGRect rect = [self boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil];
return CGSizeMake(rect.size.width, rect.size.height);
}
//重写containsString方法,兼容8.0以下版本
- (BOOL)containsString:(NSString *)aString NS_AVAILABLE(10_10, 8_0){
if ([aString isBlank]) {
return NO;
}
if ([self rangeOfString:aString].location != NSNotFound) {
return YES;
}
return NO;
}
//json数组转换成字符串
+(NSString *) jsonStringWithArray:(NSArray *)array
{
NSMutableString *reString = [NSMutableString string];
[reString appendString:@"["];
NSMutableArray *values = [NSMutableArray array];
for (id valueObj in array) {
NSString *value = [NSString jsonStringWithObject:valueObj];
if (value) {
[values addObject:[NSString stringWithFormat:@"%@",value]];
}
}
[reString appendFormat:@"%@",[values componentsJoinedByString:@","]];
[reString appendString:@"]"];
return reString;
}
//字典转换成字符串
+(NSString *) jsonStringWithDictionary:(NSDictionary *)dictionary
{
NSString *jsonString = nil;
NSError *error;
NSData *data = [NSJSONSerialization dataWithJSONObject:dictionary options:NSJSONWritingPrettyPrinted error: &error];
if (!data) {
// EXLog(@"Got an error: %@", error);
} else {
jsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}
return jsonString;
}
////json字符串转换成普通字符串
+(NSString *) jsonStringWithString:(NSString *) string
{
return [NSString stringWithFormat:@"\"%@\"",
[[string stringByReplacingOccurrencesOfString:@"\n" withString:@"\\n"] stringByReplacingOccurrencesOfString:@"\""withString:@"\\\""]
];
}
////json对象转换成字符串
+(NSString *) jsonStringWithObject:(id) object
{
NSString *value = nil;
if (!object)
{
return value;
}
if ([object isKindOfClass:[NSString class]])
{
value = [self jsonStringWithString:object];
}
else if([object isKindOfClass:[NSDictionary class]])
{
value = [self jsonStringWithDictionary:object];
}
else if([object isKindOfClass:[NSArray class]])
{
value = [self jsonStringWithArray:object];
}
return value;
}
//字符串转成字典
+ (NSDictionary *)dicWithString:(NSString *)string
{
if (string == nil) {
return nil;
}
NSData *jsonData = [string dataUsingEncoding:NSUTF8StringEncoding];
NSError *err;
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData
options:NSJSONReadingMutableContainers
error:&err];
if(err) {
NSLog(@"json解析失败:%@",err);
return nil;
}
return dic;
}
+ (NSString *)URLEncodedString:(NSString *)urlString
{
NSString *encodedString = (NSString *)
CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
(CFStringRef)urlString,
(CFStringRef)@"!$&'()*+,-./:;=?@_~%#[]",
NULL,
kCFStringEncodingUTF8));
return encodedString;
}
//1、自己下载速度这种,可以直接在接受数据的地方加统计
//2、获取全局的数据,可以监控网卡的进出流量
/*获取网络流量信息*/
+ (long long) getInterfaceBytes
{
struct ifaddrs *ifa_list = 0, *ifa;
if (getifaddrs(&ifa_list) == -1)
{
return 0;
}
uint32_t iBytes = 0;
uint32_t oBytes = 0;
for (ifa = ifa_list; ifa; ifa = ifa->ifa_next)
{
if (AF_LINK != ifa->ifa_addr->sa_family)
continue;
if (!(ifa->ifa_flags & IFF_UP) && !(ifa->ifa_flags & IFF_RUNNING))
continue;
if (ifa->ifa_data == 0)
continue;
/* Not a loopback device. */
if (strncmp(ifa->ifa_name, "lo", 2))
{
struct if_data *if_data = (struct if_data *)ifa->ifa_data;
iBytes += if_data->ifi_ibytes;
oBytes += if_data->ifi_obytes;
}
}
freeifaddrs(ifa_list);
// EXLog(@"\n[getInterfaceBytes-Total]%d,%d",iBytes,oBytes);
return iBytes + oBytes;
}
+ (NSString *)disable_emoji:(NSString *)text
{
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[^\\u0020-\\u007E\\u00A0-\\u00BE\\u2E80-\\uA4CF\\uF900-\\uFAFF\\uFE30-\\uFE4F\\uFF00-\\uFFEF\\u0080-\\u009F\\u2000-\\u201f\r\n]" options:NSRegularExpressionCaseInsensitive error:nil];
NSString *modifiedString = [regex stringByReplacingMatchesInString:text
options:0
range:NSMakeRange(0, [text length])
withTemplate:@""];
return modifiedString;
}
#pragma mark - 计算缓存大小
+ (NSString *)getCacheSize
{
//定义变量存储总的缓存大小
CGFloat sumSize = 0;
//01.获取当前图片缓存路径
NSString *cacheFilePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Library/Caches"];
//02.创建文件管理对象
NSFileManager *filemanager = [NSFileManager defaultManager];
//获取当前缓存路径下的所有子路径
NSArray *subPaths = [filemanager subpathsOfDirectoryAtPath:cacheFilePath error:nil];
//遍历所有子文件
for (NSString *subPath in subPaths) {
//1).拼接完整路径
NSString *filePath = [cacheFilePath stringByAppendingFormat:@"/%@",subPath];
//2).计算文件的大小
CGFloat fileSize = [[filemanager attributesOfItemAtPath:filePath error:nil]fileSize];
//3).加载到文件的大小
sumSize += fileSize;
}
float size_m = sumSize/(1024*1024);
//SDWebImage框架自身计算缓存的实现
size_m += [[SDImageCache sharedImageCache] getSize]/1024.0/1024.0;
return [NSString stringWithFormat:@"%.2fM",size_m];
}
//根据正则,过滤特殊字符
+ (NSString *)filterCharactor:(NSString *)string withRegex:(NSString *)regexStr{
NSString *searchText = string;
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regexStr options:NSRegularExpressionCaseInsensitive error:&error];
NSString *result = [regex stringByReplacingMatchesInString:searchText options:NSMatchingReportCompletion range:NSMakeRange(0, searchText.length) withTemplate:@""];
return result;
}
//有效数字
- (BOOL)yw_isValidateDecimalsNum{
BOOL isValid = YES;
NSUInteger len = self.length;
if (len > 0) {
NSString *numberRegex = @"^[-+]?[0-9]*\\.?[0-9]*$";
NSPredicate *numberPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", numberRegex];
isValid = [numberPredicate evaluateWithObject:self];
}
return isValid;
}
//判断全字母:
- (BOOL)inputShouldLetter:(NSString *)inputString {
if (inputString.length == 0) return NO;
NSString *regex =@"[a-zA-Z]*";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
return [pred evaluateWithObject:inputString];
}
//判断仅输入字母或数字:
- (BOOL)inputShouldLetterOrNum:(NSString *)inputString {
if (inputString.length == 0) return NO;
NSString *regex =@"[a-zA-Z0-9]*";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
return [pred evaluateWithObject:inputString];
}
- (CGSize)sizeWithFont:(UIFont *)font maxSize:(CGSize)maxSize
{
NSDictionary *attribute = @{NSFontAttributeName : font};
return [self boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:attribute context:nil].size;
}
/*
// 对一个字符串进行base64编码,并且返回
-(NSString *)base64EncodeString:(NSString *)string {
// 1.先转换为二进制数据
NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
// 2.对二进制数据进行base64编码,完成之后返回字符串
return [data base64EncodedStringWithOptions:0];
}
// 对base64编码之后的字符串解码,并且返回
-(NSString *)base64DecodeString:(NSString *)string {
// 注意:该字符串是base64编码后的字符串
// 1.转换为二进制数据(完成了解码的过程)
NSData *data = [[NSData alloc]initWithBase64EncodedString:string options:0];
// 2.把二进制数据在转换为字符串
return [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
}
//---------------------------<#我是分割线#>------------------------------//
NSLog(@"%@",[self base64EncodeString:@"A"]);
NSLog(@"%@",[self base64DecodeString:@"QQ=="]);
*/
+(void)setLabelSpaceWithLabel:(UILabel*)label withTextStr:(NSString*)textStr withFont:(UIFont*)font withLineSpacing:(NSInteger)lineSpacing
{
NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStyle alloc] init];
paraStyle.lineBreakMode = NSLineBreakByCharWrapping;
paraStyle.alignment = NSTextAlignmentLeft;
paraStyle.lineSpacing = lineSpacing; //设置行间距
paraStyle.hyphenationFactor = 1.0;
paraStyle.firstLineHeadIndent = 0.0;
paraStyle.paragraphSpacingBefore = 0.0;
paraStyle.headIndent = 0;
paraStyle.tailIndent = 0;
NSDictionary *dic = @{NSFontAttributeName:font, NSParagraphStyleAttributeName:paraStyle, NSKernAttributeName:@0.0f
};
NSAttributedString *attributeStr = [[NSAttributedString alloc] initWithString:textStr attributes:dic];
label.attributedText = attributeStr;
}
+(CGFloat)getSpaceLabelHeightWithText:(NSString*)textStr withFont:(UIFont*)font withWidth:(CGFloat)width withLineSpacing:(NSInteger)lineSpacing{
NSMutableParagraphStyle *style = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
style.lineBreakMode = NSLineBreakByWordWrapping;
style.alignment = NSTextAlignmentLeft;
if (lineSpacing) {
style.lineSpacing = lineSpacing;
} else {
style.lineSpacing = 0;
}
NSAttributedString *string = [[NSAttributedString alloc]initWithString:textStr attributes:@{NSFontAttributeName:font, NSParagraphStyleAttributeName:style}];
CGSize size = [string boundingRectWithSize:CGSizeMake(width, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading context:nil].size;
CGFloat height = ceil(size.height) + 1;
return height;
}
@end
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Category/UIImage+BlurImage.h
================================================
//
// UIImage+BlurImage.h
// weather
//
// Created by ibokan on 14-10-31.
// Copyright (c) 2014年 ibokan. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface UIImage (BlurImage)
/**
* 产生模糊图片
*
* @param radius 模糊半径
* @param iterations 迭代次数
* @param tintColor 前景色
*
* @return 图片
*/
- (UIImage *)blurredImageWithRadius:(CGFloat)radius iterations:(NSUInteger)iterations tintColor:(UIColor *)tintColor;
/**
修改传入图片的透明度
*/
+ (UIImage *)imageByApplyingAlpha:(CGFloat)alpha image:(UIImage*)image;
/**
根据颜色和尺寸生成一张图片
*/
+(UIImage *) ImageWithColor: (UIColor *) color frame:(CGRect)aFrame;
/**
修改传入图片的尺寸
*/
+(UIImage*) changeSizeByOriginImage:(UIImage *)image scaleToSize:(CGSize)size;
/**
* 保存图片在沙盒,仅仅支持PNG、JPG、JPEG
*
* @param image 传入的图片
* @param imgName 图片的命名
* @param imgType 图片格式
* @param directoryPath 图片存放的路径
*/
+(void)saveImg:(UIImage *)image withImageName:(NSString *)imgName imgType:(NSString *)imgType inDirectory:(NSString *)directoryPath;
/**
* 获取图片上指定点上的颜色
*
* @param point 图片上的一点
*
* @return 颜色
*/
-(UIColor *)getImageColorOnPoint:(CGPoint) point;
/**
* 绘制一张图片,图片是由一个圆环包着的,
*
* @param color 圆环的颜色
* @param imgSize 图片的size
*
* @return 图片
*/
-(UIImage *)drawCircularIconWithColor:(UIColor *)color sizeOfImg:(CGSize)imgSize;
/**
* 返回一张图片中颜色最多的那种颜色
*
* @return color
*/
-(UIColor*)getMostColor;
/**
* 根据图片绘制一张带圆环的图片
*
* @param size 绘制之后图片的大小
*
* @return 图片
*/
-(UIImage *)headerWithTorusBySzie:(CGSize)size;
/**
绘制带有圆弧的图片
*/
- (UIImage *)drawCircularIconWithSize:(CGSize )imgSize withRadius:(CGFloat)radius;
@end
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Category/UIImage+BlurImage.m
================================================
//
// UIImage+BlurImage.m
// weather
//
// Created by ibokan on 14-10-31.
// Copyright (c) 2014年 ibokan. All rights reserved.
//
#import "UIImage+BlurImage.h"
#import <Accelerate/Accelerate.h>
@implementation UIImage (BlurImage)
/**
* 产生模糊图片
*
* @param radius 模糊半径
* @param iterations 迭代次数
* @param tintColor 前景色
*
* @return 图片
*/
- (UIImage *)blurredImageWithRadius:(CGFloat)radius iterations:(NSUInteger)iterations tintColor:(UIColor *)tintColor
{
//image must be nonzero size
if (floorf(self.size.width) * floorf(self.size.height) <= 0.0f) return self;
//boxsize must be an odd integer
uint32_t boxSize = radius * self.scale;
if (boxSize % 2 == 0) boxSize ++;
//create image buffers
CGImageRef imageRef = self.CGImage;
vImage_Buffer buffer1, buffer2;
buffer1.width = buffer2.width = CGImageGetWidth(imageRef);
buffer1.height = buffer2.height = CGImageGetHeight(imageRef);
buffer1.rowBytes = buffer2.rowBytes = CGImageGetBytesPerRow(imageRef);
CFIndex bytes = buffer1.rowBytes * buffer1.height;
buffer1.data = malloc(bytes);
buffer2.data = malloc(bytes);
//create temp buffer
void *tempBuffer = malloc(vImageBoxConvolve_ARGB8888(&buffer1, &buffer2, NULL, 0, 0, boxSize, boxSize,
NULL, kvImageEdgeExtend + kvImageGetTempBufferSize));
//copy image data
CFDataRef dataSource = CGDataProviderCopyData(CGImageGetDataProvider(imageRef));
memcpy(buffer1.data, CFDataGetBytePtr(dataSource), bytes);
CFRelease(dataSource);
for (NSUInteger i = 0; i < iterations; i++)
{
//perform blur
vImageBoxConvolve_ARGB8888(&buffer1, &buffer2, tempBuffer, 0, 0, boxSize, boxSize, NULL, kvImageEdgeExtend);
//swap buffers
void *temp = buffer1.data;
buffer1.data = buffer2.data;
buffer2.data = temp;
}
//free buffers
free(buffer2.data);
free(tempBuffer);
//create image context from buffer
CGContextRef ctx = CGBitmapContextCreate(buffer1.data, buffer1.width, buffer1.height,
8, buffer1.rowBytes, CGImageGetColorSpace(imageRef),
CGImageGetBitmapInfo(imageRef));
//apply tint
if (tintColor && CGColorGetAlpha(tintColor.CGColor) > 0.0f)
{
CGContextSetFillColorWithColor(ctx, [tintColor colorWithAlphaComponent:0.25].CGColor);
CGContextSetBlendMode(ctx, kCGBlendModePlusLighter);
CGContextFillRect(ctx, CGRectMake(0, 0, buffer1.width, buffer1.height));
}
//create image from context
imageRef = CGBitmapContextCreateImage(ctx);
UIImage *image = [UIImage imageWithCGImage:imageRef scale:self.scale orientation:self.imageOrientation];
CGImageRelease(imageRef);
CGContextRelease(ctx);
free(buffer1.data);
return image;
}
//改变图片的透明度
+ (UIImage *)imageByApplyingAlpha:(CGFloat)alpha image:(UIImage*)image
{
UIGraphicsBeginImageContextWithOptions(image.size, NO, 0.0f);
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGRect area = CGRectMake(0, 0, image.size.width, image.size.height);
CGContextScaleCTM(ctx, 1, -1);
CGContextTranslateCTM(ctx, 0, -area.size.height);
CGContextSetBlendMode(ctx, kCGBlendModeMultiply);
CGContextSetAlpha(ctx, alpha);
CGContextDrawImage(ctx, area, image.CGImage);
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
//根据颜色生成图片
+(UIImage *) ImageWithColor: (UIColor *) color frame:(CGRect)aFrame
{
aFrame = CGRectMake(0, 0, aFrame.size.width, aFrame.size.height);
UIGraphicsBeginImageContext(aFrame.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [color CGColor]);
CGContextFillRect(context, aFrame);
UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return theImage;
}
//修改图片的大小
+(UIImage*) changeSizeByOriginImage:(UIImage *)image scaleToSize:(CGSize)size
{
UIGraphicsBeginImageContext(size); //size 为CGSize类型,即你所需要的图片尺寸
[image drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return scaledImage; //返回的就是已经改变的图片
}
/**
* 保存图片在沙盒,仅仅支持PNG、JPG、JPEG
*
* @param image 传入的图片
* @param imgName 图片的命名
* @param imgType 图片格式
* @param directoryPath 图片存放的路径
*/
+(void)saveImg:(UIImage *)image withImageName:(NSString *)imgName imgType:(NSString *)imgType inDirectory:(NSString *)directoryPath
{
if ([[imgType lowercaseString] isEqualToString:@"png"]) {
NSString *path = [directoryPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.%@",imgName,imgType]];
//返回一个PNG图片
[UIImagePNGRepresentation(image) writeToFile:path atomically:YES];
}else if ([[imgType lowercaseString] isEqualToString:@"jpg"]
|| [[imgType lowercaseString] isEqualToString:@"jpeg"])
{
NSString *path = [directoryPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.%@",imgName,imgType]];
//第二个参数压缩质量(0最大的压缩 1最小的压缩质量)
[UIImageJPEGRepresentation(image, 1.0) writeToFile:path atomically:YES];
}
else
{
NSLog(@"不支持该图片格式");
}
}
/**
* 获取图片上指定点上的颜色
*
* @param point 图片上的一点
*
* @return 颜色
*/
-(UIColor *)getImageColorOnPoint:(CGPoint) point
{
CFDataRef bitmapData = CGDataProviderCopyData(CGImageGetDataProvider(self.CGImage));
//UInt8实际就是unsigned char
const UInt8 *data = CFDataGetBytePtr(bitmapData);
//图片的宽度乘以点的y值得到所在的行的位置,再加上点x值即可得到该点的颜色,
//两者都乘以4的原因是每一个像素点都占据了四个字节的长度,依次序分别是RGBA,即红色、绿色、蓝色值和透明度值。
int index=4*self.size.width*point.y+4*point.x;
UIColor *color = [UIColor colorWithRed:data[index]/255.0 green:data[index+1]/255.0 blue:data[index+2]/255.0 alpha:data[index+3]/255.0];
for (int i = 0; i < 4; i++) {
NSLog(@"%d",data[index+i]);
}
CFRelease(bitmapData);
return color;
}
/**
* 绘制一张图片,图片是由一个圆环包着的,
*
* @param color 圆环的颜色
* @param imgSize 图片的size
*
* @return 图片
*/
-(UIImage *)drawCircularIconWithColor:(UIColor *)color sizeOfImg:(CGSize)imgSize
{
CGFloat lineWidth = 4;
UIGraphicsBeginImageContextWithOptions(imgSize, NO, 1.0);
CGContextRef currentContext = UIGraphicsGetCurrentContext();
//绘制颜色 和 圆形
CGContextAddArc(currentContext, imgSize.width*0.5, imgSize.height*0.5, imgSize.width*0.5 - lineWidth, 0, M_PI*2, 1);
[color set];
CGContextSetLineWidth(currentContext, lineWidth);
CGContextStrokePath(currentContext);
//将图片绘制进去
CGFloat imageW = imgSize.width;
CGFloat imageH = imgSize.height;
CGFloat imageX = (imgSize.width * 0.5 - imageW*0.5); //从中心点出发计算其坐标
CGFloat imageY = (imgSize.height * 0.5 - imageH*0.5);
[self drawInRect:CGRectMake(imageX, imageY, imageW, imageH)];
UIImage *returnImg = UIGraphicsGetImageFromCurrentImageContext();
//从上下文
UIGraphicsEndImageContext();
return returnImg;
}
/**
绘制带有圆弧的图片
*/
- (UIImage *)drawCircularIconWithSize:(CGSize )imgSize withRadius:(CGFloat)radius
{
// //开启上下文
UIGraphicsBeginImageContextWithOptions(imgSize, NO, 0.0);
// //获取绘制圆的半径,宽,高的一个区域
CGFloat width = imgSize.width;
CGFloat height = width;
CGRect rect = CGRectMake(0, 0, width, height);
// //使用UIBerierPath路径裁切,注意:先设置裁切路径,再绘制图像。
UIBezierPath *berzierPath = [UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:radius];
//添加到裁切路径
[berzierPath addClip];
// //将图片绘制到裁切好的区域内
[self drawInRect:rect];
// //从上下文获取当前 绘制成圆形的图片
UIImage *resImage = UIGraphicsGetImageFromCurrentImageContext();
// //关闭上下文
UIGraphicsEndImageContext();
// //开启上下文
// UIGraphicsBeginImageContextWithOptions(imgSize, NO, 1.0);
// //获取上下文
// CGContextRef ctx = UIGraphicsGetCurrentContext();
// //添加一个圆
// CGFloat width = imgSize.width;
// CGFloat height = width;
// CGRect rect = CGRectMake(0, 0, width, height);
// CGContextAddEllipseInRect(ctx, rect);
// //裁剪
// CGContextClip(ctx);
// //将图片绘制到裁切好的区域内
// [self drawInRect:rect];
// //从上下文获取当前 绘制成圆形的图片
// UIImage *resImage = UIGraphicsGetImageFromCurrentImageContext();
// //关闭上下文
// UIGraphicsEndImageContext();
return resImage;
}
/**
* 返回一张图片中颜色最多的那种颜色
*
* @return color
*/
-(UIColor*)getMostColor
{
//第一步 先把图片缩小 加快计算速度. 但越小结果误差可能越大
CGSize thumbSize=CGSizeMake(50, 50);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(NULL,
thumbSize.width,
thumbSize.height,
8,//bits per component
thumbSize.width*4,
colorSpace,
kCGImageAlphaPremultipliedLast);
CGRect drawRect = CGRectMake(0, 0, thumbSize.width, thumbSize.height);
CGContextDrawImage(context, drawRect, self.CGImage);
CGColorSpaceRelease(colorSpace);
//第二步 取每个点的像素值
unsigned char* data = CGBitmapContextGetData (context);
if (data == NULL)
{
CFRelease(context);
return nil;
}
NSCountedSet *cls=[NSCountedSet setWithCapacity:thumbSize.width*thumbSize.height];
for (int x=0; x<thumbSize.width; x++) {
for (int y=0; y<thumbSize.height; y++) {
int offset = 4*(x*y);
// int offset = 4*(x + (thumbSize.width * y));
int red = data[offset];
int green = data[offset+1];
int blue = data[offset+2];
int alpha = data[offset+3];
NSArray *clr=@[@(red),@(green),@(blue),@(alpha)];
//将透明度小于0.1的过滤掉
if (alpha < 20) {
continue;
}
//过滤白色
if (red > 230 && green > 230 && blue > 230) {
continue;
}
//过滤黑色
if (red < 30 && green < 30 && blue < 30) {
continue;
}
[cls addObject:clr];
}
}
CGContextRelease(context);
//第三步 找到出现次数最多的那个颜色
NSEnumerator *enumerator = [cls objectEnumerator];
NSArray *curColor = nil;
NSArray *MaxColor=nil;
NSUInteger MaxCount=0;
while ( (curColor = [enumerator nextObject]) != nil )
{
NSUInteger tmpCount = [cls countForObject:curColor];
if ( tmpCount < MaxCount ) continue;
MaxCount=tmpCount;
MaxColor=curColor;
}
// NSLog(@"The Color is %@ repeats %d",[MaxColor description],MaxCount);
return [UIColor colorWithRed:([MaxColor[0] intValue]/255.0f) green:([MaxColor[1] intValue]/255.0f) blue:([MaxColor[2] intValue]/255.0f) alpha:([MaxColor[3] intValue]/255.0f)];
}
/**
* 根据图片绘制一张带圆环的图片
*
* @param size 绘制之后图片的大小
*
* @return 图片
*/
-(UIImage *)headerWithTorusBySzie:(CGSize)size
{
//头像圆环的宽度
CGFloat lineWidth =5;
UIGraphicsBeginImageContextWithOptions(size, NO, 1.0);
CGContextRef currentCG = UIGraphicsGetCurrentContext();
//画出裁剪范围 为圆形
CGContextSetLineWidth(currentCG, lineWidth);
CGContextAddArc(currentCG, size.width*0.5, size.width*0.5, size.width*0.5 - lineWidth, 0, M_PI *2, 0);
CGContextClip(currentCG);
//绘入图片
UIImage *thisImg = [UIImage changeSizeByOriginImage:self scaleToSize:size];
[thisImg drawAsPatternInRect:CGRectMake(0, 0, size.width, size.height)];
//绘入圆环
[[UIColor colorWithRed:1 green:1 blue:1 alpha:0.7] set];
CGContextAddArc(currentCG, size.width*0.5, size.width*0.5, size.width*0.5 - lineWidth, 0, M_PI *2, 0);
CGContextStrokePath(currentCG);
//保存图片
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
@end
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Category/UILabel+ChangeLineSpaceAndWordSpace.h
================================================
//
// UILabel+ChangeLineSpaceAndWordSpace.h
// AppPark
//
// Created by kongxin on 2018/6/30.
//
#import <UIKit/UIKit.h>
@interface UILabel (ChangeLineSpaceAndWordSpace)
/**
* 字间距
*/
@property (nonatomic,assign)CGFloat characterSpace;
/**
* 行间距
*/
@property (nonatomic,assign)CGFloat lineSpace;
/**
* 关键字
*/
@property (nonatomic,copy)NSString *keywords;
@property (nonatomic,strong)UIFont *keywordsFont;
@property (nonatomic,strong)UIColor *keywordsColor;
/**
* 下划线
*/
@property (nonatomic,copy)NSString *underlineStr;
@property (nonatomic,strong)UIColor *underlineColor;
/**
* 计算label宽高,必须调用
*
* @param maxWidth 最大宽度
*
* @return label的rect
*/
- (CGSize)getLableRectWithMaxWidth:(CGFloat)maxWidth;
@end
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Category/UILabel+ChangeLineSpaceAndWordSpace.m
================================================
//
// UILabel+ChangeLineSpaceAndWordSpace.m
// AppPark
//
// Created by kongxin on 2018/6/30.
//
#import "UILabel+ChangeLineSpaceAndWordSpace.h"
#import <objc/runtime.h>
#import <CoreText/CoreText.h>
@implementation UILabel (ChangeLineSpaceAndWordSpace)
-(CGFloat)characterSpace{
return [objc_getAssociatedObject(self,_cmd) floatValue];
}
-(void)setCharacterSpace:(CGFloat)characterSpace{
objc_setAssociatedObject(self, @selector(characterSpace), @(characterSpace), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
-(CGFloat)lineSpace{
return [objc_getAssociatedObject(self, _cmd) floatValue];
}
-(void)setLineSpace:(CGFloat)lineSpace{
objc_setAssociatedObject(self, @selector(lineSpace), @(lineSpace), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
-(NSString *)keywords{
return objc_getAssociatedObject(self, _cmd);
}
-(void)setKeywords:(NSString *)keywords{
objc_setAssociatedObject(self, @selector(keywords), keywords, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
-(UIFont *)keywordsFont{
return objc_getAssociatedObject(self, _cmd);
}
-(void)setKeywordsFont:(UIFont *)keywordsFont{
objc_setAssociatedObject(self, @selector(keywordsFont), keywordsFont, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
-(UIColor *)keywordsColor{
return objc_getAssociatedObject(self, _cmd);
}
-(void)setKeywordsColor:(UIColor *)keywordsColor{
objc_setAssociatedObject(self, @selector(keywordsColor), keywordsColor, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
-(NSString *)underlineStr{
return objc_getAssociatedObject(self, _cmd);
}
-(void)setUnderlineStr:(NSString *)underlineStr{
objc_setAssociatedObject(self, @selector(underlineStr), underlineStr, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
-(UIColor *)underlineColor{
return objc_getAssociatedObject(self, _cmd);
}
-(void)setUnderlineColor:(UIColor *)underlineColor{
objc_setAssociatedObject(self, @selector(underlineColor), underlineColor, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
/**
* 根据最大宽度计算label宽,高
*
* @param maxWidth 最大宽度
*
* @return rect
*/
- (CGSize)getLableRectWithMaxWidth:(CGFloat)maxWidth{
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc]initWithString:self.text];
[attributedString addAttribute:NSFontAttributeName value:self.font range:NSMakeRange(0,self.text.length)];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc]init];
// paragraphStyle.alignment=NSTextAlignmentCenter;
paragraphStyle.alignment=self.textAlignment;
paragraphStyle.lineBreakMode=self.lineBreakMode;
// 行间距
if(self.lineSpace > 0){
[paragraphStyle setLineSpacing:self.lineSpace];
[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0,self.text.length)];
}
// 字间距
if(self.characterSpace > 0){
long number = self.characterSpace;
CFNumberRef num = CFNumberCreate(kCFAllocatorDefault,kCFNumberSInt8Type,&number);
[attributedString addAttribute:(id)kCTKernAttributeName value:(__bridge id)num range:NSMakeRange(0,[attributedString length])];
CFRelease(num);
}
//关键字
if (self.keywords) {
NSRange itemRange = [self.text rangeOfString:self.keywords];
if (self.keywordsFont) {
[attributedString addAttribute:NSFontAttributeName value:self.keywordsFont range:itemRange];
}
if (self.keywordsColor) {
[attributedString addAttribute:NSForegroundColorAttributeName value:self.keywordsColor range:itemRange];
}
}
//下划线
if (self.underlineStr) {
NSRange itemRange = [self.text rangeOfString:self.underlineStr];
[attributedString addAttribute:NSUnderlineStyleAttributeName value:@(NSUnderlineStyleSingle) range:itemRange];
if (self.underlineColor) {
[attributedString addAttribute:NSUnderlineColorAttributeName value:self.underlineColor range:itemRange];
}
}
self.attributedText = attributedString;
//计算方法一
//计算文本rect,但是发现设置paragraphStyle.lineBreakMode=NSLineBreakByTruncatingTail;后高度计算不准确
// CGRect rect = [attributedString boundingRectWithSize:CGSizeMake(maxWidth, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading context:nil];
// NSLog(@"rect==%@,%f",NSStringFromCGRect(rect),ceil(rect.size.height));
//计算方法二
CGSize maximumLabelSize = CGSizeMake(maxWidth, MAXFLOAT);//labelsize的最大值
CGSize expectSize = [self sizeThatFits:maximumLabelSize];
return expectSize;
}
@end
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Category/UILabel+Extensions.h
================================================
//
// UILabel+Extensions.h
// AppPark
//
// Created by kongxin on 2018/6/28.
//
#import <UIKit/UIKit.h>
/**
* UILabel某一段富文本点击
*/
@protocol YBAttributeTapActionDelegate <NSObject>
@optional
/**
* YBAttributeTapActionDelegate
*
* @param string 点击的字符串
* @param range 点击的字符串range
* @param index 点击的字符在数组中的index
*/
- (void)yb_attributeTapReturnString:(NSString *)string
range:(NSRange)range
index:(NSInteger)index;
@end
@interface YBAttributeModel : NSObject
@property (nonatomic, copy) NSString *str;
@property (nonatomic, assign) NSRange range;
@end
@interface UILabel (Extensions)
/**
设置Label行首缩进
@param length 缩进长度
@param text 缩进文本
@return 缩进完成字符串
*/
- (NSAttributedString *)addFirstLineHeadIndentWithIndentLength:(CGFloat)length indenText:(NSString *)text;
/**
添加删除线
@param text 删除线文本
@return 添加完成的文本
*/
- (NSMutableAttributedString *)addDeletingLineWithText:(NSString *)text deletingLinecolor:(UIColor *)color;
/**
改变一个label其中几个字的大小跟颜色
@param NeedChangeString 需要改变的字符串
@param font 大小
@param color 颜色
@param range 改变范围
@return 改变后的字符串
*/
- (NSMutableAttributedString *)addAttributedStringWithNeedChangeString:(NSString *)NeedChangeString withFont:(UIFont *)font withColor:(UIColor *)color withRange:(NSRange)range;
+ (CGFloat)getHeightByWidth:(CGFloat)width title:(NSString *)title font:(UIFont*)font lineSpace:(CGFloat)lineSpace;
+ (CGFloat)getHeightByWidth:(CGFloat)width title:(NSString *)title font:(UIFont*)font;
+ (CGFloat)getWidthWithTitle:(NSString *)title font:(UIFont *)font;
+ (CGFloat)getHeightByWidth:(CGFloat)width title:(NSString *)title font:(UIFont*)font lineSpace:(CGFloat)lineSpace groupSpace:(CGFloat)groupSpace;
/**
* 给文本添加点击事件Block回调
*
* @param strings 需要添加的字符串数组
* @param tapClick 点击事件回调
*/
//- (void)yb_addAttributeTapActionWithStrings:(NSArray <NSString *> *)strings
// tapClicked:(void (^) (NSString *string , NSRange range , NSInteger index))tapClick;
/**
* 给文本添加点击事件delegate回调
*
* @param strings 需要添加的字符串数组
* @param delegate delegate
*/
//- (void)yb_addAttributeTapActionWithStrings:(NSArray <NSString *> *)strings
// delegate:(id <YBAttributeTapActionDelegate> )delegate;
@end
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Category/UILabel+Extensions.m
================================================
//
// UILabel+Extensions.m
// AppPark
//
// Created by kongxin on 2018/6/28.
//
#import "UILabel+Extensions.h"
#import <objc/runtime.h>
#import <CoreText/CoreText.h>
#import <Foundation/Foundation.h>
@implementation UILabel (Extensions)
- (NSAttributedString *)addFirstLineHeadIndentWithIndentLength:(CGFloat)length indenText:(NSString *)text
{
NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStyle alloc] init];
paraStyle.alignment = NSTextAlignmentLeft; //对齐
paraStyle.headIndent = 0.0f;//行首缩进
CGFloat emptylen =length;
paraStyle.firstLineHeadIndent = emptylen;//首行缩进
NSAttributedString *attrText = [[NSAttributedString alloc] initWithString:text attributes:@{NSParagraphStyleAttributeName:paraStyle}];
return attrText;
}
- (NSMutableAttributedString *)addDeletingLineWithText:(NSString *)text deletingLinecolor:(UIColor *)color
{
NSString *oldPrice =text;
NSUInteger length = [oldPrice length];
NSMutableAttributedString *attri = [[NSMutableAttributedString alloc] initWithString:oldPrice];
[attri addAttribute:NSStrikethroughStyleAttributeName value:@(NSUnderlinePatternSolid | NSUnderlineStyleSingle) range:NSMakeRange(0, length )];
[attri addAttribute:NSStrikethroughColorAttributeName value:color range:NSMakeRange(0, length)];
return attri;
}
- (NSMutableAttributedString *)addAttributedStringWithNeedChangeString:(NSString *)NeedChangeString withFont:(UIFont *)font withColor:(UIColor *)color withRange:(NSRange)range;
{
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:NeedChangeString];
[attributedString addAttributes:@{NSForegroundColorAttributeName:color, NSFontAttributeName:font} range:range];
return attributedString;
}
+ (CGFloat)getHeightByWidth:(CGFloat)width title:(NSString *)title font:(UIFont*)font lineSpace:(CGFloat)lineSpace
{
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, width, 0)];
label.text = title;
label.font = font;
label.numberOfLines = 0;
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:title];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle setLineSpacing:lineSpace];
[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [title length])];
label.attributedText = attributedString;
[label sizeToFit];
CGFloat height = label.frame.size.height;
return height;
}
+ (CGFloat)getHeightByWidth:(CGFloat)width title:(NSString *)title font:(UIFont*)font lineSpace:(CGFloat)lineSpace groupSpace:(CGFloat)groupSpace{
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, width, 0)];
label.text = title;
label.font = font;
label.numberOfLines = 0;
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:title];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle setLineSpacing:lineSpace];
[paragraphStyle setParagraphSpacing:groupSpace];
[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [title length])];
label.attributedText = attributedString;
[label sizeToFit];
CGFloat height = label.frame.size.height;
return height;
}
+ (CGFloat)getHeightByWidth:(CGFloat)width title:(NSString *)title font:(UIFont*)font
{
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, width, 0)];
label.text = title;
label.font = font;
label.numberOfLines = 0;
[label sizeToFit];
CGFloat height = label.frame.size.height;
return height;
}
+ (CGFloat)getWidthWithTitle:(NSString *)title font:(UIFont *)font {
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 1000, 0)];
label.text = title;
label.font = font;
[label sizeToFit];
return label.frame.size.width;
}
#pragma mark - AssociatedObjects
//- (NSMutableArray *)attributeStrings
//{
// return objc_getAssociatedObject(self, _cmd);
//}
//
//- (void)setAttributeStrings:(NSMutableArray *)attributeStrings
//{
// objc_setAssociatedObject(self, @selector(attributeStrings), attributeStrings, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
//}
//
//- (void (^)(NSString *, NSRange, NSInteger))tapBlock
//{
// return objc_getAssociatedObject(self, _cmd);
//}
//
//- (void)setTapBlock:(void (^)(NSString *, NSRange, NSInteger))tapBlock
//{
// objc_setAssociatedObject(self, @selector(tapBlock), tapBlock, OBJC_ASSOCIATION_COPY_NONATOMIC);
//}
//
//- (id<YBAttributeTapActionDelegate>)delegate
//{
// return objc_getAssociatedObject(self, _cmd);
//}
//
//- (void)setDelegate:(id<YBAttributeTapActionDelegate>)delegate
//{
// objc_setAssociatedObject(self, @selector(delegate), delegate, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
//}
#pragma mark - mainFunction
//- (void)yb_addAttributeTapActionWithStrings:(NSArray <NSString *> *)strings tapClicked:(void (^) (NSString *string , NSRange range , NSInteger index))tapClick
//{
// [self yb_getRangesWithStrings:strings];
//
// if (self.tapBlock != tapClick) {
// self.tapBlock = tapClick;
// }
//}
//- (void)yb_addAttributeTapActionWithStrings:(NSArray <NSString *> *)strings
// delegate:(id <YBAttributeTapActionDelegate> )delegate
//{
// [self yb_getRangesWithStrings:strings];
//
// if (self.delegate != delegate) {
// self.delegate = delegate;
// }
//}
#pragma mark - touchAction
//- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
//{
// UITouch *touch = [touches anyObject];
//
// CGPoint point = [touch locationInView:self];
//
// __weak typeof(self) weakSelf = self;
//
// [self yb_getTapFrameWithTouchPoint:point result:^(NSString *string, NSRange range, NSInteger index) {
//
// if (weakSelf.tapBlock) {
// weakSelf.tapBlock (string , range , index);
// }
//
// if (weakSelf.delegate && [weakSelf.delegate respondsToSelector:@selector(yb_attributeTapReturnString:range:index:)]) {
// [weakSelf.delegate yb_attributeTapReturnString:string range:range index:index];
// }
//
// }];
//}
//- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
// if ([self yb_getTapFrameWithTouchPoint:point result:nil]) {
// return self;
// }
// return nil;
//}
#pragma mark - getTapFrame
//- (BOOL)yb_getTapFrameWithTouchPoint:(CGPoint)point result:(void (^) (NSString *string , NSRange range , NSInteger index))resultBlock
//{
// CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)self.attributedText);
//
// CGMutablePathRef Path = CGPathCreateMutable();
//
// CGPathAddRect(Path, NULL, self.bounds);
//
// CTFrameRef frame = CTFramesetterCreateFrame(framesetter, CFRangeMake(0, 0), Path, NULL);
//
// CFArrayRef lines = CTFrameGetLines(frame);
//
// if (!lines) {
// return NO;
// }
//
// CFIndex count = CFArrayGetCount(lines);
//
// CGPoint origins[count];
//
// CTFrameGetLineOrigins(frame, CFRangeMake(0, 0), origins);
//
// CGAffineTransform transform = [self yb_transformForCoreText];
//
// CGFloat verticalOffset = 0;
//
// for (CFIndex i = 0; i < count; i++) {
// CGPoint linePoint = origins[i];
//
// CTLineRef line = CFArrayGetValueAtIndex(lines, i);
//
// CGRect flippedRect = [self yb_getLineBounds:line point:linePoint];
//
// CGRect rect = CGRectApplyAffineTransform(flippedRect, transform);
//
// rect = CGRectInset(rect, 0, 0);
//
// rect = CGRectOffset(rect, 0, verticalOffset);
//
// if (CGRectContainsPoint(rect, point)) {
//
// CGPoint relativePoint = CGPointMake(point.x - CGRectGetMinX(rect), point.y - CGRectGetMinY(rect));
//
// CFIndex index = CTLineGetStringIndexForPosition(line, relativePoint);
//
// CGFloat offset;
//
// CTLineGetOffsetForStringIndex(line, index, &offset);
//
// if (offset > relativePoint.x) {
// index = index - 1;
// }
//
// NSInteger link_count = self.attributeStrings.count;
//
// for (int j = 0; j < link_count; j++) {
//
// YBAttributeModel *model = self.attributeStrings[j];
//
// NSRange link_range = model.range;
// if (NSLocationInRange(index, link_range)) {
// if (resultBlock) {
// resultBlock (model.str , model.range , (NSInteger)j);
// }
// return YES;
// }
// }
// }
// }
// return NO;
//}
//
//- (CGAffineTransform)yb_transformForCoreText
//{
// return CGAffineTransformScale(CGAffineTransformMakeTranslation(0, self.bounds.size.height), 1.f, -1.f);
//}
//
//- (CGRect)yb_getLineBounds:(CTLineRef)line point:(CGPoint)point
//{
// CGFloat ascent = 0.0f;
// CGFloat descent = 0.0f;
// CGFloat leading = 0.0f;
// CGFloat width = (CGFloat)CTLineGetTypographicBounds(line, &ascent, &descent, &leading);
// CGFloat height = ascent + descent;
//
// return CGRectMake(point.x, point.y - descent, width, height);
//}
//
//#pragma mark - getRange
//- (void)yb_getRangesWithStrings:(NSArray <NSString *> *)strings
//{
// __block NSString *totalStr = self.attributedText.string;
//
// self.attributeStrings = [NSMutableArray array];
//
// __weak typeof(self) weakSelf = self;
//
// [strings enumerateObjectsUsingBlock:^(NSString * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
//
// NSRange range = [totalStr rangeOfString:obj];
//
// if (range.length != 0) {
// YBAttributeModel *model = [YBAttributeModel new];
// model.range = range;
// model.str = obj;
// [weakSelf.attributeStrings addObject:model];
//
// totalStr = [totalStr stringByReplacingCharactersInRange:range withString:[weakSelf yb_getStringWithRange:range]];
// }
// }];
//}
//
//- (NSString *)yb_getStringWithRange:(NSRange)range
//{
// NSMutableString *string = [NSMutableString string];
// for (int i = 0; i < range.length ; i++) {
// [string appendString:@" "];
// }
// return string;
//}
@end
@implementation YBAttributeModel
@end
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Category/UIView+Extension.h
================================================
//
// UIView+Extension.h
//
// Created by lanou3g on 15/8/3.
// Copyright (c) 2015年 7Kir. All rights reserved.
//
#import <UIKit/UIKit.h>
#define kRadianToDegrees(radian) (radian * M_PI )/(180.0)
@interface UIView (Extension)
@property (nonatomic, assign) CGFloat x;
@property (nonatomic, assign) CGFloat y;
@property (nonatomic, assign) CGFloat top;
@property (nonatomic, assign) CGFloat bottom;
@property (nonatomic, assign) CGFloat left;
@property (nonatomic, assign) CGFloat right;
@property (nonatomic, assign) CGFloat centerX;
@property (nonatomic, assign) CGFloat centerY;
@property (nonatomic, assign) CGFloat changeWidth;
@property (nonatomic, assign) CGFloat changeHeight;
@property (nonatomic, assign) CGSize size;
@property (nonatomic, assign) CGPoint origin;
// xib 文件名字和类名字要一样
+(id) viewInstance;
// 设置阴影
- (UIView *)setShadowWithColor:(UIColor *)color size:(CGSize)size
borderColor:(UIColor *)borderColor;
- (UIView *)setBorderColor:(UIColor *)borderColor
width:(CGFloat)borderWidth;
- (UIView *) setCornerRadius:(CGFloat)cornerRadius;
- (UIView *) rotateWithAngle:(float) angle;
#pragma mark- 删除当前视图的所有子视图
- (void)removeAllSubviews;
#pragma mark- 获取当前视图的控制器
- (UIViewController*)viewController;
@end
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Category/UIView+Extension.m
================================================
//
// UIView+Extension.m
//
// Created by lanou3g on 15/8/3.
// Copyright (c) 2015年 7Kir. All rights reserved.
//
#import "UIView+Extension.h"
@implementation UIView (Extension)
- (void)setX:(CGFloat)x
{
CGRect frame = self.frame;
frame.origin.x = x;
self.frame = frame;
}
- (CGFloat)x
{
return self.frame.origin.x;
}
- (void)setY:(CGFloat)y
{
CGRect frame = self.frame;
frame.origin.y = y;
self.frame = frame;
}
- (CGFloat)y
{
return self.frame.origin.y;
}
- (void)setTop:(CGFloat)top
{
CGRect frame = self.frame;
frame.origin.x = top;
self.frame = frame;
}
- (CGFloat)top
{
return self.frame.origin.y;
}
- (CGFloat)bottom {
return self.frame.origin.y + self.frame.size.height;
}
- (void)setBottom:(CGFloat)bottom {
CGRect frame = self.frame;
frame.origin.y = bottom - frame.size.height;
self.frame = frame;
}
- (void)setCenterX:(CGFloat)centerX
{
CGPoint center = self.center;
center.x = centerX;
self.center = center;
}
- (CGFloat)centerX
{
return self.center.x;
}
- (void)setCenterY:(CGFloat)centerY
{
CGPoint center = self.center;
center.y = centerY;
self.center = center;
}
- (CGFloat)centerY
{
return self.center.y;
}
- (void)setChangeWidth:(CGFloat)changeWidth
{
CGRect frame = self.frame;
frame.size.width = changeWidth;
self.frame = frame;
}
- (CGFloat)changeWidth
{
return self.frame.size.width;
}
- (void)setChangeHeight:(CGFloat)changeHeight
{
CGRect frame = self.frame;
frame.size.height = changeHeight;
self.frame = frame;
}
- (CGFloat)changeHeight
{
return self.frame.size.height;
}
-(void)setLeft:(CGFloat)left
{
CGRect frame = self.frame;
frame.origin.x = left;
self.frame = frame;
}
-(CGFloat)left
{
return self.frame.origin.x;
}
- (void)setRight:(CGFloat)right
{
CGRect frame = self.frame;
frame.origin.x = right - frame.size.width;
self.frame = frame;
}
-(CGFloat)right
{
return self.frame.origin.x + self.frame.size.width;
}
- (void)setSize:(CGSize)size
{
CGRect frame = self.frame;
frame.size = size;
self.frame = frame;
}
- (CGSize)size
{
return self.frame.size;
}
- (void)setOrigin:(CGPoint)origin
{
CGRect frame = self.frame;
frame.origin = origin;
self.frame = frame;
}
- (CGPoint)origin
{
return self.frame.origin;
}
+(id) viewInstance
{
NSString *clazz = NSStringFromClass(self);
NSString *path = [[NSBundle mainBundle] pathForResource:clazz ofType:@"nib"];
if (path) {
NSArray *tmp = [[NSBundle mainBundle] loadNibNamed:clazz owner:nil options:nil];
UIView *view = [tmp lastObject];
return view;
}
UIView *view = [[NSClassFromString(clazz) alloc] init];
return view;
}
- (UIView *)setShadowWithColor:(UIColor *)color size:(CGSize)size borderColor:(UIColor *)borderColor
{
self.layer.borderWidth = 0.1f;
self.layer.shadowColor = color.CGColor;
self.layer.borderColor = borderColor.CGColor;
self.layer.shadowOffset = size;
self.layer.shadowOpacity = 0.6f;
return self;
}
- (UIView *)setBorderColor:(UIColor *)borderColor
width:(CGFloat)borderWidth
{
self.layer.borderWidth = borderWidth;
self.layer.borderColor = borderColor.CGColor;
return self;
}
- (UIView *) setCornerRadius:(CGFloat)cornerRadius
{
self.layer.masksToBounds =YES;
self.layer.cornerRadius = cornerRadius;
return self;
}
-(UIView *) rotateWithAngle:(float) angle
{
if (![self respondsToSelector:@selector(layer)]) {
NSLog(@"This view(%@) don't have layer property. Can't rotate.", self);
return self;
}
self.layer.anchorPoint = CGPointMake(0.5, 0.5);
[UIView animateWithDuration:0.2 animations:^{
self.transform = CGAffineTransformRotate(self.transform, kRadianToDegrees(angle));
}];
return self;
}
#pragma mark- 删除当前视图的所有子视图
- (void)removeAllSubviews
{
while (self.subviews.count) {
UIView* child = self.subviews.lastObject;
[child removeFromSuperview];
}
}
#pragma mark- 获取当前视图的控制器
- (UIViewController*)viewController
{
for (UIView* next = [self superview]; next; next = next.superview) {
UIResponder* nextResponder = [next nextResponder];
if ([nextResponder isKindOfClass:[UIViewController class]]) {
return (UIViewController*)nextResponder;
}
}
return nil;
}
@end
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Category/UIView+Helper.h
================================================
//
// UIView+Helper.h
// Qicai
//
// Created by eims on 15/6/6.
// Copyright (c) 2015年 7ien. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface UIView (Helper)
@property (nonatomic, assign, readonly, getter=getMinY) CGFloat minY;
@property (nonatomic, assign, readonly, getter=getMidY) CGFloat midY;
@property (nonatomic, assign, readonly, getter=getMaxY) CGFloat maxY;
@property (nonatomic, assign, readonly, getter=getMinX) CGFloat minX;
@property (nonatomic, assign, readonly, getter=getMidX) CGFloat midX;
@property (nonatomic, assign, readonly, getter=getMaxX) CGFloat maxX;
@property (nonatomic, assign, readonly, getter=getWidth) CGFloat width;
@property (nonatomic, assign, readonly, getter=getHeight) CGFloat height;
@end
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Category/UIView+Helper.m
================================================
//
// UIView+Helper.m
// Qicai
//
// Created by eims on 15/6/6.
// Copyright (c) 2015年 7ien. All rights reserved.
//
#import "UIView+Helper.h"
@implementation UIView (Helper)
- (CGFloat)getMinY {
return CGRectGetMinY(self.frame);
}
- (CGFloat)getMidY {
return CGRectGetMidY(self.frame);
}
- (CGFloat)getMaxY {
return CGRectGetMaxY(self.frame);
}
- (CGFloat)getMinX {
return CGRectGetMinX(self.frame);
}
- (CGFloat)getMidX {
return CGRectGetMidX(self.frame);
}
- (CGFloat)getMaxX {
return CGRectGetMaxX(self.frame);
}
- (CGFloat)getWidth {
return CGRectGetWidth(self.frame);
}
- (CGFloat)getHeight {
return CGRectGetHeight(self.frame);
}
@end
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Cell/ReserveEvluateCell.h
================================================
//
// ReserveEvluateCell.h
// AppPark
//
// Created by 池康 on 2017/12/14.
//
#import <UIKit/UIKit.h>
#import "EvaluateModel.h"
@protocol ReserveEvluateCellDelegate;
@interface ReserveEvluateCell : UITableViewCell
/**
头像
*/
@property (nonatomic , strong) UIImageView *headImgView;
/**
用户名称
*/
@property (nonatomic , strong) UILabel *userNameLab;
/**
评论时间
*/
@property (nonatomic , strong) UILabel *timeLab;
/**
酒店套房类型
*/
@property (nonatomic , strong) UILabel *roomTypeLab;
/**
评价分数
*/
@property (nonatomic , strong) UILabel *gradeLab;
/**
评论内容
*/
@property (nonatomic , strong) UILabel *contentLab;
/**
图片视图
*/
@property (nonatomic , strong) UIView *photoView;
/**
图标
*/
@property (nonatomic , strong) UIImageView *topImgView;
/**
酒店回复视图
*/
@property (nonatomic , strong) UIView *replyView;
/**
酒店回复
*/
@property (nonatomic , strong) UILabel *replyLab;
/**
底部的线
*/
@property (nonatomic , strong) UILabel *lineLab;
@property (nonatomic , weak) id <ReserveEvluateCellDelegate >delegate;
@property (nonatomic , strong)EvaluateModel *model;
/**
1:代表店铺优化的评价
*/
@property (nonatomic , assign) NSInteger cellType;
@end
@protocol ReserveEvluateCellDelegate <NSObject>
@optional
- (void)didSelectedPhotoView:(ReserveEvluateCell *)cell withImgIndex:(NSInteger)index;
@end
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Cell/ReserveEvluateCell.m
================================================
//
// ReserveEvluateCell.m
// AppPark
//
// Created by 池康 on 2017/12/14.
//
#import "ReserveEvluateCell.h"
@implementation ReserveEvluateCell
- (void)awakeFromNib {
[super awakeFromNib];
// Initialization code
}
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
self.clipsToBounds = YES;
//头像
_headImgView = [[UIImageView alloc]initWithFrame:CGRectMake(10, 22, 24, 24)];
_headImgView.image = [[UIImage imageNamed:@"icon_user"] drawCircularIconWithSize:CGSizeMake(22, 22) withRadius:12];
[self.contentView addSubview:_headImgView];
//用户名称
_userNameLab = [UITool createLabelWithFrame:CGRectMake(44, 18, 200, 18) backgroundColor:[UIColor clearColor] textColor:kColor_darkBlackColor textSize:14 alignment:NSTextAlignmentLeft lines:1];
_userNameLab.text = @"hahahahaha";
[self.contentView addSubview:_userNameLab];
//时间
_timeLab = [UITool createLabelWithFrame:CGRectMake(44, 36, kScreenWidth-80, 14) backgroundColor:[UIColor clearColor] textColor:kColor_GrayColor textSize:12 alignment:NSTextAlignmentLeft lines:1];
_timeLab.text = @"2017/09/02 厨房清洁 | 上门服务";
[self.contentView addSubview:_timeLab];
//分数
UIImageView *icon_scoring = [[UIImageView alloc]initWithImage:kImage_Name(@"icon-scoring")];
icon_scoring.frame = CGRectMake(kScreenWidth-37, -1, 27, 24);
[self.contentView addSubview:icon_scoring];
_gradeLab = [UITool createLabelWithFrame:CGRectMake(kScreenWidth-37, -1, 27, 17) backgroundColor:[UIColor clearColor] textColor:[UIColor whiteColor] textSize:12 alignment:NSTextAlignmentCenter lines:1];
_gradeLab.text = @"5.0";
[self.contentView addSubview:_gradeLab];
//评论内容
NSString *str = @"非常好,干净,地理位置好。附近很安静,适合散步。离宝能太古城很近,电视节目也很多。";
CGSize size = [AppMethods sizeWithFont:[UIFont systemFontOfSize:14] Str:str withMaxWidth:kScreenWidth-54];
_contentLab = [UITool createLabelWithFrame:CGRectMake(44, _timeLab.maxY+10, kScreenWidth-54, size.height+3) backgroundColor:[UIColor clearColor] textColor:kColor_darkBlackColor textSize:14 alignment:NSTextAlignmentLeft lines:0];
_contentLab.text = str;
[self.contentView addSubview:_contentLab];
_photoView = [[UIView alloc]initWithFrame:CGRectMake(44, _contentLab.maxY+6, kScreenWidth-54, 0)];
_photoView.userInteractionEnabled = YES;
[self.contentView addSubview:_photoView];
//回复内容
_replyView = [[UIView alloc]initWithFrame:CGRectMake(44, _photoView.maxY+20, kScreenWidth-54,0)];
_replyView.clipsToBounds = YES;
_replyView.backgroundColor = kColor_bgViewColor;
[self.contentView addSubview:_replyView];
_replyLab = [UITool createLabelWithFrame:CGRectMake(10, 10, _replyView.width-20,0) backgroundColor:kColor_bgViewColor textColor:UIColorFromRGB(0x878787) textSize:14 alignment:NSTextAlignmentLeft lines:0];
[_replyView addSubview:_replyLab];
//图标
_topImgView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"arrow_top"]];
_topImgView.frame = CGRectMake(44+30, _replyView.minY-8, 15, 8);
_topImgView.hidden = YES;
[self.contentView addSubview:_topImgView];
_lineLab = [UITool lineLabWithFrame:CGRectMake(10, _replyLab.maxY + 10, kScreenWidth-10, 1)];
_lineLab.backgroundColor = kColor_bgHeaderViewColor;
[self.contentView addSubview:_lineLab];
}
return self;
}
//重新布置
- (void)layoutSubviews
{
}
- (void)setModel:(EvaluateModel *)model
{
_model = model;
_gradeLab.text = [NSString stringWithFormat:@"%@",model.totalScore];
_topImgView.hidden = YES;
_photoView.hidden = YES;
_replyView.hidden = YES;
_gradeLab.text = [NSString stringWithFormat:@"%.1f",[model.totalScore floatValue]];
[_headImgView sd_setImageWithURL:[NSURL URLWithString:model.memberHeadUrl] placeholderImage:[UIImage imageNamed:@"icon_user"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
_headImgView.image = [image drawCircularIconWithSize:CGSizeMake(24, 24) withRadius:12];
}];
_userNameLab.text = model.memberName;
_timeLab.text = [NSString stringWithFormat:@"%@ %@",model.commTime,model.regular];
if (self.cellType == 1) {
_timeLab.text = [NSString stringWithFormat:@"%@",model.commTime];
}
//评论内容
NSString *commContent = [NSString jsonUtils:model.commContent];
CGSize commContentSzie = [AppMethods sizeWithFont:[UIFont systemFontOfSize:14] Str:commContent withMaxWidth:kScreenWidth-54];
_contentLab.text = commContent;
//
//是否有图片
NSArray *picList = model.picList;
if (commContent.length == 0) {
[_contentLab setChangeHeight:0];
_photoView.mj_y = _contentLab.maxY ;
}else{
[_contentLab setChangeHeight:commContentSzie.height];
_photoView.mj_y = _contentLab.maxY+ 6 ;
}
//删除所有图片子视图
for (UIView *subViews in _photoView.subviews) {
[subViews removeFromSuperview];
}
if (picList.count > 0) {
_photoView.hidden = NO;
// 图片宽和高
CGFloat pgotoW = 80;
//有图片
if (picList.count <=3) {
//小于等于三张
[_photoView setChangeHeight:pgotoW];
}else if (picList.count > 3 && picList.count<=6){
//小于等于6张大于三张
[_photoView setChangeHeight:pgotoW + pgotoW + 4];
}else{
//大于6张,小于等于9张
[_photoView setChangeHeight:pgotoW + pgotoW + pgotoW + 4 + 4];
}
for (int i = 0; i<picList.count; i++) {
UIImageView *photoImgView = [[UIImageView alloc]init];
photoImgView.frame = CGRectMake((pgotoW+4)*(i%3), (pgotoW+4) *(i/3), pgotoW, pgotoW);
[photoImgView sd_setImageWithURL:[NSURL URLWithString:picList[i][@"picUrl"]] placeholderImage:[UIImage imageNamed:@"thumb"]];
photoImgView.tag = i + 1;
photoImgView.userInteractionEnabled = YES;
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapPhotoClick:)];
[photoImgView addGestureRecognizer:tap];
[_photoView addSubview:photoImgView];
}
}else{
//没图片
[_photoView setChangeHeight:0];
}
//是否商家回复了
NSString *replyContent = [NSString stringWithFormat:@"商家回复:%@",[NSString jsonUtils:model.replyContent]];
if (replyContent.length > 5) {
//有回复
if (picList.count == 0) {
_replyView.mj_y = _contentLab.maxY + 20;
}else{
_replyView.mj_y = _photoView.maxY + 20;
}
_topImgView.hidden = NO;
_replyView.hidden = NO;
CGSize replyContentSzie = [AppMethods sizeWithFont:[UIFont systemFontOfSize:14] Str:replyContent withMaxWidth:kScreenWidth-74];
[_replyLab setChangeHeight:replyContentSzie.height];
[_replyView setChangeHeight:_replyLab.height + 20];
_topImgView.mj_y = _replyView.minY-8;
NSMutableAttributedString *replyStr = [AppDefaultUtil returnStringColor:replyContent rang:NSMakeRange(5, replyContent.length-5) color:kColor_ReplyColor];
_replyLab.attributedText = replyStr;
}else
{
_topImgView.hidden = YES;
_replyView.hidden = YES;
[_replyView setChangeHeight:0];
}
_lineLab.mj_y = model.cellHeight - 1;
}
#pragma mark -控制方法
- (void)btnClick:(UIButton *)btn
{
}
- (void)tapPhotoClick:(UITapGestureRecognizer *)tap
{
NSInteger tag = tap.view.tag;
if ([self.delegate respondsToSelector:@selector(didSelectedPhotoView:withImgIndex:)]) {
[self.delegate didSelectedPhotoView:self withImgIndex:tag];
}
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
@end
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Cell/TakeawayProductCardCell.h
================================================
//
// TakeawayProductCardCell.h
// AppPark
//
// Created by 池康 on 2018/7/16.
//
#import <UIKit/UIKit.h>
@interface TakeawayProductCardCell : UITableViewCell
/// 产品图
@property (nonatomic,strong) UIImageView *productImgView;
/// 产品标题
@property (nonatomic,strong) UILabel *productNameLabel;
/// 月售
@property (nonatomic,strong) UILabel *monthlySaleLabel;
/// 赞
@property (nonatomic,strong) UILabel *fabulousCountLabel;
/// 价格
@property (nonatomic,strong) UILabel *priceLabel;
/// 辣度背景
@property (nonatomic,strong) UIView *spicypBgView;
/// 原价
@property (nonatomic,strong) UILabel *originalPriceLabel;
/// 折扣
@property (nonatomic,strong) UILabel *discountLabel;
/// 网友最爱,新品等产品类型
@property (nonatomic,strong) UIImageView *classImgView;
@property (nonatomic,strong) UIView *lineView;
/// 添加按钮
@property (nonatomic,strong) UIButton *addBT;
/// 数量
@property (nonatomic,strong) UILabel *countLab;
/// 减少按钮
@property (nonatomic,strong) UIButton *reduceBT;
/// 选规格
@property (nonatomic,strong) UIButton *specificationBT;
/// 售罄 or 非可售时间
@property (nonatomic,strong) UILabel *sellOutLab;
/// ⚠️图标
@property (nonatomic,strong) UIImageView *warningIcon;
@end
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Cell/TakeawayProductCardCell.m
================================================
//
// TakeawayProductCardCell.m
// AppPark
//
// Created by 池康 on 2018/7/16.
//
#import "TakeawayProductCardCell.h"
@interface TakeawayProductCardCell()
{
NSInteger _count;//数据
}
@end
@implementation TakeawayProductCardCell
- (void)awakeFromNib {
[super awakeFromNib];
// Initialization code
}
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
if (self=[super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
[self setupViews];
}
return self;
}
- (void)setupViews
{
_count = 0;
_productImgView = [[UIImageView alloc] init];
[self.contentView addSubview:_productImgView];
_productImgView.image = [UIImage imageNamed:@"food"];
[_productImgView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(10);
make.top.mas_equalTo(10);
make.right.mas_equalTo(-10);
make.height.mas_equalTo(4.0*(takeawayRight_W-20)/7);
}];
//标记
//lab_np@3x:新品,lab_like@2x:网友最爱,lab_red@2x:老板推荐,lab_sie@2x:招牌,
_classImgView = [[UIImageView alloc] init];
_classImgView.image = kImage_Name(@"lab_like");
[self.contentView addSubview: _classImgView];
[ _classImgView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(_productImgView);
make.top.mas_equalTo(_productImgView.mas_bottom).offset(7);
make.height.mas_equalTo(14);
make.width.mas_equalTo(_classImgView.image.size.width);
}];
//lab_np@3x:新品,lab_like@2x:网友最爱,lab_red@2x:老板推荐,lab_sie@2x:招牌,
NSMutableAttributedString *str = [AppDefaultUtil returnLineSpacingWithStr:@" 这里是标题20字以内,最多两行,这里是标题20字以内,最多两行" withLineSpacing:4 withTextAlignmentCenter:NSTextAlignmentLeft];
CGSize size = [AppMethods sizeAttributedWithFont:kFont(14) Str:str withMaxWidth:takeawayRight_W-20];
CGFloat height = 20;
if (size.height > 20) {
height = 40;
}
_productNameLabel = [[UILabel alloc] init];
_productNameLabel.attributedText = str;
_productNameLabel.textColor = RGBA(51, 51, 51, 1);
_productNameLabel.font = kFont(14);
_productNameLabel.numberOfLines = 2;
[self.contentView addSubview:_productNameLabel];
[_productNameLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_offset(10);
make.top.mas_equalTo(_productImgView.mas_bottom).offset(4);
make.right.mas_equalTo(-10);
make.height.mas_equalTo(height);
}];
_monthlySaleLabel = [[UILabel alloc] init];
_monthlySaleLabel.text = @"月售121";
_monthlySaleLabel.font = kFontNameSize(10);
_monthlySaleLabel.textColor = RGB(102, 102, 102);
[self.contentView addSubview:_monthlySaleLabel];
[_monthlySaleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(_productNameLabel);
make.top.mas_equalTo(_productNameLabel.mas_bottom).offset(8);
make.height.mas_equalTo(10);
}];
UIView *lineView = [[UIView alloc] init];
lineView.backgroundColor = RGB(226, 226, 226);
[self.contentView addSubview:lineView];
[lineView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(_monthlySaleLabel.mas_right).offset(6);
make.centerY.mas_equalTo(_monthlySaleLabel);
make.width.mas_equalTo(1);
make.height.mas_equalTo(6);
}];
_fabulousCountLabel = [[UILabel alloc] init];
_fabulousCountLabel.text = @"赞12";
_fabulousCountLabel.font = kFontNameSize(10);
_fabulousCountLabel.textColor = RGB(102, 102, 102);
[self.contentView addSubview:_fabulousCountLabel];
[_fabulousCountLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(lineView.mas_right).offset(8);
make.centerY.mas_equalTo(lineView);
}];
_spicypBgView = [[UIView alloc] init];
_spicypBgView.backgroundColor = [UIColor clearColor];
[self.contentView addSubview:_spicypBgView];
[_spicypBgView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(_fabulousCountLabel.mas_right).offset(5);
make.centerY.mas_equalTo(_fabulousCountLabel);
make.height.mas_equalTo(10);
make.width.mas_equalTo(4+2+4+2+4);
}];
for (NSInteger i = 0; i < 3; i ++) {
UIImageView *starImgView = [[UIImageView alloc] initWithFrame:CGRectMake(i * 6, 0, 4, 10)];
starImgView.image = [UIImage imageNamed:@"icon_chili"];
[_spicypBgView addSubview:starImgView];
}
//优惠后的价格
_priceLabel = [[UILabel alloc] init];
_priceLabel.text = @"¥28";
_priceLabel.font = kFontNameSize(14);
_priceLabel.textColor = RGB(246, 90, 66);
[self.contentView addSubview: _priceLabel];
[ _priceLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(_productNameLabel);
make.top.mas_equalTo(_productImgView.mas_bottom).offset(76);
make.height.mas_equalTo(14);
}];
_originalPriceLabel = [[UILabel alloc] init];
_originalPriceLabel.font = kFontNameSize(12);
_originalPriceLabel.textColor = RGB(153, 153, 153);
NSString *oldPrice = @"¥12";
NSMutableAttributedString *attri = [_originalPriceLabel addDeletingLineWithText:oldPrice deletingLinecolor:RGB(153, 153, 153)];
[_originalPriceLabel setAttributedText:attri];
[self.contentView addSubview: _originalPriceLabel];
[ _originalPriceLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(_priceLabel.mas_right).offset(6);
make.centerY.mas_equalTo(_priceLabel);
make.height.mas_equalTo(14);
}];
UIImageView *discountImgView = [[UIImageView alloc] init];
discountImgView.image = [UIImage imageNamed:@"icon_dit"];
[self.contentView addSubview:discountImgView];
[discountImgView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(_originalPriceLabel.mas_right).offset(5);
make.centerY.mas_equalTo(_originalPriceLabel);
make.top.mas_equalTo(_originalPriceLabel);
make.width.height.mas_equalTo(8);
}];
_discountLabel = [[UILabel alloc] init];
_discountLabel.text = @"9折";
_discountLabel.font = kFontNameSize(11);
_discountLabel.textColor = RGB(253, 143, 51);
[self.contentView addSubview: _discountLabel];
[ _discountLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(discountImgView.mas_right).offset(6);
make.centerY.mas_equalTo(discountImgView);
}];
//添加按钮
_addBT = [UIButton buttonWithType:UIButtonTypeCustom];
[_addBT addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
[_addBT setImage:kImage_Name(@"but_add_yellow") forState:UIControlStateNormal];
[_addBT setImage:kImage_Name(@"but_add_yellow") forState:UIControlStateHighlighted];
_addBT.backgroundColor = [UIColor redColor];
[self.contentView addSubview:_addBT];
_addBT.tag = 1;
[_addBT mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.mas_offset(-10);
make.width.height.mas_offset(22);
make.top.mas_equalTo(_productImgView.mas_bottom).offset(68);
}];
//数量
_countLab = [[UILabel alloc] init];
_countLab.font = kFontNameSize(14);
_countLab.textColor = RGBA(51, 51, 51, 1);
_countLab.text = @"11";
_countLab.textAlignment = NSTextAlignmentCenter;
_countLab.adjustsFontSizeToFitWidth = YES;
[self.contentView addSubview: _countLab];
[_countLab mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.mas_equalTo(_addBT);
make.right.mas_equalTo(_addBT.mas_left).offset(0);
make.width.mas_offset(26);
}];
// //减少按钮
_reduceBT = [UIButton buttonWithType:UIButtonTypeCustom];
[_reduceBT addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
[_reduceBT setImage:kImage_Name(@"but_reduce") forState:UIControlStateNormal];
[_reduceBT setImage:kImage_Name(@"but_reduce") forState:UIControlStateHighlighted];
_reduceBT.backgroundColor = [UIColor redColor];
[self.contentView addSubview:_reduceBT];
_reduceBT.tag = 2;
[_reduceBT mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.mas_equalTo(_addBT);
make.right.mas_equalTo(_countLab.mas_left).offset(0);
make.width.height.mas_offset(22);
}];
//选规格
_specificationBT = [UIButton buttonWithType:UIButtonTypeCustom];
[_specificationBT addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
[_specificationBT setBackgroundImage:kImage_Name(@"but_spn_yellow") forState:UIControlStateNormal];
[_specificationBT setBackgroundImage:kImage_Name(@"but_spn_yellow") forState:UIControlStateHighlighted];
_specificationBT.backgroundColor = [UIColor redColor];
[_specificationBT setTitle:@"选规格" forState:UIControlStateNormal];
[_specificationBT setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
_specificationBT.titleLabel.font = kFontNameSize(12);
[self.contentView addSubview:_specificationBT];
_specificationBT.tag = 3;
[_specificationBT mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(_productImgView.mas_bottom).offset(68);
make.right.mas_offset(-10);
make.height.mas_offset(22);
make.width.mas_offset(48);
}];
//售罄
_sellOutLab = [[UILabel alloc] init];
_sellOutLab.font = kFontNameSize(12);
_sellOutLab.textColor = kColor_GrayColor;
_sellOutLab.text = @"非可售时间";//非可售时间,售罄
_sellOutLab.textAlignment = NSTextAlignmentLeft;
[self.contentView addSubview: _sellOutLab];
[_sellOutLab mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.mas_equalTo(_priceLabel);
make.right.mas_offset(-10);
}];
//非可售时间
_warningIcon = [[UIImageView alloc]init];
_warningIcon.image = kImage_Name(@"icon_info_gray");
[self.contentView addSubview:_warningIcon];
[_warningIcon mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.mas_equalTo(_priceLabel);
make.width.height.mas_offset(16);
make.right.mas_equalTo(_sellOutLab.mas_left).offset(-2);
}];
// _addBT.hidden = YES;
_countLab.hidden = YES;
_reduceBT.hidden = YES;
_specificationBT.hidden = YES;
_sellOutLab.hidden = YES;
_warningIcon.hidden = YES;
}
- (void)btnClick:(UIButton *)button
{
switch (button.tag) {
case 1:
{//增加
DMLog(@"增加---------");
_count++;
if (_count >= 1) {
_countLab.hidden = NO;
_reduceBT.hidden = NO;
}
_countLab.text = [NSString stringWithFormat:@"%ld",_count];
}
break;
case 2:
{//减少
DMLog(@"减少---------");
_count--;
if (_count <= 0) {
_countLab.hidden = YES;
_reduceBT.hidden = YES;
}
_countLab.text = [NSString stringWithFormat:@"%ld",_count];
}
break;
case 3:
{//选规格
DMLog(@"选规格---------");
}
break;
default:
break;
}
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
@end
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Cell/TakeawayProductCollectionCell.h
================================================
//
// TakeawayProductCollectionCell.h
// AppPark
//
// Created by 池康 on 2018/7/16.
//
#import <UIKit/UIKit.h>
#import "ShoppingCartOrderListInfo.h"
@interface TakeawayProductCollectionCell : UICollectionViewCell
/// 产品图
@property (nonatomic,strong) UIImageView *productImgView;
/// 产品标题
@property (nonatomic,strong) UILabel *productNameLabel;
/// 月售
@property (nonatomic,strong) UILabel *monthlySaleLabel;
/// 赞
@property (nonatomic,strong) UILabel *fabulousCountLabel;
/// 价格
@property (nonatomic,strong) UILabel *priceLabel;
/// 辣度背景
@property (nonatomic,strong) UIView *spicypBgView;
/// 原价
@property (nonatomic,strong) UILabel *originalPriceLabel;
/// 折扣
@property (nonatomic,strong) UILabel *discountLabel;
/// 网友最爱,新品等产品类型标签
@property (nonatomic,strong) UILabel *classLabel;
@property (nonatomic,strong) UIView *lineView;
/// 添加按钮
@property (nonatomic,strong) UIButton *addBT;
/// 数量
@property (nonatomic,strong) UILabel *countLab;
/// 减少按钮
@property (nonatomic,strong) UIButton *reduceBT;
/// 选规格
@property (nonatomic,strong) UIButton *specificationBT;
/// 售罄 or 非可售时间
@property (nonatomic,strong) UILabel *sellOutLab;
/// 图标
@property (nonatomic,strong) UIImageView *warningIcon;
/// 增加减少订单数量 需不需要动画效果
@property (copy, nonatomic) void (^plusBlock)(NSInteger count,BOOL animated);
-(void)setmaintablecell:(ShoppingCartOrderListInfo *)model;
@end
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Cell/TakeawayProductCollectionCell.m
================================================
//
// TakeawayProductCollectionCell.m
// AppPark
//
// Created by 池康 on 2018/7/16.
//
#import "TakeawayProductCollectionCell.h"
@interface TakeawayProductCollectionCell()
{
NSUInteger _count;//数据
}
@end
@implementation TakeawayProductCollectionCell
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self setupViews];
}
return self;
}
- (void)setupViews
{
_count = 0;
_productImgView = [[UIImageView alloc] init];
[self.contentView addSubview:_productImgView];
_productImgView.image = [UIImage imageNamed:@"food"];
[_productImgView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(0);
make.top.mas_equalTo(0);
make.right.mas_equalTo(0);
make.height.mas_equalTo(_productImgView.mas_width);
}];
//标记
//lab_np@3x:新品,lab_like@2x:网友最爱,lab_red@2x:老板推荐,lab_sie@2x:招牌,
_classLabel = [[UILabel alloc] init];
_classLabel.text = @"老板推荐 ";
_classLabel.textColor = [UIColor whiteColor];
_classLabel.font = kFont(12);
_classLabel.textAlignment = NSTextAlignmentCenter;
_classLabel.backgroundColor = RGB(253, 143, 51);
[self.contentView addSubview: _classLabel];
[ _classLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(_productImgView);
make.top.mas_equalTo(_productImgView);
make.height.mas_equalTo(18);
}];
//lab_np@3x:新品,lab_like@2x:网友最爱,lab_red@2x:老板推荐,lab_sie@2x:招牌,
NSMutableAttributedString *str = [AppDefaultUtil returnLineSpacingWithStr:@"这里是标题20字以内,最多两行,这里是标题20字以内,最多两行" withLineSpacing:4 withTextAlignmentCenter:NSTextAlignmentLeft];
CGSize size = [AppMethods sizeAttributedWithFont:kFont(14) Str:str withMaxWidth:takeawayRight_W-20];
CGFloat height = 20;
if (size.height > 20) {
height = 40;
}
_productNameLabel = [[UILabel alloc] init];
_productNameLabel.attributedText = str;
_productNameLabel.textColor = RGBA(51, 51, 51, 1);
_productNameLabel.font = kFont(14);
_productNameLabel.numberOfLines = 2;
[self.contentView addSubview:_productNameLabel];
[_productNameLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_offset(0);
make.top.mas_equalTo(_productImgView.mas_bottom).offset(7);
make.right.mas_equalTo(0);
make.height.mas_equalTo(height);
}];
_monthlySaleLabel = [[UILabel alloc] init];
_monthlySaleLabel.text = @"月售121";
_monthlySaleLabel.font = kFontNameSize(10);
_monthlySaleLabel.textColor = RGB(102, 102, 102);
[self.contentView addSubview:_monthlySaleLabel];
[_monthlySaleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(_productNameLabel);
make.top.mas_equalTo(_productNameLabel.mas_bottom).offset(8);
make.height.mas_equalTo(10);
}];
UIView *lineView = [[UIView alloc] init];
lineView.backgroundColor = RGB(226, 226, 226);
[self.contentView addSubview:lineView];
[lineView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(_monthlySaleLabel.mas_right).offset(6);
make.centerY.mas_equalTo(_monthlySaleLabel);
make.width.mas_equalTo(1);
make.height.mas_equalTo(6);
}];
_fabulousCountLabel = [[UILabel alloc] init];
_fabulousCountLabel.text = @"赞12";
_fabulousCountLabel.font = kFontNameSize(10);
_fabulousCountLabel.textColor = RGB(102, 102, 102);
[self.contentView addSubview:_fabulousCountLabel];
[_fabulousCountLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(lineView.mas_right).offset(8);
make.centerY.mas_equalTo(lineView);
}];
_spicypBgView = [[UIView alloc] init];
_spicypBgView.backgroundColor = [UIColor clearColor];
[self.contentView addSubview:_spicypBgView];
[_spicypBgView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(_fabulousCountLabel.mas_right).offset(5);
make.centerY.mas_equalTo(_fabulousCountLabel);
make.height.mas_equalTo(10);
make.width.mas_equalTo(4+2+4+2+4);
}];
for (NSInteger i = 0; i < 3; i ++) {
UIImageView *starImgView = [[UIImageView alloc] initWithFrame:CGRectMake(i * 6, 0, 4, 10)];
starImgView.image = [UIImage imageNamed:@"icon_chili"];
[_spicypBgView addSubview:starImgView];
}
//优惠后的价格
_priceLabel = [[UILabel alloc] init];
_priceLabel.text = @"¥28";
_priceLabel.font = kFontNameSize(14);
_priceLabel.textColor = RGB(246, 90, 66);
[self.contentView addSubview: _priceLabel];
[ _priceLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(_productNameLabel);
make.top.mas_equalTo(_productImgView.mas_bottom).offset(73);
make.height.mas_equalTo(14);
}];
//优惠活动视图
UIView *activityView = [[UIView alloc]init];
activityView.backgroundColor = RGB(244, 90, 66);
[self.contentView addSubview:activityView];
[activityView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(_productImgView);
make.width.mas_equalTo(_productImgView);
make.bottom.mas_equalTo(_productImgView);
make.height.mas_offset(24);
}];
_originalPriceLabel = [[UILabel alloc] init];
_originalPriceLabel.font = kFontNameSize(12);
_originalPriceLabel.textColor = [UIColor whiteColor];;
NSString *oldPrice = @"¥12";
NSMutableAttributedString *attri = [_originalPriceLabel addDeletingLineWithText:oldPrice deletingLinecolor:[UIColor whiteColor]];
[_originalPriceLabel setAttributedText:attri];
[activityView addSubview: _originalPriceLabel];
[ _originalPriceLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.mas_equalTo(activityView);
make.height.mas_equalTo(14);
make.right.mas_offset(-10);
}];
UIImageView *discountImgView = [[UIImageView alloc] init];
discountImgView.image = [UIImage imageNamed:@"icon_dit_white"];
[activityView addSubview:discountImgView];
[discountImgView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_offset(10);
make.centerY.mas_equalTo(activityView);
make.width.height.mas_equalTo(8);
}];
_discountLabel = [[UILabel alloc] init];
_discountLabel.text = @"9折";
_discountLabel.font = kFontNameSize(11);
_discountLabel.textColor = [UIColor whiteColor];
[activityView addSubview: _discountLabel];
[ _discountLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(discountImgView.mas_right).offset(2);
make.centerY.mas_equalTo(discountImgView);
}];
//添加按钮
_addBT = [UIButton buttonWithType:UIButtonTypeCustom];
[_addBT addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
[_addBT setImage:kImage_Name(@"but_add_yellow") forState:UIControlStateNormal];
[_addBT setImage:kImage_Name(@"but_add_yellow") forState:UIControlStateHighlighted];
_addBT.backgroundColor = [UIColor redColor];
[self.contentView addSubview:_addBT];
_addBT.tag = 1;
[_addBT mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.mas_offset(-10);
make.width.height.mas_offset(22);
make.top.mas_equalTo(_productImgView.mas_bottom).offset(68);
}];
//数量
_countLab = [[UILabel alloc] init];
_countLab.font = kFontNameSize(14);
_countLab.textColor = RGBA(51, 51, 51, 1);
_countLab.text = @"11";
_countLab.textAlignment = NSTextAlignmentCenter;
_countLab.adjustsFontSizeToFitWidth = YES;
[self.contentView addSubview: _countLab];
[_countLab mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.mas_equalTo(_addBT);
make.right.mas_equalTo(_addBT.mas_left).offset(0);
make.width.mas_offset(26);
}];
// //减少按钮
_reduceBT = [UIButton buttonWithType:UIButtonTypeCustom];
[_reduceBT addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
[_reduceBT setImage:kImage_Name(@"but_reduce") forState:UIControlStateNormal];
[_reduceBT setImage:kImage_Name(@"but_reduce") forState:UIControlStateHighlighted];
_reduceBT.backgroundColor = [UIColor redColor];
[self.contentView addSubview:_reduceBT];
_reduceBT.tag = 2;
[_reduceBT mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.mas_equalTo(_addBT);
make.right.mas_equalTo(_countLab.mas_left).offset(0);
make.width.height.mas_offset(22);
}];
//选规格
_specificationBT = [UIButton buttonWithType:UIButtonTypeCustom];
[_specificationBT addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
[_specificationBT setBackgroundImage:kImage_Name(@"but_spn_yellow") forState:UIControlStateNormal];
[_specificationBT setBackgroundImage:kImage_Name(@"but_spn_yellow") forState:UIControlStateHighlighted];
_specificationBT.backgroundColor = [UIColor redColor];
[_specificationBT setTitle:@"选规格" forState:UIControlStateNormal];
[_specificationBT setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
_specificationBT.titleLabel.font = kFontNameSize(12);
[self.contentView addSubview:_specificationBT];
_specificationBT.tag = 3;
[_specificationBT mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(_productImgView.mas_bottom).offset(68);
make.right.mas_offset(-10);
make.height.mas_offset(22);
make.width.mas_offset(48);
}];
//售罄
_sellOutLab = [[UILabel alloc] init];
_sellOutLab.font = kFontNameSize(12);
_sellOutLab.textColor = kColor_GrayColor;
_sellOutLab.text = @"非可售时间";//非可售时间,售罄
_sellOutLab.textAlignment = NSTextAlignmentLeft;
[self.contentView addSubview: _sellOutLab];
[_sellOutLab mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.mas_equalTo(_priceLabel);
make.right.mas_offset(-10);
}];
//非可售时间
_warningIcon = [[UIImageView alloc]init];
_warningIcon.image = kImage_Name(@"icon_info_gray");
[self.contentView addSubview:_warningIcon];
[_warningIcon mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.mas_equalTo(_priceLabel);
make.width.height.mas_offset(16);
make.right.mas_equalTo(_sellOutLab.mas_left).offset(-2);
}];
// _addBT.hidden = YES;
_countLab.hidden = YES;
_reduceBT.hidden = YES;
_specificationBT.hidden = YES;
_sellOutLab.hidden = YES;
_warningIcon.hidden = YES;
}
- (void)btnClick:(UIButton *)button
{
switch (button.tag) {
case 1:
{//增加
DMLog(@"增加---------");
_count++;
if (_count >= 1) {
_countLab.hidden = NO;
_reduceBT.hidden = NO;
}
_countLab.text = [NSString stringWithFormat:@"%ld",_count];
if (self.plusBlock) {
self.plusBlock(_count,YES);
}
}
break;
case 2:
{//减少
DMLog(@"减少---------");
_count--;
if (_count <= 0) {
_countLab.hidden = YES;
_reduceBT.hidden = YES;
}
_countLab.text = [NSString stringWithFormat:@"%ld",_count];
if (self.plusBlock) {
self.plusBlock(_count,NO);
}
}
break;
case 3:
{//选规格
DMLog(@"选规格---------");
}
break;
default:
break;
}
}
- (void)setmaintablecell:(ShoppingCartOrderListInfo *)model
{
_priceLabel.text = [NSString stringWithFormat:@"%@",model.name];
_priceLabel.text = [NSString stringWithFormat:@"¥ %.2f",[model.min_price floatValue]];
_countLab.text = [NSString stringWithFormat:@"%@",model.orderCount];
}
@end
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Cell/TakeawayProductListCell.h
================================================
//
// takeawayProductListCell.h
// AppPark
//
// Created by 池康 on 2018/7/16.
//
#import <UIKit/UIKit.h>
/**
商家列表主页样式
*/
@interface TakeawayProductListCell : UITableViewCell
/// 产品图
@property (nonatomic,strong) UIImageView *productImgView;
/// 产品标题
@property (nonatomic,strong) UILabel *productNameLabel;
/// 月售
@property (nonatomic,strong) UILabel *monthlySaleLabel;
/// 赞
@property (nonatomic,strong) UILabel *fabulousCountLabel;
/// 价格
@property (nonatomic,strong) UILabel *priceLabel;
/// 网友最爱,新品等产品类型
@property (nonatomic,strong) UIImageView *classImgView;
/// 辣度背景
@property (nonatomic,strong) UIView *spicypBgView;
/// 原价
@property (nonatomic,strong) UILabel *originalPriceLabel;
/// 折扣
@property (nonatomic,strong) UILabel *discountLabel;
@property (nonatomic,strong) UIView *lineView;
/// 添加按钮
@property (nonatomic,strong) UIButton *addBT;
/// 数量
@property (nonatomic,strong) UILabel *countLab;
/// 减少按钮
@property (nonatomic,strong) UIButton *reduceBT;
/// 选规格
@property (nonatomic,strong) UIButton *specificationBT;
/// 售罄 or 非可售时间
@property (nonatomic,strong) UILabel *sellOutLab;
/// ⚠️图标
@property (nonatomic,strong) UIImageView *warningIcon;
@end
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Cell/TakeawayProductListCell.m
================================================
//
// takeawayProductListCell.m
// AppPark
//
// Created by 池康 on 2018/7/16.
//
#import "TakeawayProductListCell.h"
@interface TakeawayProductListCell()
{
NSInteger _count;//数据
}
@end
@implementation TakeawayProductListCell
- (void)awakeFromNib {
[super awakeFromNib];
// Initialization code
}
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
if (self=[super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
[self setupViews];
}
return self;
}
- (void)setupViews
{
_count = 0;
_productImgView = [[UIImageView alloc] init];
[self.contentView addSubview:_productImgView];
_productImgView.image = [UIImage imageNamed:@"food"];
[_productImgView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(10);
make.top.mas_equalTo(10);
make.width.height.mas_equalTo(86);
}];
_productNameLabel = [[UILabel alloc] init];
_productNameLabel.text = @"这里是商品的名称";
_productNameLabel.textColor = RGBA(51, 51, 51, 1);
_productNameLabel.font = kFontNameSize(14);
[self.contentView addSubview:_productNameLabel];
[_productNameLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(_productImgView.mas_right).offset(10);
make.top.mas_equalTo(_productImgView);
make.right.mas_equalTo(-10);
make.height.mas_equalTo(14);
}];
_monthlySaleLabel = [[UILabel alloc] init];
_monthlySaleLabel.text = @"月售121";
_monthlySaleLabel.font = kFontNameSize(10);
_monthlySaleLabel.textColor = RGB(102, 102, 102);
[self.contentView addSubview:_monthlySaleLabel];
[_monthlySaleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(_productNameLabel);
make.top.mas_equalTo(_productNameLabel.mas_bottom).offset(8);
make.height.mas_equalTo(10);
}];
UIView *lineView = [[UIView alloc] init];
lineView.backgroundColor = RGB(226, 226, 226);
[self.contentView addSubview:lineView];
[lineView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(_monthlySaleLabel.mas_right).offset(6);
make.centerY.mas_equalTo(_monthlySaleLabel);
make.width.mas_equalTo(1);
make.height.mas_equalTo(6);
}];
_fabulousCountLabel = [[UILabel alloc] init];
_fabulousCountLabel.text = @"赞12";
_fabulousCountLabel.font = kFontNameSize(10);
_fabulousCountLabel.textColor = RGB(102, 102, 102);
[self.contentView addSubview:_fabulousCountLabel];
[_fabulousCountLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(lineView.mas_right).offset(8);
make.centerY.mas_equalTo(lineView);
}];
_spicypBgView = [[UIView alloc] init];
_spicypBgView.backgroundColor = [UIColor clearColor];
[self.contentView addSubview:_spicypBgView];
[_spicypBgView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(_fabulousCountLabel.mas_right).offset(5);
make.centerY.mas_equalTo(_fabulousCountLabel);
make.height.mas_equalTo(10);
make.width.mas_equalTo(4+2+4+2+4);
}];
for (NSInteger i = 0; i < 3; i ++) {
UIImageView *starImgView = [[UIImageView alloc] initWithFrame:CGRectMake(i * 6, 0, 4, 10)];
starImgView.image = [UIImage imageNamed:@"icon_chili"];
[_spicypBgView addSubview:starImgView];
}
//标记
//lab_np@3x:新品,lab_like@2x:网友最爱,lab_red@2x:老板推荐,lab_sie@2x:招牌,
_classImgView = [[UIImageView alloc] init];
_classImgView.image = kImage_Name(@"lab_like");
[self.contentView addSubview: _classImgView];
[ _classImgView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(_productNameLabel);
make.top.mas_equalTo(_monthlySaleLabel.mas_bottom).offset(8);
make.height.mas_equalTo(14);
make.width.mas_equalTo(_classImgView.image.size.width);
}];
_priceLabel = [[UILabel alloc] init];
_priceLabel.text = @"¥28";
_priceLabel.font = kFontNameSize(14);
_priceLabel.textColor = RGB(246, 90, 66);
[self.contentView addSubview: _priceLabel];
[ _priceLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(_productNameLabel);
make.top.mas_equalTo(_classImgView.mas_bottom).offset(18);
make.height.mas_equalTo(14);
}];
_originalPriceLabel = [[UILabel alloc] init];
_originalPriceLabel.font = kFontNameSize(12);
_originalPriceLabel.textColor = RGB(153, 153, 153);
NSString *oldPrice = @"¥12";
NSMutableAttributedString *attri = [_originalPriceLabel addDeletingLineWithText:oldPrice deletingLinecolor:RGB(153, 153, 153)];
[_originalPriceLabel setAttributedText:attri];
[self.contentView addSubview: _originalPriceLabel];
[ _originalPriceLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(_priceLabel.mas_right).offset(6);
make.centerY.mas_equalTo(_priceLabel);
make.height.mas_equalTo(14);
}];
UIImageView *discountImgView = [[UIImageView alloc] init];
discountImgView.image = [UIImage imageNamed:@"icon_dit"];
[self.contentView addSubview:discountImgView];
[discountImgView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(_originalPriceLabel.mas_right).offset(5);
make.centerY.mas_equalTo(_originalPriceLabel);
make.top.mas_equalTo(_originalPriceLabel);
make.width.height.mas_equalTo(8);
}];
_discountLabel = [[UILabel alloc] init];
_discountLabel.text = @"9折";
_discountLabel.font = kFontNameSize(11);
_discountLabel.textColor = RGB(253, 143, 51);
[self.contentView addSubview: _discountLabel];
[ _discountLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(discountImgView.mas_right).offset(6);
make.centerY.mas_equalTo(discountImgView);
}];
//添加按钮
_addBT = [UIButton buttonWithType:UIButtonTypeCustom];
[_addBT addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
[_addBT setImage:kImage_Name(@"but_add_yellow") forState:UIControlStateNormal];
[_addBT setImage:kImage_Name(@"but_add_yellow") forState:UIControlStateHighlighted];
_addBT.backgroundColor = [UIColor redColor];
[self.contentView addSubview:_addBT];
_addBT.tag = 1;
[_addBT mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.mas_offset(-10);
make.width.height.mas_offset(22);
make.top.mas_equalTo(_classImgView.mas_bottom).offset(10);
}];
//数量
_countLab = [[UILabel alloc] init];
_countLab.font = kFontNameSize(14);
_countLab.textColor = RGBA(51, 51, 51, 1);
_countLab.text = @"11";
_countLab.textAlignment = NSTextAlignmentCenter;
_countLab.adjustsFontSizeToFitWidth = YES;
[self.contentView addSubview: _countLab];
[_countLab mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.mas_equalTo(_addBT);
make.right.mas_equalTo(_addBT.mas_left).offset(0);
make.width.mas_offset(26);
}];
// //减少按钮
_reduceBT = [UIButton buttonWithType:UIButtonTypeCustom];
[_reduceBT addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
[_reduceBT setImage:kImage_Name(@"but_reduce") forState:UIControlStateNormal];
[_reduceBT setImage:kImage_Name(@"but_reduce") forState:UIControlStateHighlighted];
_reduceBT.backgroundColor = [UIColor redColor];
[self.contentView addSubview:_reduceBT];
_reduceBT.tag = 2;
[_reduceBT mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.mas_equalTo(_addBT);
make.right.mas_equalTo(_countLab.mas_left).offset(0);
make.width.height.mas_offset(22);
}];
//选规格
_specificationBT = [UIButton buttonWithType:UIButtonTypeCustom];
[_specificationBT addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
[_specificationBT setBackgroundImage:kImage_Name(@"but_spn_yellow") forState:UIControlStateNormal];
[_specificationBT setBackgroundImage:kImage_Name(@"but_spn_yellow") forState:UIControlStateHighlighted];
_specificationBT.backgroundColor = [UIColor redColor];
[_specificationBT setTitle:@"选规格" forState:UIControlStateNormal];
[_specificationBT setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
_specificationBT.titleLabel.font = kFontNameSize(12);
[self.contentView addSubview:_specificationBT];
_specificationBT.tag = 3;
[_specificationBT mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(_classImgView.mas_bottom).offset(10);
make.right.mas_offset(-10);
make.height.mas_offset(22);
make.width.mas_offset(48);
}];
//售罄
_sellOutLab = [[UILabel alloc] init];
_sellOutLab.font = kFontNameSize(12);
_sellOutLab.textColor = kColor_GrayColor;
_sellOutLab.text = @"非可售时间";//非可售时间,售罄
_sellOutLab.textAlignment = NSTextAlignmentLeft;
[self.contentView addSubview: _sellOutLab];
[_sellOutLab mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.mas_equalTo(_priceLabel);
make.right.mas_offset(-10);
}];
//非可售时间
_warningIcon = [[UIImageView alloc]init];
_warningIcon.image = kImage_Name(@"icon_info_gray");
[self.contentView addSubview:_warningIcon];
[_warningIcon mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.mas_equalTo(_priceLabel);
make.width.height.mas_offset(16);
make.right.mas_equalTo(_sellOutLab.mas_left).offset(-2);
}];
// _addBT.hidden = YES;
_countLab.hidden = YES;
_reduceBT.hidden = YES;
_specificationBT.hidden = YES;
_sellOutLab.hidden = YES;
_warningIcon.hidden = YES;
}
- (void)btnClick:(UIButton *)button
{
switch (button.tag) {
case 1:
{//增加
DMLog(@"增加---------");
_count++;
if (_count >= 1) {
_countLab.hidden = NO;
_reduceBT.hidden = NO;
}
_countLab.text = [NSString stringWithFormat:@"%ld",_count];
}
break;
case 2:
{//减少
DMLog(@"减少---------");
_count--;
if (_count <= 0) {
_countLab.hidden = YES;
_reduceBT.hidden = YES;
}
_countLab.text = [NSString stringWithFormat:@"%ld",_count];
}
break;
case 3:
{//选规格
DMLog(@"选规格---------");
}
break;
default:
break;
}
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
@end
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Define/ColorMacro.h
================================================
//
// ColorMacro.h
// exsd
//
// Created by CK on 2017/3/8.
// Copyright © 2017年 CK. All rights reserved.
// 颜色
#ifndef ColorMacro_h
#define ColorMacro_h
#define kColor(hexStr) [AppMethods colorWithHexString:hexStr]
#define Title_Style @"PingFangSC-Regular"
#define Kcolor_NavColor kColor(@"#FD5151")//红色,主题颜色
#define kColor_TitleColor kColor(@"#666666")//标题颜色
#define kColor_GrayColor kColor(@"#999999")
#define kColor_CircleColor kColor(@"#F85F4F")//红色圆圈颜色
#define kColor_darkGrayColor kColor(@"#000000")//黑色背景
#define kColor_borderColor kColor(@"#EEEEEE")//边框
#define kColor_bgHeaderViewColor kColor(@"#E2E2E2")
#define kColor_darkBlackColor kColor(@"#333333")//黑色字体
#define kColor_blueColor kColor(@"#0076FF")//蓝色字体
#define kColor_ButonCornerColor kColor(@"#D9D9D9")
#define kColor_LightGrayColor kColor(@"#F0EFED")//灰色背景
#define kColor_bgViewColor kColor(@"#F9F9F9")
#define kColor_ReplyColor kColor(@"#535353")//
#define KColor_AlertViewBg RGBA(0, 0, 0, 0.4) //弹窗口背景的灰色
// rgb颜色转换(16进制->10进制)
#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]
//RBG颜色
#define RGB(r,g,b) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:1]
//RGBA颜色
#define RGBA(r,g,b,a) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:(a)]
#endif /* ColorMacro_h */
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Define/CommonMacro.h
================================================
//
// CommonMacro.h
// exsd
//
// Created by CK on 2017/4/12.
// Copyright © 2017年 CK. All rights reserved.
//
#ifndef CommonMacro_h
#define CommonMacro_h
#if TARGET_OS_IPHONE
#import <UIKit/UIKit.h>
#define MAS_VIEW UIView
#define MASEdgeInsets UIEdgeInsets
#elif TARGET_OS_MAC
#import <AppKit/AppKit.h>
#define MAS_VIEW NSView
#define MASEdgeInsets NSEdgeInsets
#endif
// 定义这个常量,就可以不用在开发过程中使用"mas_"前缀。
#define MAS_SHORTHAND
// 定义这个常量,就可以让Masonry帮我们自动把基础数据类型的数据,自动装箱为对象类型。
#define MAS_SHORTHAND_GLOBALS
#define takeawayLeft_W kScreenWidth * (75.0/375)
#define takeawayRight_W kScreenWidth * (300.0/375)
//获取当前屏幕的高度
#define kScreenHeight ([UIScreen mainScreen].bounds.size.height)
//获取当前屏幕的宽度
#define kScreenWidth ([UIScreen mainScreen].bounds.size.width)
// 适配 等比放大控件
#define Size(x) ((x)*kScreenWidth*1.0/375.0)
#define SizeInt(x) ((NSInteger)((x)*kScreenWidth/375))
// 应用程序总代理
#define AppDelegateInstance ((AppDelegate*)([UIApplication sharedApplication].delegate))
//占位图片
#define Image_placeholder [UIImage imageNamed:@"thumb"]
#define Image_placeholder_nologo [UIImage imageNamed:@"defaultBack.jpeg"]
#define ImageHeight_placeholder 66
//图片压缩参数
#define kMaxImageSize 1500
#define kMaxSizeWithKB 1536.0
//图片
#define kImage_Path(file,type) [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:file ofType:type]]
#define kImage_Name(name) [UIImage imageNamed:name]
//字体
#define kFont(fontSize) [UIFont systemFontOfSize:fontSize]
#define kFontNameSize(fontNameSize) [UIFont fontWithName:@"PingFang-SC-Medium" size:fontNameSize]
#define kDefalutCellHeight 44
//HUD显示时间
#define kDelayTime 1.5
/// 分割线高度
#define KCOMMON_LINE_HEIGHT 0.6
/// 蒙版透明度
#define KMASK_ALPHA 0.5
/// 弹框动画时间
#define KPOPVIEW_ANIMATE_DURATION 0.25
//获取系统版本
#define Ios_Version [[[UIDevice currentDevice] systemVersion] floatValue]
//获取当前语言
#define CurrentLanguage ([NSLocale preferredLanguages] objectAtIndex:0])
#define IsiPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [UIScreen mainScreen] currentMode].size) : NO)
#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
#define IS_RETINA ([[UIScreen mainScreen] scale] >= 2.0)
// 默认导航栏、标签栏高度
#define kDefaultNavBarHeight (kIsiPhoneX ? 88.0 : ((kSystemVersion < 7.0) ? 44.0 : 64.0))
#define kDefaultTabBarHeight (kIsiPhoneX ? 83.0 : 49.0)
#define kDefaultStatusBarHeight (kIsiPhoneX ? 44.0 : 20.0)
#define kDefaultNavBar_SubView_MinY (kIsiPhoneX ? 24.0 : 0.0)//导航条子视图默认最小Y坐标
#define IPHONE_SAFEBOTTOMAREA_HEIGHT (kIsiPhoneX ? 34 : 0)
#define IPHONE_TOPSENSOR_HEIGHT (kIsiPhoneX ? 32 : 0)
#define kNavFrame CGRectMake(0, 0, kScreenWidth, kDefaultNavBarHeight)
// 判断是否为 iPhone 3/3GS/4/4S
#define kIsiPhone4 (kScreenWidth == 320.0 && kScreenHeight == 480.0)
// 判断是否为 iPhone 5/5S/5C/SE
#define kIsiPhone5 (kScreenWidth == 320.0 && kScreenHeight == 568.0)
// 判断是否为iPhone 6/6S/7/8
#define kIsiPhone6 (kScreenWidth == 375.0 && kScreenHeight == 667.0)
// 判断是否为iPhone 6Plus/6SPlus/7Plus/8Plus
#define kIsiPhone6Plus (kScreenWidth == 414.0 && kScreenHeight == 736.0)
// 判断是否为iPhoneX
#define kIsiPhoneX (kScreenWidth == 375.0 && kScreenHeight == 812.0)
// 系统版本
#define kSystemVersion ([[UIDevice currentDevice].systemVersion floatValue])
// 高清屏检测
#define kIsRetina ([[UIScreen mainScreen] scale] > 1)
#define SINGLE_LINE_WIDTH (1.0 / [UIScreen mainScreen].scale)
#define SINGLE_LINE_ADJUST_OFFSET ((1.0 / [UIScreen mainScreen].scale) / 2)
// 最大尺寸
#define kMaxCGSize CGSizeMake(MAXFLOAT, MAXFLOAT)
// 国际化文本读取
#define THLoc(__table__) NSLocalizedString(__table__, nil)
// 模拟器与真机区别
#if TARGET_IPHONE_SIMULATOR
#define kIsSimulator 1
#else
#define kIsSimulator 0
#endif
//数据验证
#define StrValid(f)(f!=nil &&[f isKindOfClass:[NSString class]]&& ![f isEqualToString:@""])
#define SafeStr(f)(StrValid(f)?f:@"")
#define HasString(str,eky)([str rangeOfString:key].location!=NSNotFound)
#define ValidStr(f)StrValid(f)
#define ValidDict(f)(f!=nil &&[f isKindOfClass:[NSDictionary class]])
#define ValidArray(f)(f!=nil &&[f isKindOfClass:[NSArray class]]&&[f count]>0)
#define ValidNum(f)(f!=nil &&[f isKindOfClass:[NSNumber class]])
#define ValidClass(f,cls)(f!=nil &&[f isKindOfClass:[cls class]])
#define ValidData(f)(f!=nil &&[f isKindOfClass:[NSData class]])
#define MyDefaults ([NSUserDefaults standardUserDefaults])
#define MyFileManager ([NSFileManager defaultManager])
// Path
#define DocumentsPath [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]
/** 弱引用 */
#define WEAKSELF __weak typeof(self) weakSelf = self
#define WS(weakSelf) __weak __typeof(&*self)weakSelf = self;
// block引用self或者其它对象宏
//#define WeakObject(type) __weak __typeof(&*type) weak##_##type = type;
/** 避免self的提前释放 */
#define STRONGSELF __weak typeof(weakSelf) strongSelf = weakSelf
#endif /* CommonMacro_h */
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Define/ParmMacro.h
================================================
//
// ParmMacro.h
// exsd
//
// Created by eshine on 2017/4/11.
// Copyright © 2017年 jinyu. All rights reserved.
//
// 定义参数
#ifndef ParmMacro_h
#define ParmMacro_h
typedef NS_ENUM(NSInteger, ShopModuleType) {
ShopModuleTypeList = 1, //样式一 列表布局
ShopModuleTypeGongGe = 2, //样式二 宫格布局
ShopModuleTypeCard //样式三 卡片布局
};
#endif /* ParmMacro_h */
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Model/EvaluateModel.h
================================================
//
// EvaluateModel.h
// AppPark
//
// Created by 池康 on 2017/11/29.
//
#import <Foundation/Foundation.h>
@interface EvaluateModel : JSONModel
/**
cell的缓存高度
*/
@property (nonatomic , assign) CGFloat cellHeight;
@property (nonatomic , copy) NSString *content;
@property (nonatomic , copy) NSString *evaluateType;
@property (nonatomic , copy) NSString *healthScore;
@property (nonatomic , copy) NSString *locationScore;
@property (nonatomic , copy) NSString *memberHeadUrl;
@property (nonatomic , copy) NSString *memberId;
@property (nonatomic , copy) NSString *memberName;
@property (nonatomic , copy) NSString *performanceScore;
@property (nonatomic , copy) NSString *replyContent;
@property (nonatomic , copy) NSString *roomTypeName;
@property (nonatomic , copy) NSString *serviceScore;
@property (nonatomic , copy) NSString *totalScore;
@property (nonatomic , strong) NSArray <NSDictionary *>*picList;
@property (nonatomic , copy) NSString *commTime;
@property (nonatomic , copy) NSString *regular;
@property (nonatomic , copy) NSString *commContent;
#pragma mark ---房型
/**房型名称*/
@property (nonatomic , copy) NSString *name;
/**房型类型id*/
@property (nonatomic , copy) NSString *iD;
/**是否被选中*/
@property (nonatomic , assign) BOOL isSelected;
//@property (nonatomic , strong) NSArray <RoomPriceModel >*roomPriceList;
- (void)calculateCellHeightWithDic:(NSDictionary *)dic;
- (void)calculateCellHeight;
//计算生活预约评价cell高度
- (void)calculateReserveCellHeight;
#pragma mark - 计算外卖店铺主页评价cell的高度
- (void)calculateTakeawayEvaluateCellHeight;
@end
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Model/EvaluateModel.m
================================================
//
// EvaluateModel.m
// AppPark
//
// Created by 池康 on 2017/11/29.
//
#import "EvaluateModel.h"
@implementation EvaluateModel
- (void)calculateCellHeightWithDic:(NSDictionary *)dic
{
CGFloat height = 60;
//评论内容
NSString *commContent = [NSString jsonUtils:dic[@"commContent"]];
CGSize commContentSzie = [AppMethods sizeWithFont:[UIFont systemFontOfSize:14] Str:commContent withMaxWidth:kScreenWidth-20];
height = height + commContentSzie.height;
//是否有图片
NSArray *picList = dic[@"picList"];
if (picList.count > 0) {
// 图片宽和高
CGFloat pgotoW = 80;
//有图片
height = height + 6;// +6是文本和图片的间隔
if (picList.count <=3) {
//小于等于三张
height = height + pgotoW;
}else if (picList.count > 3 && picList.count<=6){
//小于等于6张大于三张
height = height + pgotoW + pgotoW + 4;//+4是图片与图片之间的间隔
}else{
//大于6张,小于等于9张
height = height + pgotoW + pgotoW +pgotoW + 4 + 4;// +4是图片与图片之间的间隔
}
}else{
//没图片
height = height;
}
//是否商家回复了
NSString *replyContent = [NSString stringWithFormat:@"酒店回复:%@",[NSString jsonUtils:dic[@"replyContent"]]];
if (replyContent.length > 5) {
//有回复
height = height + 20; //+20是上下之间的间隔。
CGSize replyContentSzie = [AppMethods sizeWithFont:[UIFont systemFontOfSize:14] Str:replyContent withMaxWidth:kScreenWidth-40];
height = height + replyContentSzie.height + 20 + 20;
}else{
//无回复
height = height + 20;
}
//缓存高度
self.cellHeight = height;
}
- (void)calculateCellHeight
{
CGFloat height = 60;
//评论内容
NSString *commContent = self.content;
CGSize commContentSzie = [AppMethods sizeWithFont:[UIFont systemFontOfSize:14] Str:commContent withMaxWidth:kScreenWidth-54];
height = height + commContentSzie.height;
//是否有图片
NSArray *picList = self.picList;
if (picList.count > 0) {
// 图片宽和高
CGFloat pgotoW = 80;
//有图片
height = height + 6;// +6是文本和图片的间隔
if (picList.count <=3) {
//小于等于三张
height = height + pgotoW;
}else if (picList.count > 3 && picList.count<=6){
//小于等于6张大于三张
height = height + pgotoW + pgotoW + 4;//+4是图片与图片之间的间隔
}else{
//大于6张,小于等于9张
height = height + pgotoW + pgotoW +pgotoW + 4 + 4;// +4是图片与图片之间的间隔
}
}else{
//没图片
height = height;
}
//是否商家回复了
NSString *replyContent = [NSString stringWithFormat:@"酒店回复:%@",[NSString jsonUtils:self.replyContent]];
if (replyContent.length > 5) {
//有回复
height = height + 20; //+20是上下之间的间隔。
CGSize replyContentSzie = [AppMethods sizeWithFont:[UIFont systemFontOfSize:14] Str:replyContent withMaxWidth:kScreenWidth-74];
height = height + replyContentSzie.height + 20 + 20;
}else{
//无回复
height = height + 20;
}
//缓存高度
self.cellHeight = height;
}
- (void)calculateReserveCellHeight
{
CGFloat height = 60;
//评论内容
NSString *commContent = self.commContent;
CGSize commContentSzie = [AppMethods sizeWithFont:[UIFont systemFontOfSize:14] Str:commContent withMaxWidth:kScreenWidth-54];
height = height + commContentSzie.height;
//是否有图片
NSArray *picList = self.picList;
if (picList.count > 0) {
// 图片宽和高
CGFloat pgotoW = 80;
//有图片
height = height + 6;// +6是文本和图片的间隔
if (picList.count <=3) {
//小于等于三张
height = height + pgotoW;
}else if (picList.count > 3 && picList.count<=6){
//小于等于6张大于三张
height = height + pgotoW + pgotoW + 4;//+4是图片与图片之间的间隔
}else{
//大于6张,小于等于9张
height = height + pgotoW + pgotoW +pgotoW + 4 + 4;// +4是图片与图片之间的间隔
}
}else{
//没图片
height = height;
}
//是否商家回复了
NSString *replyContent = [NSString stringWithFormat:@"酒店回复:%@",[NSString jsonUtils:self.replyContent]];
if (replyContent.length > 5) {
//有回复
height = height + 20; //+20是上下之间的间隔。
CGSize replyContentSzie = [AppMethods sizeWithFont:[UIFont systemFontOfSize:14] Str:replyContent withMaxWidth:kScreenWidth-74];
height = height + replyContentSzie.height + 20 + 20;
}else{
//无回复
height = height + 20;
}
//缓存高度
self.cellHeight = height;
}
#pragma mark - 计算外卖店铺主页评价cell的高度
- (void)calculateTakeawayEvaluateCellHeight
{
CGFloat height = 42;
//评论内容
NSString *commContent = self.commContent;
CGSize commContentSzie = [AppMethods sizeWithFont:[UIFont systemFontOfSize:12] Str:commContent withMaxWidth:kScreenWidth-60];
if (commContent.length == 0) {
//评论为空
}else{
height = height + commContentSzie.height + 10;//+10是文本跟时间的间隔
}
//是否有图片
NSArray *picList = self.picList;
if (picList.count > 0) {
// 图片宽和高
CGFloat pgotoW = 80;
//有图片
height = height + 10;// +10是图片和上面控件的间隔
if (picList.count <=3) {
//小于等于三张
height = height + pgotoW;
}else if (picList.count > 3 && picList.count<=6){
//小于等于6张大于三张
height = height + pgotoW + pgotoW + 4;//+4是图片与图片之间的间隔
}else{
//大于6张,小于等于9张
height = height + pgotoW + pgotoW +pgotoW + 4 + 4;// +4是图片与图片之间的间隔
}
}else{
//没图片
height = height;
}
//踩菜品,赞菜品视图
height = height + 15 + 40;
//是否商家回复了
NSString *replyContent = [NSString stringWithFormat:@"酒店回复:%@",[NSString jsonUtils:self.replyContent]];
if (replyContent.length > 5) {
//有回复
height = height + 10; //+20是上下之间的间隔。
CGSize replyContentSzie = [AppMethods sizeWithFont:[UIFont systemFontOfSize:12] Str:replyContent withMaxWidth:kScreenWidth-80];
height = height + replyContentSzie.height + 14 + 20;
}else{
//无回复
height = height + 20;
}
//缓存高度
self.cellHeight = height;
}
+ (JSONKeyMapper *)keyMapper {
return [[JSONKeyMapper alloc] initWithModelToJSONDictionary:
@{
@"iD":@"id",
}];
}
+ (BOOL)propertyIsOptional:(NSString *)propertyName {
return YES;
}
@end
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Model/NewShopListModel.h
================================================
//
// NewShopListModel.h
// AppPark
//
// Created by 池康 on 2018/3/7.
//
#import <Foundation/Foundation.h>
@interface NewShopListModel : JSONModel
/**图片 */
@property (nonatomic ,copy) NSString *picUrl;
/**价格 */
@property (nonatomic ,copy) NSString *price;
/**价格范围 */
@property (nonatomic ,copy) NSString *priceRange;
/**售出数量 */
@property (nonatomic ,copy) NSString *soldCount;
/**标题 */
@property (nonatomic ,copy) NSString *title;
//标签:1.新品 2.热卖 3.力荐 4.人气
@property (nonatomic ,copy) NSString *tag;
@property (nonatomic ,copy) NSString *goodRate;
//活动类型1.限时折扣 2.满减 3.优惠券
@property (nonatomic ,copy) NSString *activityType;
@property (nonatomic ,copy) NSString *iD;
@property (nonatomic ,copy) NSString *useTime;
@property (nonatomic ,copy) NSString *appointmentTime;
@property (nonatomic ,copy) NSString *virtualUseTime;
@property (nonatomic ,copy) NSString *rackRate;
@property (nonatomic ,copy) NSString *makeAnAppointmentDate;
@property (nonatomic ,copy) NSString *makeAnAppointment;
@property (nonatomic ,copy) NSString *isVirtual;
@property (nonatomic ,copy) NSString *activityId;
@property (nonatomic ,copy) NSString *activityEnterType;
@property (nonatomic ,copy) NSString *activityEnterState;
@property (nonatomic ,copy) NSString *activityEnterProductId;
@property (nonatomic ,copy) NSString *activityEnterId;
@property (nonatomic ,copy) NSString *activityDataStatus;
@end
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Model/NewShopListModel.m
================================================
//
// NewShopListModel.m
// AppPark
//
// Created by 池康 on 2018/3/7.
//
#import "NewShopListModel.h"
@implementation NewShopListModel
+ (JSONKeyMapper *)keyMapper {
return [[JSONKeyMapper alloc] initWithModelToJSONDictionary:
@{
@"iD":@"id",
}];
}
+ (BOOL)propertyIsOptional:(NSString *)propertyName {
return YES;
}
@end
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Model/NewShopModel.h
================================================
//
// NewShopModel.h
// AppPark
//
// Created by 池康 on 2018/3/6.
//
#import <Foundation/Foundation.h>
@protocol CouponListModel
@end
@interface NewShopModel : JSONModel
/**活动数量 */
@property (nonatomic ,copy) NSString *activeCount;
/**评论数量 */
@property (nonatomic ,copy) NSString *commCount;
/** 评分*/
@property (nonatomic ,copy) NSString *commScore;
/** */
@property (nonatomic ,copy) NSString *count;
/**是否收藏*/
@property (nonatomic ,copy) NSString *isCollection;
//@property (nonatomic ,copy) NSDictionary *item;
/** 营业时间*/
@property (nonatomic ,copy) NSString *openHour;
/** 店铺背景图*/
@property (nonatomic ,copy) NSString *picUrl;
/** 地址*/
@property (nonatomic ,copy) NSString *shopAddress;
/**店铺图标*/
@property (nonatomic ,copy) NSString *shopIcon;
/** 店铺介绍*/
@property (nonatomic ,copy) NSString *shopIntroduce;
/** 经纬度*/
@property (nonatomic ,copy) NSString *shopLocation;
/** 店铺名称*/
@property (nonatomic ,copy) NSString *shopName;
/** 公告*/
@property (nonatomic ,copy) NSString *shopNotice;
//资质图片
@property (nonatomic ,strong) NSArray *shopPicList;
/** 店铺类型1.企业认证 2.商家认证 3.个体工商户 4.不显示*/
@property (nonatomic ,copy) NSString *shopType;
/**分类*/
@property (nonatomic ,strong) NSMutableArray *sortInfo;
/** */
//@property (nonatomic ,copy) NSDictionary *style;
//
@property (nonatomic ,copy) NSString *isStyle;
//是否显示店铺信息:0-否,1-是
@property (nonatomic ,copy) NSString *style_groupInfoShow;
//导航位置类型:1-横向导航,2-竖向导航
@property (nonatomic ,copy) NSString *style_tabPosition;
// 快速布局类型:1-列表布局,2-宫格布局,3-卡片布局
@property (nonatomic ,copy) NSString *sys_moduleType;
@property (nonatomic ,copy) NSString *telnumber;
/** 优惠券*/
@property (nonatomic ,strong) NSArray <CouponListModel > *couponList;
/** 活动*/
@property (nonatomic ,strong) NSArray <CouponListModel > *activityList;
/**聊天客服JID*/
@property (nonatomic ,copy) NSString *serviceJIDUserName;
/**客服名称*/
@property (nonatomic ,copy) NSString *serviceUserNickName;
/**客服头像*/
@property (nonatomic ,copy) NSString *serviceHeadFace;
/**聊天用户名*/
@property (nonatomic ,copy) NSString *serviceName;
/**聊天客服用户id*/
@property (nonatomic ,copy) NSString *serviceId;
/**是否开启客服聊天*/
@property (nonatomic ,copy) NSString *serviceOpenState;
@end
@interface CouponListModel : JSONModel<NSCopying,NSMutableCopying>
#pragma mark --- 优惠券
/***/
@property (nonatomic ,copy) NSString *activeId;
/***/
@property (nonatomic ,copy) NSString *couponCondition;
/***/
@property (nonatomic ,copy) NSString *couponEndTime;
/***/
@property (nonatomic ,copy) NSString *couponId;
/***/
@property (nonatomic ,copy) NSString *couponNumber;
/**couponPrice*/
@property (nonatomic ,copy) NSString *couponPrice;
/**开始时间*/
@property (nonatomic ,copy) NSString *couponStartTime;
/***/
@property (nonatomic ,copy) NSString *couponTime;
/***/
@property (nonatomic ,copy) NSString *couponTitle;
/***/
@property (nonatomic ,copy) NSString *isPlatForm;
#pragma mark --- 活动名称
/***/
@property (nonatomic ,copy) NSString *activeEndTime;
/**开始时间*/
@property (nonatomic ,copy) NSString *activeStartTime;
/***/
@property (nonatomic ,copy) NSString *activeTitle;
/**活动类型1.限时折扣 2.满减 3.优惠券*/
@property (nonatomic ,copy) NSString *activeType;
/***/
@property (nonatomic ,copy) NSString *isPlantActive;
@end
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Model/NewShopModel.m
================================================
//
// NewShopModel.m
// AppPark
//
// Created by 池康 on 2018/3/6.
//
#import "NewShopModel.h"
@implementation NewShopModel
+ (JSONKeyMapper *)keyMapper {
return [[JSONKeyMapper alloc] initWithModelToJSONDictionary:
@{
@"iD":@"id",
}];
}
+ (BOOL)propertyIsOptional:(NSString *)propertyName {
return YES;
}
@end
@implementation CouponListModel
+ (JSONKeyMapper *)keyMapper {
return [[JSONKeyMapper alloc] initWithModelToJSONDictionary:
@{
@"iD":@"id",
}];
}
+ (BOOL)propertyIsOptional:(NSString *)propertyName {
return YES;
}
- (id)copyWithZone:(NSZone *)zone{
CouponListModel * model = [[CouponListModel allocWithZone:zone] init];
model.couponNumber = self.couponNumber;//self是被copy的对象
return model;
}
- (id)mutableCopyWithZone:(NSZone *)zone{
CouponListModel * model = [[CouponListModel allocWithZone:zone] init];
model.couponNumber = self.couponNumber;//self是被copy的对象
return model;
}
@end
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Model/ShoppingCartOrderListInfo.h
================================================
//
// OrderListInfo.h
// AppPark
//
// Created by kongxin on 2018/7/16.
//
#import "JSONModel.h"
@interface ShoppingCartOrderListInfo : JSONModel
@property(nonatomic,copy)NSString *orderid;
@property(nonatomic,copy)NSString *name;
@property(nonatomic,copy)NSString *min_price;
@property(nonatomic,copy)NSString *praise_num;
@property(nonatomic,copy)NSString *picture;
@property(nonatomic,copy)NSString *month_saled;
@property(nonatomic,copy)NSString *orderCount;
/// 产品名称
@property (nonatomic,copy) NSString *productName;
/// 原始价格
@property (nonatomic,copy) NSString *originalPrice;
@end
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Model/ShoppingCartOrderListInfo.m
================================================
//
// OrderListInfo.m
// AppPark
//
// Created by kongxin on 2018/7/16.
//
#import "ShoppingCartOrderListInfo.h"
@implementation ShoppingCartOrderListInfo
+ (BOOL)propertyIsOptional:(NSString *)propertyName {
return YES;
}
@end
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/AppIcon.appiconset/Contents.json
================================================
{
"images" : [
{
"idiom" : "iphone",
"size" : "20x20",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "20x20",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "29x29",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "29x29",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "40x40",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "40x40",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "60x60",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "60x60",
"scale" : "3x"
},
{
"idiom" : "ipad",
"size" : "20x20",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "20x20",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "29x29",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "29x29",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "40x40",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "40x40",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "76x76",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "76x76",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "83.5x83.5",
"scale" : "2x"
},
{
"idiom" : "ios-marketing",
"size" : "1024x1024",
"scale" : "1x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Contents.json
================================================
{
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/Already collected.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "Already collected@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "Already collected@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/Contents.json
================================================
{
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/back_grey.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "back_grey@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "back_grey@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/back_white.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "back_white@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "back_white@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/bg-shadow.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "bg-shadow@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "bg-shadow@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/collect_grey.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "collect_grey@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "collect_grey@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/collect_white.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "collect_white@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "collect_white@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/coupons.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "coupons@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "coupons@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/icon-Packup.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-Pack up@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-Pack up@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/icon-Slidingback.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-Sliding back@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-Sliding back@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/icon-coupons.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-coupons@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-coupons@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/icon-delete.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-delete@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-delete@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/icon-discounts.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-discounts@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-discounts@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/icon-enterprise.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-enterprise@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-enterprise@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/icon-folding.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-folding@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-folding@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/icon-merchants.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-merchants@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-merchants@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/icon-messagecenter.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-message center@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-message center@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/icon-new.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-new@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-new@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/icon-reference.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-reference@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-reference@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/icon-sale.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-sale@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-sale@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/icon-search box.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-search box@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-search box@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/icon-selling.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-selling@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-selling@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/icon-sentiment.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-sentiment@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-sentiment@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/icon-shoppingcart.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-shopping cart@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-shopping cart@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/message_grey.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "message_grey@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "message_grey@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/message_white.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "message_white@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "message_white@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/more_grey.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "more_grey@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "more_grey@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/more_white.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "more_white@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "more_white@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/shadow.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "shadow@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "shadow@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/sousuo_white.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "sousuo_white@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "sousuo_white@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/yilingqu.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "yilingqu@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "yilingqu@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/Contents.json
================================================
{
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/but-shut.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "but-shut@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "but-shut@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/checkbox_checked2.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "checkbox_checked2@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "checkbox_checked2@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-addition.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-addition@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-addition@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-address-gray.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-address-gray@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-address-gray@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-address.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-address@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-address@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-appraise.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-appraise@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-appraise@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-card.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-card@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-card@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-certification.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-certification@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-certification@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-click-shaixuan.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-click-shaixuan@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-click-shaixuan@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-click-up.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-click-up@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-click-up@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-click.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-click@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-click@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-collect-red.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-collect-red@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-collect-red@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-collect-white.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-collect-white@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-collect-white@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-collect.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-collect@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-collect@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-confirm.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-confirm@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-confirm@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-contact.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-contact@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-contact@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-dianpu.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-dianpu@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-dianpu@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-dingwei.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-dingwei@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-dingwei@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-footprint.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-footprint@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-footprint@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-free.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-free@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-free@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-idcard.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-idcard@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-idcard@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-localize-white.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-localize-white@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-localize-white@3x.png",
gitextract_42nycll3/ ├── .gitignore ├── CKMeiTuanShopView/ │ ├── CKMeiTuanShopView/ │ │ ├── AppDelegate/ │ │ │ ├── AppDelegate.h │ │ │ └── AppDelegate.m │ │ ├── Category/ │ │ │ ├── NSDate+Utilities.h │ │ │ ├── NSDate+Utilities.m │ │ │ ├── NSString+Extension.h │ │ │ ├── NSString+Extension.m │ │ │ ├── UIImage+BlurImage.h │ │ │ ├── UIImage+BlurImage.m │ │ │ ├── UILabel+ChangeLineSpaceAndWordSpace.h │ │ │ ├── UILabel+ChangeLineSpaceAndWordSpace.m │ │ │ ├── UILabel+Extensions.h │ │ │ ├── UILabel+Extensions.m │ │ │ ├── UIView+Extension.h │ │ │ ├── UIView+Extension.m │ │ │ ├── UIView+Helper.h │ │ │ └── UIView+Helper.m │ │ ├── Cell/ │ │ │ ├── ReserveEvluateCell.h │ │ │ ├── ReserveEvluateCell.m │ │ │ ├── TakeawayProductCardCell.h │ │ │ ├── TakeawayProductCardCell.m │ │ │ ├── TakeawayProductCollectionCell.h │ │ │ ├── TakeawayProductCollectionCell.m │ │ │ ├── TakeawayProductListCell.h │ │ │ └── TakeawayProductListCell.m │ │ ├── Define/ │ │ │ ├── ColorMacro.h │ │ │ ├── CommonMacro.h │ │ │ └── ParmMacro.h │ │ ├── Info.plist │ │ ├── Model/ │ │ │ ├── EvaluateModel.h │ │ │ ├── EvaluateModel.m │ │ │ ├── NewShopListModel.h │ │ │ ├── NewShopListModel.m │ │ │ ├── NewShopModel.h │ │ │ ├── NewShopModel.m │ │ │ ├── ShoppingCartOrderListInfo.h │ │ │ └── ShoppingCartOrderListInfo.m │ │ ├── Supporting Flies/ │ │ │ ├── Assets.xcassets/ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── Contents.json │ │ │ │ ├── NewShopProduct/ │ │ │ │ │ ├── Already collected.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── back_grey.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── back_white.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── bg-shadow.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── collect_grey.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── collect_white.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── coupons.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-Packup.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-Slidingback.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-coupons.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-delete.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-discounts.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-enterprise.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-folding.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-merchants.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-messagecenter.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-new.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-reference.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-sale.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-search box.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-selling.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-sentiment.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-shoppingcart.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── message_grey.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── message_white.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── more_grey.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── more_white.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── shadow.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── sousuo_white.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ └── yilingqu.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── ServiceReservation/ │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── but-shut.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── checkbox_checked2.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-addition.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-address-gray.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-address.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-appraise.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-card.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-certification.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-click-shaixuan.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-click-up.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-click.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-collect-red.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-collect-white.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-collect.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-confirm.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-contact.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-dianpu.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-dingwei.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-footprint.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-free.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-idcard.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-localize-white.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-localize.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-no service.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-particulars.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-pay.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-prompting.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-quantity.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-refund.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-refunds.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-scoring.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-search-gray.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-search-white.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-sequencing.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-service.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-shang.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-sharing.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-shop.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-shoucang.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-shut down.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-smile.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-state.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-subtraction.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-succeed.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-tab-black.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-tab-dwon.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-tab-up.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-tab-white.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-telephone.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-time-gray.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-tips.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-unckeck.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-wait.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon-yuyue.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon_ arrow_down_black.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon_infoIocation.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon_infosearch.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon_location_ash.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon_return_black.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon_round.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon_wepay2.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ └── locate.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ └── Takeaway/ │ │ │ │ ├── Contents.json │ │ │ │ ├── ShopTagIcon/ │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── but_close.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon_brd.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon_dwon_triangle.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon_new.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon_sale.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon_unfold_gary.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon_unfold_white.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon_up_gray.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── lab_bg_red.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── lab_close_yellow.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── lab_company.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── lab_con_green.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── lab_dit_yellow.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── lab_invite.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── lab_like.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── lab_np.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── lab_personal.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── lab_red.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── lab_ren_cyan.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── lab_rest.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── lab_sale_red.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ └── lab_sie.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── bg_coupon_red.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── bg_coupon_yellow.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── bg_coupons.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── but_add_gary.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── but_add_yellow.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── but_click.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── but_del.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── but_edit_14.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── but_hay_white.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── but_hay_yel.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── but_reduce.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── but_reduce_gary.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── but_return_bg.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── but_uhy_white.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── but_unh_gary.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon-announcement.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon_back_white.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon_chili.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon_cop_click.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon_next_black.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon_state.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon_takeout.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── placeholdImg/ │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── img_135.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── img_280.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── img_30.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── img_30_yj.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── img_375.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── img_50.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── img_60.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── img_80.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── img_82.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ └── img_86.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── star/ │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── icon_str_gar_10.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon_str_gary_20.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon_str_gary_25.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon_str_yel_10.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── icon_str_yel_20.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ └── icon_str_yel_25.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ └── takeawayIcon/ │ │ │ │ ├── Contents.json │ │ │ │ ├── addProduct_icon.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── but_bad_gary.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── but_camera.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── but_cot_gary.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── but_del_bg.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── but_god_yel.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── but_phe.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── but_sc_gary.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── but_sc_white.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── but_spn_yellow.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon_ad.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon_ads.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon_ant.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon_bad_gary.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon_brd_big.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon_chili.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon_dit.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon_dit_white.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon_good_gary.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon_head.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon_idcard.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon_info_gray.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon_info_yel.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon_loc_gary.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon_location.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon_location_gary.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon_ml_gary.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon_next_up.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon_ref_yel.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon_score.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon_sel_yellow.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon_smi_yel.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon_state.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon_store_takeaway.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon_tel.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon_time.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon_time_yel.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── icon_up_black.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ └── lab_new_big.imageset/ │ │ │ │ └── Contents.json │ │ │ ├── Base.lproj/ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ └── Main.storyboard │ │ │ ├── CKPrefixHeader.pch │ │ │ ├── main.m │ │ │ ├── pizza.json │ │ │ └── shop.json │ │ ├── TakeawayShopView/ │ │ │ ├── HeaderReusableView.h │ │ │ ├── HeaderReusableView.m │ │ │ ├── JHHeaderFlowLayout.h │ │ │ ├── JHHeaderFlowLayout.m │ │ │ ├── LJDynamicItem.h │ │ │ ├── LJDynamicItem.m │ │ │ ├── ShopEvaluateView.h │ │ │ ├── ShopEvaluateView.m │ │ │ ├── ShopHomePageView.h │ │ │ ├── ShopHomePageView.m │ │ │ ├── ShopMerchantView.h │ │ │ ├── ShopMerchantView.m │ │ │ ├── ShopScrollView.h │ │ │ ├── ShopScrollView.m │ │ │ ├── TakeawayShopMainVC.h │ │ │ ├── TakeawayShopMainVC.m │ │ │ ├── TakeawayShopView.h │ │ │ └── TakeawayShopView.m │ │ ├── ThridParty/ │ │ │ ├── FXBlurView/ │ │ │ │ ├── FXBlurView.h │ │ │ │ └── FXBlurView.m │ │ │ ├── SDPhotoBrowser/ │ │ │ │ ├── SDBrowserImageView.h │ │ │ │ ├── SDBrowserImageView.m │ │ │ │ ├── SDPhotoBrowser.h │ │ │ │ ├── SDPhotoBrowser.m │ │ │ │ ├── SDPhotoBrowserConfig.h │ │ │ │ ├── SDWaitingView.h │ │ │ │ └── SDWaitingView.m │ │ │ └── YBPopupMenu/ │ │ │ ├── CustomTestCell.h │ │ │ ├── CustomTestCell.m │ │ │ ├── CustomTestCell.xib │ │ │ ├── YBPopupMenu.h │ │ │ ├── YBPopupMenu.m │ │ │ ├── YBPopupMenuPath.h │ │ │ ├── YBPopupMenuPath.m │ │ │ ├── YBRectConst.h │ │ │ └── YBRectConst.m │ │ └── Utils/ │ │ ├── AppDefaultUtil.h │ │ ├── AppDefaultUtil.m │ │ ├── AppMethods.h │ │ ├── AppMethods.m │ │ ├── ToolManager.h │ │ ├── ToolManager.m │ │ ├── UITool.h │ │ └── UITool.m │ ├── CKMeiTuanShopView.xcodeproj/ │ │ ├── project.pbxproj │ │ └── project.xcworkspace/ │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata/ │ │ └── IDEWorkspaceChecks.plist │ ├── CKMeiTuanShopView.xcworkspace/ │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata/ │ │ └── IDEWorkspaceChecks.plist │ ├── CKMeiTuanShopViewTests/ │ │ ├── CKMeiTuanShopViewTests.m │ │ └── Info.plist │ ├── CKMeiTuanShopViewUITests/ │ │ ├── CKMeiTuanShopViewUITests.m │ │ └── Info.plist │ ├── Podfile │ └── Pods/ │ ├── AFNetworking/ │ │ ├── AFNetworking/ │ │ │ ├── AFCompatibilityMacros.h │ │ │ ├── AFHTTPSessionManager.h │ │ │ ├── AFHTTPSessionManager.m │ │ │ ├── AFNetworkReachabilityManager.h │ │ │ ├── AFNetworkReachabilityManager.m │ │ │ ├── AFNetworking.h │ │ │ ├── AFSecurityPolicy.h │ │ │ ├── AFSecurityPolicy.m │ │ │ ├── AFURLRequestSerialization.h │ │ │ ├── AFURLRequestSerialization.m │ │ │ ├── AFURLResponseSerialization.h │ │ │ ├── AFURLResponseSerialization.m │ │ │ ├── AFURLSessionManager.h │ │ │ └── AFURLSessionManager.m │ │ ├── LICENSE │ │ ├── README.md │ │ └── UIKit+AFNetworking/ │ │ ├── AFAutoPurgingImageCache.h │ │ ├── AFAutoPurgingImageCache.m │ │ ├── AFImageDownloader.h │ │ ├── AFImageDownloader.m │ │ ├── AFNetworkActivityIndicatorManager.h │ │ ├── AFNetworkActivityIndicatorManager.m │ │ ├── UIActivityIndicatorView+AFNetworking.h │ │ ├── UIActivityIndicatorView+AFNetworking.m │ │ ├── UIButton+AFNetworking.h │ │ ├── UIButton+AFNetworking.m │ │ ├── UIImage+AFNetworking.h │ │ ├── UIImageView+AFNetworking.h │ │ ├── UIImageView+AFNetworking.m │ │ ├── UIKit+AFNetworking.h │ │ ├── UIProgressView+AFNetworking.h │ │ ├── UIProgressView+AFNetworking.m │ │ ├── UIRefreshControl+AFNetworking.h │ │ ├── UIRefreshControl+AFNetworking.m │ │ ├── UIWebView+AFNetworking.h │ │ └── UIWebView+AFNetworking.m │ ├── IQKeyboardManager/ │ │ ├── IQKeyboardManager/ │ │ │ ├── Categories/ │ │ │ │ ├── IQNSArray+Sort.h │ │ │ │ ├── IQNSArray+Sort.m │ │ │ │ ├── IQUIScrollView+Additions.h │ │ │ │ ├── IQUIScrollView+Additions.m │ │ │ │ ├── IQUITextFieldView+Additions.h │ │ │ │ ├── IQUITextFieldView+Additions.m │ │ │ │ ├── IQUIView+Hierarchy.h │ │ │ │ ├── IQUIView+Hierarchy.m │ │ │ │ ├── IQUIViewController+Additions.h │ │ │ │ └── IQUIViewController+Additions.m │ │ │ ├── Constants/ │ │ │ │ ├── IQKeyboardManagerConstants.h │ │ │ │ └── IQKeyboardManagerConstantsInternal.h │ │ │ ├── IQKeyboardManager.h │ │ │ ├── IQKeyboardManager.m │ │ │ ├── IQKeyboardReturnKeyHandler.h │ │ │ ├── IQKeyboardReturnKeyHandler.m │ │ │ ├── IQTextView/ │ │ │ │ ├── IQTextView.h │ │ │ │ └── IQTextView.m │ │ │ └── IQToolbar/ │ │ │ ├── IQBarButtonItem.h │ │ │ ├── IQBarButtonItem.m │ │ │ ├── IQPreviousNextView.h │ │ │ ├── IQPreviousNextView.m │ │ │ ├── IQTitleBarButtonItem.h │ │ │ ├── IQTitleBarButtonItem.m │ │ │ ├── IQToolbar.h │ │ │ ├── IQToolbar.m │ │ │ ├── IQUIView+IQKeyboardToolbar.h │ │ │ └── IQUIView+IQKeyboardToolbar.m │ │ ├── LICENSE.md │ │ └── README.md │ ├── JSONModel/ │ │ ├── JSONModel/ │ │ │ ├── JSONModel/ │ │ │ │ ├── JSONModel.h │ │ │ │ ├── JSONModel.m │ │ │ │ ├── JSONModelClassProperty.h │ │ │ │ ├── JSONModelClassProperty.m │ │ │ │ ├── JSONModelError.h │ │ │ │ └── JSONModelError.m │ │ │ ├── JSONModelLib.h │ │ │ ├── JSONModelNetworking/ │ │ │ │ ├── JSONAPI.h │ │ │ │ ├── JSONAPI.m │ │ │ │ ├── JSONHTTPClient.h │ │ │ │ ├── JSONHTTPClient.m │ │ │ │ ├── JSONModel+networking.h │ │ │ │ └── JSONModel+networking.m │ │ │ └── JSONModelTransformations/ │ │ │ ├── JSONKeyMapper.h │ │ │ ├── JSONKeyMapper.m │ │ │ ├── JSONValueTransformer.h │ │ │ └── JSONValueTransformer.m │ │ ├── LICENSE │ │ └── README.md │ ├── MBProgressHUD/ │ │ ├── LICENSE │ │ ├── MBProgressHUD.h │ │ ├── MBProgressHUD.m │ │ └── README.mdown │ ├── MJRefresh/ │ │ ├── LICENSE │ │ ├── MJRefresh/ │ │ │ ├── Base/ │ │ │ │ ├── MJRefreshAutoFooter.h │ │ │ │ ├── MJRefreshAutoFooter.m │ │ │ │ ├── MJRefreshBackFooter.h │ │ │ │ ├── MJRefreshBackFooter.m │ │ │ │ ├── MJRefreshComponent.h │ │ │ │ ├── MJRefreshComponent.m │ │ │ │ ├── MJRefreshFooter.h │ │ │ │ ├── MJRefreshFooter.m │ │ │ │ ├── MJRefreshHeader.h │ │ │ │ └── MJRefreshHeader.m │ │ │ ├── Custom/ │ │ │ │ ├── Footer/ │ │ │ │ │ ├── Auto/ │ │ │ │ │ │ ├── MJRefreshAutoGifFooter.h │ │ │ │ │ │ ├── MJRefreshAutoGifFooter.m │ │ │ │ │ │ ├── MJRefreshAutoNormalFooter.h │ │ │ │ │ │ ├── MJRefreshAutoNormalFooter.m │ │ │ │ │ │ ├── MJRefreshAutoStateFooter.h │ │ │ │ │ │ └── MJRefreshAutoStateFooter.m │ │ │ │ │ └── Back/ │ │ │ │ │ ├── MJRefreshBackGifFooter.h │ │ │ │ │ ├── MJRefreshBackGifFooter.m │ │ │ │ │ ├── MJRefreshBackNormalFooter.h │ │ │ │ │ ├── MJRefreshBackNormalFooter.m │ │ │ │ │ ├── MJRefreshBackStateFooter.h │ │ │ │ │ └── MJRefreshBackStateFooter.m │ │ │ │ └── Header/ │ │ │ │ ├── MJRefreshGifHeader.h │ │ │ │ ├── MJRefreshGifHeader.m │ │ │ │ ├── MJRefreshNormalHeader.h │ │ │ │ ├── MJRefreshNormalHeader.m │ │ │ │ ├── MJRefreshStateHeader.h │ │ │ │ └── MJRefreshStateHeader.m │ │ │ ├── MJRefresh.bundle/ │ │ │ │ ├── en.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── zh-Hans.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ └── zh-Hant.lproj/ │ │ │ │ └── Localizable.strings │ │ │ ├── MJRefresh.h │ │ │ ├── MJRefreshConst.h │ │ │ ├── MJRefreshConst.m │ │ │ ├── NSBundle+MJRefresh.h │ │ │ ├── NSBundle+MJRefresh.m │ │ │ ├── UIScrollView+MJExtension.h │ │ │ ├── UIScrollView+MJExtension.m │ │ │ ├── UIScrollView+MJRefresh.h │ │ │ ├── UIScrollView+MJRefresh.m │ │ │ ├── UIView+MJExtension.h │ │ │ └── UIView+MJExtension.m │ │ └── README.md │ ├── Masonry/ │ │ ├── LICENSE │ │ ├── Masonry/ │ │ │ ├── MASCompositeConstraint.h │ │ │ ├── MASCompositeConstraint.m │ │ │ ├── MASConstraint+Private.h │ │ │ ├── MASConstraint.h │ │ │ ├── MASConstraint.m │ │ │ ├── MASConstraintMaker.h │ │ │ ├── MASConstraintMaker.m │ │ │ ├── MASLayoutConstraint.h │ │ │ ├── MASLayoutConstraint.m │ │ │ ├── MASUtilities.h │ │ │ ├── MASViewAttribute.h │ │ │ ├── MASViewAttribute.m │ │ │ ├── MASViewConstraint.h │ │ │ ├── MASViewConstraint.m │ │ │ ├── Masonry.h │ │ │ ├── NSArray+MASAdditions.h │ │ │ ├── NSArray+MASAdditions.m │ │ │ ├── NSArray+MASShorthandAdditions.h │ │ │ ├── NSLayoutConstraint+MASDebugAdditions.h │ │ │ ├── NSLayoutConstraint+MASDebugAdditions.m │ │ │ ├── View+MASAdditions.h │ │ │ ├── View+MASAdditions.m │ │ │ ├── View+MASShorthandAdditions.h │ │ │ ├── ViewController+MASAdditions.h │ │ │ └── ViewController+MASAdditions.m │ │ └── README.md │ ├── Pods.xcodeproj/ │ │ └── project.pbxproj │ ├── SDWebImage/ │ │ ├── LICENSE │ │ ├── README.md │ │ └── SDWebImage/ │ │ ├── NSButton+WebCache.h │ │ ├── NSButton+WebCache.m │ │ ├── NSData+ImageContentType.h │ │ ├── NSData+ImageContentType.m │ │ ├── NSImage+WebCache.h │ │ ├── NSImage+WebCache.m │ │ ├── SDAnimatedImageRep.h │ │ ├── SDAnimatedImageRep.m │ │ ├── SDImageCache.h │ │ ├── SDImageCache.m │ │ ├── SDImageCacheConfig.h │ │ ├── SDImageCacheConfig.m │ │ ├── SDWebImageCoder.h │ │ ├── SDWebImageCoder.m │ │ ├── SDWebImageCoderHelper.h │ │ ├── SDWebImageCoderHelper.m │ │ ├── SDWebImageCodersManager.h │ │ ├── SDWebImageCodersManager.m │ │ ├── SDWebImageCompat.h │ │ ├── SDWebImageCompat.m │ │ ├── SDWebImageDownloader.h │ │ ├── SDWebImageDownloader.m │ │ ├── SDWebImageDownloaderOperation.h │ │ ├── SDWebImageDownloaderOperation.m │ │ ├── SDWebImageFrame.h │ │ ├── SDWebImageFrame.m │ │ ├── SDWebImageGIFCoder.h │ │ ├── SDWebImageGIFCoder.m │ │ ├── SDWebImageImageIOCoder.h │ │ ├── SDWebImageImageIOCoder.m │ │ ├── SDWebImageManager.h │ │ ├── SDWebImageManager.m │ │ ├── SDWebImageOperation.h │ │ ├── SDWebImagePrefetcher.h │ │ ├── SDWebImagePrefetcher.m │ │ ├── SDWebImageTransition.h │ │ ├── SDWebImageTransition.m │ │ ├── UIButton+WebCache.h │ │ ├── UIButton+WebCache.m │ │ ├── UIImage+ForceDecode.h │ │ ├── UIImage+ForceDecode.m │ │ ├── UIImage+GIF.h │ │ ├── UIImage+GIF.m │ │ ├── UIImage+MultiFormat.h │ │ ├── UIImage+MultiFormat.m │ │ ├── UIImageView+HighlightedWebCache.h │ │ ├── UIImageView+HighlightedWebCache.m │ │ ├── UIImageView+WebCache.h │ │ ├── UIImageView+WebCache.m │ │ ├── UIView+WebCache.h │ │ ├── UIView+WebCache.m │ │ ├── UIView+WebCacheOperation.h │ │ └── UIView+WebCacheOperation.m │ └── Target Support Files/ │ ├── AFNetworking/ │ │ ├── AFNetworking-dummy.m │ │ ├── AFNetworking-prefix.pch │ │ └── AFNetworking.xcconfig │ ├── IQKeyboardManager/ │ │ ├── IQKeyboardManager-dummy.m │ │ ├── IQKeyboardManager-prefix.pch │ │ └── IQKeyboardManager.xcconfig │ ├── JSONModel/ │ │ ├── JSONModel-dummy.m │ │ ├── JSONModel-prefix.pch │ │ └── JSONModel.xcconfig │ ├── MBProgressHUD/ │ │ ├── MBProgressHUD-dummy.m │ │ ├── MBProgressHUD-prefix.pch │ │ └── MBProgressHUD.xcconfig │ ├── MJRefresh/ │ │ ├── MJRefresh-dummy.m │ │ ├── MJRefresh-prefix.pch │ │ └── MJRefresh.xcconfig │ ├── Masonry/ │ │ ├── Masonry-dummy.m │ │ ├── Masonry-prefix.pch │ │ └── Masonry.xcconfig │ ├── Pods-CKMeiTuanShopView/ │ │ ├── Pods-CKMeiTuanShopView-acknowledgements.markdown │ │ ├── Pods-CKMeiTuanShopView-acknowledgements.plist │ │ ├── Pods-CKMeiTuanShopView-dummy.m │ │ ├── Pods-CKMeiTuanShopView-frameworks.sh │ │ ├── Pods-CKMeiTuanShopView-resources.sh │ │ ├── Pods-CKMeiTuanShopView.debug.xcconfig │ │ └── Pods-CKMeiTuanShopView.release.xcconfig │ └── SDWebImage/ │ ├── SDWebImage-dummy.m │ ├── SDWebImage-prefix.pch │ └── SDWebImage.xcconfig ├── LICENSE └── README.md
SYMBOL INDEX (36 symbols across 16 files)
FILE: CKMeiTuanShopView/CKMeiTuanShopView/ThridParty/SDPhotoBrowser/SDPhotoBrowserConfig.h
type SDWaitingViewMode (line 10) | typedef enum {
FILE: CKMeiTuanShopView/CKMeiTuanShopView/ThridParty/YBPopupMenu/YBRectConst.h
function UIKIT_STATIC_INLINE (line 11) | UIKIT_STATIC_INLINE CGFloat YBRectWidth(CGRect rect)
function UIKIT_STATIC_INLINE (line 16) | UIKIT_STATIC_INLINE CGFloat YBRectHeight(CGRect rect)
function UIKIT_STATIC_INLINE (line 21) | UIKIT_STATIC_INLINE CGFloat YBRectX(CGRect rect)
function UIKIT_STATIC_INLINE (line 26) | UIKIT_STATIC_INLINE CGFloat YBRectY(CGRect rect)
function UIKIT_STATIC_INLINE (line 31) | UIKIT_STATIC_INLINE CGFloat YBRectTop(CGRect rect)
function UIKIT_STATIC_INLINE (line 36) | UIKIT_STATIC_INLINE CGFloat YBRectBottom(CGRect rect)
function UIKIT_STATIC_INLINE (line 41) | UIKIT_STATIC_INLINE CGFloat YBRectLeft(CGRect rect)
function UIKIT_STATIC_INLINE (line 46) | UIKIT_STATIC_INLINE CGFloat YBRectRight(CGRect rect)
FILE: CKMeiTuanShopView/CKMeiTuanShopView/Utils/UITool.h
type ButtonTagLeft (line 14) | typedef NS_ENUM(NSInteger,ButtonTag){
FILE: CKMeiTuanShopView/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.h
type AFSSLPinningModeNone (line 25) | typedef NS_ENUM(NSUInteger, AFSSLPinningMode) {
FILE: CKMeiTuanShopView/Pods/IQKeyboardManager/IQKeyboardManager/Constants/IQKeyboardManagerConstants.h
type IQAutoToolbarBySubviews (line 43) | typedef NS_ENUM(NSInteger, IQAutoToolbarManageBehaviour) {
type IQPreviousNextDisplayModeDefault (line 59) | typedef NS_ENUM(NSUInteger, IQPreviousNextDisplayMode) {
type IQEnableModeDefault (line 75) | typedef NS_ENUM(NSUInteger, IQEnableMode) {
FILE: CKMeiTuanShopView/Pods/JSONModel/JSONModel/JSONModelTransformations/JSONKeyMapper.h
type NSString (line 8) | typedef NSString *(^JSONModelKeyMapBlock)(NSString *keyName);
FILE: CKMeiTuanShopView/Pods/MBProgressHUD/MBProgressHUD.h
type MBProgressHUDModeIndeterminate (line 39) | typedef NS_ENUM(NSInteger, MBProgressHUDMode) {
type MBProgressHUDAnimationFade (line 54) | typedef NS_ENUM(NSInteger, MBProgressHUDAnimation) {
type MBProgressHUDBackgroundStyleSolidColor (line 65) | typedef NS_ENUM(NSInteger, MBProgressHUDBackgroundStyle) {
FILE: CKMeiTuanShopView/Pods/MJRefresh/MJRefresh/Base/MJRefreshComponent.h
function interface (line 39) | interface MJRefreshComponent : UIView
FILE: CKMeiTuanShopView/Pods/Masonry/Masonry/MASUtilities.h
type UILayoutPriority (line 20) | typedef UILayoutPriority MASLayoutPriority;
type NSLayoutPriority (line 33) | typedef NSLayoutPriority MASLayoutPriority;
function id (line 76) | static inline id _MASBoxValue(const char *type, ...) {
FILE: CKMeiTuanShopView/Pods/Masonry/Masonry/NSArray+MASAdditions.h
type MASAxisTypeHorizontal (line 13) | typedef NS_ENUM(NSUInteger, MASAxisType) {
FILE: CKMeiTuanShopView/Pods/Masonry/Masonry/View+MASShorthandAdditions.h
function implementation (line 72) | implementation MAS_VIEW (MASShorthandAdditions)
function block (line 119) | void(NS_NOESCAPE ^)(MASConstraintMaker *))block {
function block (line 123) | void(NS_NOESCAPE ^)(MASConstraintMaker *))block {
function block (line 127) | void(NS_NOESCAPE ^)(MASConstraintMaker *))block {
FILE: CKMeiTuanShopView/Pods/SDWebImage/SDWebImage/SDImageCache.h
type SDImageCacheTypeNone (line 13) | typedef NS_ENUM(NSInteger, SDImageCacheType) {
FILE: CKMeiTuanShopView/Pods/SDWebImage/SDWebImage/SDImageCacheConfig.h
type SDImageCacheConfigExpireTypeAccessDate (line 12) | typedef NS_ENUM(NSUInteger, SDImageCacheConfigExpireType) {
FILE: CKMeiTuanShopView/Pods/SDWebImage/SDWebImage/SDWebImageDownloader.h
type SDWebImageDownloaderFIFOExecutionOrder (line 65) | typedef NS_ENUM(NSInteger, SDWebImageDownloaderExecutionOrder) {
type NSDictionary (line 84) | typedef NSDictionary<NSString *, NSString *> SDHTTPHeadersDictionary;
type NSMutableDictionary (line 85) | typedef NSMutableDictionary<NSString *, NSString *> SDHTTPHeadersMutable...
type SDHTTPHeadersDictionary (line 87) | typedef SDHTTPHeadersDictionary * _Nullable (^SDWebImageDownloaderHeader...
FILE: CKMeiTuanShopView/Pods/SDWebImage/SDWebImage/SDWebImageManager.h
type NSString (line 125) | typedef NSString * _Nullable(^SDWebImageCacheKeyFilterBlock)(NSURL * _Nu...
type NSData (line 127) | typedef NSData * _Nullable(^SDWebImageCacheSerializerBlock)(UIImage * _N...
FILE: CKMeiTuanShopView/Pods/SDWebImage/SDWebImage/SDWebImageTransition.h
type UIViewAnimationOptions (line 20) | typedef UIViewAnimationOptions SDWebImageAnimationOptions;
Condensed preview — 543 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,397K chars).
[
{
"path": ".gitignore",
"chars": 1407,
"preview": "# Xcode\n#\n# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore\n\n"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/AppDelegate/AppDelegate.h",
"chars": 272,
"preview": "//\n// AppDelegate.h\n// CKMeiTuanShopView\n//\n// Created by 池康 on 2018/7/31.\n// Copyright © 2018年 CK. All rights reser"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/AppDelegate/AppDelegate.m",
"chars": 2255,
"preview": "//\n// AppDelegate.m\n// CKMeiTuanShopView\n//\n// Created by 池康 on 2018/7/31.\n// Copyright © 2018年 CK. All rights reser"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Category/NSDate+Utilities.h",
"chars": 5000,
"preview": "\n#import <Foundation/Foundation.h>\n\n#define D_MINUTE\t60\n#define D_HOUR\t\t3600\n#define D_DAY\t\t86400\n#define D_WEEK\t\t604800"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Category/NSDate+Utilities.m",
"chars": 15244,
"preview": "\n#import \"NSDate+Utilities.h\"\n\nstatic const unsigned componentFlags = (NSYearCalendarUnit| NSMonthCalendarUnit | NSDayCa"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Category/NSString+Extension.h",
"chars": 2712,
"preview": "//\n// NSString+Extension.h\n// 汇银\n//\n// Created by 李小斌 on 14-11-27.\n// Copyright (c) 2014年 7ien. All rights reserved."
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Category/NSString+Extension.m",
"chars": 23145,
"preview": "//\n// NSString+Extension.m\n// 汇银\n//\n// Created by 李小斌 on 14-11-27.\n// Copyright (c) 2014年 7ien. All rights reserved."
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Category/UIImage+BlurImage.h",
"chars": 1628,
"preview": "//\n// UIImage+BlurImage.h\n// weather\n//\n// Created by ibokan on 14-10-31.\n// Copyright (c) 2014年 ibokan. All rights "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Category/UIImage+BlurImage.m",
"chars": 12240,
"preview": "//\n// UIImage+BlurImage.m\n// weather\n//\n// Created by ibokan on 14-10-31.\n// Copyright (c) 2014年 ibokan. All rights "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Category/UILabel+ChangeLineSpaceAndWordSpace.h",
"chars": 736,
"preview": "//\n// UILabel+ChangeLineSpaceAndWordSpace.h\n// AppPark\n//\n// Created by kongxin on 2018/6/30.\n//\n\n#import <UIKit/UIKi"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Category/UILabel+ChangeLineSpaceAndWordSpace.m",
"chars": 4641,
"preview": "//\n// UILabel+ChangeLineSpaceAndWordSpace.m\n// AppPark\n//\n// Created by kongxin on 2018/6/30.\n//\n\n#import \"UILabel+Ch"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Category/UILabel+Extensions.h",
"chars": 2311,
"preview": "//\n// UILabel+Extensions.h\n// AppPark\n//\n// Created by kongxin on 2018/6/28.\n//\n\n#import <UIKit/UIKit.h>\n\n/**\n * UIL"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Category/UILabel+Extensions.m",
"chars": 10464,
"preview": "//\n// UILabel+Extensions.m\n// AppPark\n//\n// Created by kongxin on 2018/6/28.\n//\n\n#import \"UILabel+Extensions.h\"\n#impo"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Category/UIView+Extension.h",
"chars": 1268,
"preview": "//\n// UIView+Extension.h\n//\n// Created by lanou3g on 15/8/3.\n// Copyright (c) 2015年 7Kir. All rights reserved.\n//\n\n#i"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Category/UIView+Extension.m",
"chars": 4456,
"preview": "//\n// UIView+Extension.m\n//\n// Created by lanou3g on 15/8/3.\n// Copyright (c) 2015年 7Kir. All rights reserved.\n//\n\n#i"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Category/UIView+Helper.h",
"chars": 754,
"preview": "//\n// UIView+Helper.h\n// Qicai\n//\n// Created by eims on 15/6/6.\n// Copyright (c) 2015年 7ien. All rights reserved.\n//"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Category/UIView+Helper.m",
"chars": 689,
"preview": "//\n// UIView+Helper.m\n// Qicai\n//\n// Created by eims on 15/6/6.\n// Copyright (c) 2015年 7ien. All rights reserved.\n//"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Cell/ReserveEvluateCell.h",
"chars": 1300,
"preview": "//\n// ReserveEvluateCell.h\n// AppPark\n//\n// Created by 池康 on 2017/12/14.\n//\n\n#import <UIKit/UIKit.h>\n#import \"Evaluat"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Cell/ReserveEvluateCell.m",
"chars": 8196,
"preview": "//\n// ReserveEvluateCell.m\n// AppPark\n//\n// Created by 池康 on 2017/12/14.\n//\n\n#import \"ReserveEvluateCell.h\"\n\n@impleme"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Cell/TakeawayProductCardCell.h",
"chars": 1154,
"preview": "//\n// TakeawayProductCardCell.h\n// AppPark\n//\n// Created by 池康 on 2018/7/16.\n//\n\n#import <UIKit/UIKit.h>\n\n@interface "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Cell/TakeawayProductCardCell.m",
"chars": 11614,
"preview": "//\n// TakeawayProductCardCell.m\n// AppPark\n//\n// Created by 池康 on 2018/7/16.\n//\n\n#import \"TakeawayProductCardCell.h\"\n"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Cell/TakeawayProductCollectionCell.h",
"chars": 1367,
"preview": "//\n// TakeawayProductCollectionCell.h\n// AppPark\n//\n// Created by 池康 on 2018/7/16.\n//\n\n#import <UIKit/UIKit.h>\n#impor"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Cell/TakeawayProductCollectionCell.m",
"chars": 12185,
"preview": "//\n// TakeawayProductCollectionCell.m\n// AppPark\n//\n// Created by 池康 on 2018/7/16.\n//\n\n#import \"TakeawayProductCollec"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Cell/TakeawayProductListCell.h",
"chars": 1170,
"preview": "//\n// takeawayProductListCell.h\n// AppPark\n//\n// Created by 池康 on 2018/7/16.\n//\n\n#import <UIKit/UIKit.h>\n/**\n 商家列表主页样"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Cell/TakeawayProductListCell.m",
"chars": 11169,
"preview": "//\n// takeawayProductListCell.m\n// AppPark\n//\n// Created by 池康 on 2018/7/16.\n//\n\n#import \"TakeawayProductListCell.h\"\n"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Define/ColorMacro.h",
"chars": 1579,
"preview": "//\n// ColorMacro.h\n// exsd\n//\n// Created by CK on 2017/3/8.\n// Copyright © 2017年 CK. All rights reserved.\n// 颜色\n\n#if"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Define/CommonMacro.h",
"chars": 5227,
"preview": "//\n// CommonMacro.h\n// exsd\n//\n// Created by CK on 2017/4/12.\n// Copyright © 2017年 CK. All rights reserved.\n//\n\n#ifn"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Define/ParmMacro.h",
"chars": 372,
"preview": "//\n// ParmMacro.h\n// exsd\n//\n// Created by eshine on 2017/4/11.\n// Copyright © 2017年 jinyu. All rights reserved.\n//\n"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Info.plist",
"chars": 1561,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Model/EvaluateModel.h",
"chars": 1550,
"preview": "//\n// EvaluateModel.h\n// AppPark\n//\n// Created by 池康 on 2017/11/29.\n//\n\n#import <Foundation/Foundation.h>\n\n@interface"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Model/EvaluateModel.m",
"chars": 6397,
"preview": "//\n// EvaluateModel.m\n// AppPark\n//\n// Created by 池康 on 2017/11/29.\n//\n\n#import \"EvaluateModel.h\"\n\n@implementation Ev"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Model/NewShopListModel.h",
"chars": 1395,
"preview": "//\n// NewShopListModel.h\n// AppPark\n//\n// Created by 池康 on 2018/3/7.\n//\n\n#import <Foundation/Foundation.h>\n\n@interfac"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Model/NewShopListModel.m",
"chars": 379,
"preview": "//\n// NewShopListModel.m\n// AppPark\n//\n// Created by 池康 on 2018/3/7.\n//\n\n#import \"NewShopListModel.h\"\n\n@implementatio"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Model/NewShopModel.h",
"chars": 3210,
"preview": "//\n// NewShopModel.h\n// AppPark\n//\n// Created by 池康 on 2018/3/6.\n//\n\n#import <Foundation/Foundation.h>\n\n\n@protocol Co"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Model/NewShopModel.m",
"chars": 1041,
"preview": "//\n// NewShopModel.m\n// AppPark\n//\n// Created by 池康 on 2018/3/6.\n//\n\n#import \"NewShopModel.h\"\n\n@implementation NewSho"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Model/ShoppingCartOrderListInfo.h",
"chars": 595,
"preview": "//\n// OrderListInfo.h\n// AppPark\n//\n// Created by kongxin on 2018/7/16.\n//\n\n#import \"JSONModel.h\"\n\n@interface Shoppin"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Model/ShoppingCartOrderListInfo.m",
"chars": 237,
"preview": "//\n// OrderListInfo.m\n// AppPark\n//\n// Created by kongxin on 2018/7/16.\n//\n\n#import \"ShoppingCartOrderListInfo.h\"\n\n@i"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/AppIcon.appiconset/Contents.json",
"chars": 1590,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"iphone\",\n \"size\" : \"20x20\",\n \"scale\" : \"2x\"\n },\n {\n \"idiom\""
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Contents.json",
"chars": 62,
"preview": "{\n \"info\" : {\n \"version\" : 1,\n \"author\" : \"xcode\"\n }\n}"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/Already collected.imageset/Contents.json",
"chars": 364,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/Contents.json",
"chars": 62,
"preview": "{\n \"info\" : {\n \"version\" : 1,\n \"author\" : \"xcode\"\n }\n}"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/back_grey.imageset/Contents.json",
"chars": 348,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/back_white.imageset/Contents.json",
"chars": 350,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/bg-shadow.imageset/Contents.json",
"chars": 348,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/collect_grey.imageset/Contents.json",
"chars": 354,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/collect_white.imageset/Contents.json",
"chars": 356,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/coupons.imageset/Contents.json",
"chars": 344,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/icon-Packup.imageset/Contents.json",
"chars": 354,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/icon-Slidingback.imageset/Contents.json",
"chars": 364,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/icon-coupons.imageset/Contents.json",
"chars": 354,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/icon-delete.imageset/Contents.json",
"chars": 352,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/icon-discounts.imageset/Contents.json",
"chars": 358,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/icon-enterprise.imageset/Contents.json",
"chars": 360,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/icon-folding.imageset/Contents.json",
"chars": 354,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/icon-merchants.imageset/Contents.json",
"chars": 358,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/icon-messagecenter.imageset/Contents.json",
"chars": 368,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/icon-new.imageset/Contents.json",
"chars": 346,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/icon-reference.imageset/Contents.json",
"chars": 358,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/icon-sale.imageset/Contents.json",
"chars": 348,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/icon-search box.imageset/Contents.json",
"chars": 360,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/icon-selling.imageset/Contents.json",
"chars": 354,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/icon-sentiment.imageset/Contents.json",
"chars": 358,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/icon-shoppingcart.imageset/Contents.json",
"chars": 366,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/message_grey.imageset/Contents.json",
"chars": 354,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/message_white.imageset/Contents.json",
"chars": 356,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/more_grey.imageset/Contents.json",
"chars": 348,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/more_white.imageset/Contents.json",
"chars": 350,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/shadow.imageset/Contents.json",
"chars": 342,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/sousuo_white.imageset/Contents.json",
"chars": 354,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/NewShopProduct/yilingqu.imageset/Contents.json",
"chars": 346,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/Contents.json",
"chars": 62,
"preview": "{\n \"info\" : {\n \"version\" : 1,\n \"author\" : \"xcode\"\n }\n}"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/but-shut.imageset/Contents.json",
"chars": 346,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/checkbox_checked2.imageset/Contents.json",
"chars": 364,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-addition.imageset/Contents.json",
"chars": 356,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-address-gray.imageset/Contents.json",
"chars": 364,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-address.imageset/Contents.json",
"chars": 354,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-appraise.imageset/Contents.json",
"chars": 356,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-card.imageset/Contents.json",
"chars": 348,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-certification.imageset/Contents.json",
"chars": 366,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-click-shaixuan.imageset/Contents.json",
"chars": 368,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-click-up.imageset/Contents.json",
"chars": 356,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-click.imageset/Contents.json",
"chars": 350,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-collect-red.imageset/Contents.json",
"chars": 362,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-collect-white.imageset/Contents.json",
"chars": 366,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-collect.imageset/Contents.json",
"chars": 354,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-confirm.imageset/Contents.json",
"chars": 354,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-contact.imageset/Contents.json",
"chars": 354,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-dianpu.imageset/Contents.json",
"chars": 352,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-dingwei.imageset/Contents.json",
"chars": 354,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-footprint.imageset/Contents.json",
"chars": 358,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-free.imageset/Contents.json",
"chars": 348,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-idcard.imageset/Contents.json",
"chars": 352,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-localize-white.imageset/Contents.json",
"chars": 368,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-localize.imageset/Contents.json",
"chars": 356,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-no service.imageset/Contents.json",
"chars": 360,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-particulars.imageset/Contents.json",
"chars": 362,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-pay.imageset/Contents.json",
"chars": 346,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-prompting.imageset/Contents.json",
"chars": 358,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-quantity.imageset/Contents.json",
"chars": 356,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-refund.imageset/Contents.json",
"chars": 352,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-refunds.imageset/Contents.json",
"chars": 354,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-scoring.imageset/Contents.json",
"chars": 354,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-search-gray.imageset/Contents.json",
"chars": 362,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-search-white.imageset/Contents.json",
"chars": 364,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-sequencing.imageset/Contents.json",
"chars": 360,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-service.imageset/Contents.json",
"chars": 354,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-shang.imageset/Contents.json",
"chars": 350,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-sharing.imageset/Contents.json",
"chars": 354,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-shop.imageset/Contents.json",
"chars": 348,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-shoucang.imageset/Contents.json",
"chars": 356,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-shut down.imageset/Contents.json",
"chars": 358,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-smile.imageset/Contents.json",
"chars": 350,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-state.imageset/Contents.json",
"chars": 350,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-subtraction.imageset/Contents.json",
"chars": 362,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-succeed.imageset/Contents.json",
"chars": 354,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-tab-black.imageset/Contents.json",
"chars": 358,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-tab-dwon.imageset/Contents.json",
"chars": 356,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-tab-up.imageset/Contents.json",
"chars": 352,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-tab-white.imageset/Contents.json",
"chars": 358,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-telephone.imageset/Contents.json",
"chars": 358,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-time-gray.imageset/Contents.json",
"chars": 358,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-tips.imageset/Contents.json",
"chars": 348,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-unckeck.imageset/Contents.json",
"chars": 354,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-wait.imageset/Contents.json",
"chars": 348,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon-yuyue.imageset/Contents.json",
"chars": 350,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon_ arrow_down_black.imageset/Contents.json",
"chars": 374,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon_infoIocation.imageset/Contents.json",
"chars": 364,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon_infosearch.imageset/Contents.json",
"chars": 360,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon_location_ash.imageset/Contents.json",
"chars": 364,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon_return_black.imageset/Contents.json",
"chars": 364,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon_round.imageset/Contents.json",
"chars": 350,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/icon_wepay2.imageset/Contents.json",
"chars": 352,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/ServiceReservation/locate.imageset/Contents.json",
"chars": 306,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/Contents.json",
"chars": 62,
"preview": "{\n \"info\" : {\n \"version\" : 1,\n \"author\" : \"xcode\"\n }\n}"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/ShopTagIcon/Contents.json",
"chars": 62,
"preview": "{\n \"info\" : {\n \"version\" : 1,\n \"author\" : \"xcode\"\n }\n}"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/ShopTagIcon/but_close.imageset/Contents.json",
"chars": 348,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/ShopTagIcon/icon_brd.imageset/Contents.json",
"chars": 346,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/ShopTagIcon/icon_dwon_triangle.imageset/Contents.json",
"chars": 366,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/ShopTagIcon/icon_new.imageset/Contents.json",
"chars": 346,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/ShopTagIcon/icon_sale.imageset/Contents.json",
"chars": 348,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/ShopTagIcon/icon_unfold_gary.imageset/Contents.json",
"chars": 362,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/ShopTagIcon/icon_unfold_white.imageset/Contents.json",
"chars": 364,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/ShopTagIcon/icon_up_gray.imageset/Contents.json",
"chars": 354,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/ShopTagIcon/lab_bg_red.imageset/Contents.json",
"chars": 350,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/ShopTagIcon/lab_close_yellow.imageset/Contents.json",
"chars": 362,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/ShopTagIcon/lab_company.imageset/Contents.json",
"chars": 352,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/ShopTagIcon/lab_con_green.imageset/Contents.json",
"chars": 356,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/ShopTagIcon/lab_dit_yellow.imageset/Contents.json",
"chars": 358,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/ShopTagIcon/lab_invite.imageset/Contents.json",
"chars": 350,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/ShopTagIcon/lab_like.imageset/Contents.json",
"chars": 346,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/ShopTagIcon/lab_np.imageset/Contents.json",
"chars": 342,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/ShopTagIcon/lab_personal.imageset/Contents.json",
"chars": 354,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/ShopTagIcon/lab_red.imageset/Contents.json",
"chars": 344,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/ShopTagIcon/lab_ren_cyan.imageset/Contents.json",
"chars": 354,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/ShopTagIcon/lab_rest.imageset/Contents.json",
"chars": 346,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/ShopTagIcon/lab_sale_red.imageset/Contents.json",
"chars": 354,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/ShopTagIcon/lab_sie.imageset/Contents.json",
"chars": 344,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/bg_coupon_red.imageset/Contents.json",
"chars": 356,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/bg_coupon_yellow.imageset/Contents.json",
"chars": 362,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/bg_coupons.imageset/Contents.json",
"chars": 350,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/but_add_gary.imageset/Contents.json",
"chars": 354,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/but_add_yellow.imageset/Contents.json",
"chars": 358,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/but_click.imageset/Contents.json",
"chars": 348,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/but_del.imageset/Contents.json",
"chars": 350,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/but_edit_14.imageset/Contents.json",
"chars": 352,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/but_hay_white.imageset/Contents.json",
"chars": 356,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/but_hay_yel.imageset/Contents.json",
"chars": 352,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/but_reduce.imageset/Contents.json",
"chars": 350,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/but_reduce_gary.imageset/Contents.json",
"chars": 360,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/but_return_bg.imageset/Contents.json",
"chars": 356,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/but_uhy_white.imageset/Contents.json",
"chars": 356,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/but_unh_gary.imageset/Contents.json",
"chars": 354,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/icon-announcement.imageset/Contents.json",
"chars": 364,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/icon_back_white.imageset/Contents.json",
"chars": 360,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/icon_chili.imageset/Contents.json",
"chars": 350,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/icon_cop_click.imageset/Contents.json",
"chars": 358,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/icon_next_black.imageset/Contents.json",
"chars": 360,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/icon_state.imageset/Contents.json",
"chars": 350,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/icon_takeout.imageset/Contents.json",
"chars": 354,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/placeholdImg/Contents.json",
"chars": 62,
"preview": "{\n \"info\" : {\n \"version\" : 1,\n \"author\" : \"xcode\"\n }\n}"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/placeholdImg/img_135.imageset/Contents.json",
"chars": 344,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/placeholdImg/img_280.imageset/Contents.json",
"chars": 344,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/placeholdImg/img_30.imageset/Contents.json",
"chars": 342,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/placeholdImg/img_30_yj.imageset/Contents.json",
"chars": 348,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/placeholdImg/img_375.imageset/Contents.json",
"chars": 344,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/placeholdImg/img_50.imageset/Contents.json",
"chars": 342,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/placeholdImg/img_60.imageset/Contents.json",
"chars": 342,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/placeholdImg/img_80.imageset/Contents.json",
"chars": 342,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/placeholdImg/img_82.imageset/Contents.json",
"chars": 342,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/placeholdImg/img_86.imageset/Contents.json",
"chars": 342,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/star/Contents.json",
"chars": 62,
"preview": "{\n \"info\" : {\n \"version\" : 1,\n \"author\" : \"xcode\"\n }\n}"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/star/icon_str_gar_10.imageset/Contents.json",
"chars": 360,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/star/icon_str_gary_20.imageset/Contents.json",
"chars": 362,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/star/icon_str_gary_25.imageset/Contents.json",
"chars": 362,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/star/icon_str_yel_10.imageset/Contents.json",
"chars": 360,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/star/icon_str_yel_20.imageset/Contents.json",
"chars": 360,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/star/icon_str_yel_25.imageset/Contents.json",
"chars": 360,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/takeawayIcon/Contents.json",
"chars": 62,
"preview": "{\n \"info\" : {\n \"version\" : 1,\n \"author\" : \"xcode\"\n }\n}"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/takeawayIcon/addProduct_icon.imageset/Contents.json",
"chars": 312,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"filename\" : \"addProduct_icon.png\",\n \"scale\" : \"1x\"\n }"
},
{
"path": "CKMeiTuanShopView/CKMeiTuanShopView/Supporting Flies/Assets.xcassets/Takeaway/takeawayIcon/but_bad_gary.imageset/Contents.json",
"chars": 354,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"scale\" : \"1x\"\n },\n {\n \"idiom\" : \"universal\",\n "
}
]
// ... and 343 more files (download for full content)
About this extraction
This page contains the full source code of the chikang/CKMeiTuanShopView GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 543 files (2.1 MB), approximately 594.9k tokens, and a symbol index with 36 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.