精华内容
下载资源
问答
  • iOS 商城开发

    2016-04-06 17:37:00
    一、移动商城结构 商品展示体系、会员及支付体系、其他辅助功能、后台管理系统。 二、移动商城的功能 1.购物车:添加商品,删除商品,计算价格,结账; 2.会员管理:注册(会员的个人信息),登录...

    一、移动商城结构

    商品展示体系、会员及支付体系、其他辅助功能、后台管理系统。

    172026_0x3n_2565014.jpg

    172201_QlHk_2565014.jpg

    二、移动商城的功能

    1.购物车:添加商品,删除商品,计算价格,结账;

    2.会员管理:注册(会员的个人信息),登录,会员管理(增加,删除,更改,查询),会员统计功能(实现会员订购成交信息),后期会产生很多数据,用于二次营销或者商品结构的优化;

    3.订单中心:产品历史订单管理(多单一起支付,单批支付,是否朋友代付,是否使用优惠券),查询缺货,发货,退货管理(与商家后台系统对接,是否发货,及时剩余库存量);

    4.支付功能:支持货到付款,手机支付,信用卡支付;

    5.物流跟踪:能让用户下单后,随时了解自己产品的动态;

    6.评价管理:用户评价管理和用户评价审核;

    7.商品管理:商品管理(增加,删除,更改,查询),上传商品图片,删除商品图片,商品详情展示;

    8.产品二维码:每个产品单独产生一个二维码,只要轻轻一扫就可以浏览该产品的详情;

    9.互动分享:用户可以将产品的信息通过微博,微信,短信进行分享;

    10.售前沟通售后服务:实现即时通讯功能,使商家与客户无隔阂。


    转载于:https://my.oschina.net/GeeksChen/blog/653773

    展开全文
  • IOS 商城首页简单布局

    千次阅读 2017-04-18 09:03:29
    1.商城首页用的是一个table 2.头部应该放的是一个轮播图,没写三方一堆自己随便找一个就好 3.中间用的是cell,cell上铺了个scrollview 嵌套了个collectionView 4.底部是footView,上铺collectionView 5.他们的点击...

    模块化布局

    1.商城首页用的是一个table

    2.头部应该放的是一个轮播图,没写三方一堆自己随便找一个就好

    3.中间用的是cell,cell上铺了个scrollview 嵌套了个collectionView

    4.底部是footView,上铺collectionView

    5.他们的点击事件没写,根据个人习惯使用代理或这获取对应View的父controller,在view里跳转

    6.如有不足请指教

    git: https://github.com/SpadeZach/ShopDemo-master.git

    展开全文
  • iOS 商城类 app 首页的实现  很多人做 iOS开发的人员都应该写过这样的界面,但是呢,具体怎么去优化写这样的界面是我们需要考虑的,对于这样的界面动辄上千行代码在控制器里面"活跃"着,后期维护成本大大增加,现在我...

    iOS 商城类 app 首页的实现

        很多人做 iOS开发的人员都应该写过这样的界面,但是呢,具体怎么去优化写这样的界面是我们需要考虑的,对于这样的界面动辄上千行代码在控制器里面"活跃"着,后期维护成本大大增加,现在我简单的说一下我的实现思路,这样的界面无非就是 collectionView 或者 tableView. 举个简单的例子,以 tableView 为例吧,绝大数 app 首页基本都是第一个分区是个 bannar, 其实是分类,其次可能还是分类,最后是列表,一般这个时候,我的习惯是将每一块自定义 view, 然后当做 tableView 的 sectionHeaderView, 最后一个是 cell,当然你也可以将每一块携程 cell 也是可以的,因为 sectionHeaderView 也是可以复用的,当然,如果就是三四个分区是否复用其实差不多(如果大家觉得有必要复用,请记得在下面留言,然后我们一起探讨一下嘛). 上个图,很丑,简单的看一下就好了,不要介意

    1.第一部分代码: 

    #import "SectionHeaderViewOne.h"
    
    @interface SectionHeaderViewOne ()
    
    @property (nonatomic,strong) UIImageView *hotel_image;
    @property (nonatomic,strong) UILabel *hotel_type;
    @property (nonatomic,strong) UIButton *hotel_rate;
    @property (nonatomic,strong) UIButton *hotel_address;
    
    @end
    
    @implementation SectionHeaderViewOne
    
    - (instancetype)initWithFrame:(CGRect)frame
    {
        self = [super initWithFrame:frame];
        if (self) {
            [self setupUI];
        }
        return self;
    }
    
    - (void)setupUI {
        [self addSubview:self.hotel_image];
        [self addSubview:self.hotel_type];
        [self addSubview:self.hotel_rate];
        [self addSubview:self.hotel_address];
    }
    
    #pragma mark --- 懒加载 ----
    - (UIImageView *)hotel_image {
        if (!_hotel_image) {
            _hotel_image = [[UIImageView alloc] init];
            [_hotel_image setFrame:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height - 50)];
            _hotel_image.image = [UIImage imageNamed:@"timg.jpg"];
            _hotel_image.contentMode =  UIViewContentModeScaleToFill;
        }
        return _hotel_image;
    }
    
    -(UILabel *)hotel_type {
        if (!_hotel_type) {
            _hotel_type = [[UILabel alloc] init];
            [_hotel_type setFrame:CGRectMake(10, self.frame.size.height - 100, 100, 50)];
            _hotel_type.font = [UIFont systemFontOfSize:18];
            _hotel_type.text = @"7天";
            _hotel_type.textColor = [UIColor whiteColor];
        }
        return _hotel_type;
    }
    
    - (UIButton *)hotel_rate {
        if (!_hotel_rate) {
            _hotel_rate = [UIButton buttonWithType:UIButtonTypeCustom];
            [_hotel_rate setFrame:CGRectMake(self.frame.size.width - 100, self.hotel_type.frame.origin.y, 100, 50)];
            [_hotel_rate setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
            _hotel_rate.titleLabel.font = [UIFont systemFontOfSize:18];
            [_hotel_rate setTitle:@"查看评价" forState:UIControlStateNormal];
        }
        return _hotel_rate;
    }
    
    - (UIButton *)hotel_address {
        if (!_hotel_address) {
            _hotel_address = [UIButton buttonWithType:UIButtonTypeCustom];
            [_hotel_address setFrame:CGRectMake(10, CGRectGetMaxY(self.hotel_image.frame), self.frame.size.width - 20, 50)];
            [_hotel_address setTitle:@"地址: 北京天安门" forState:UIControlStateNormal];
            [_hotel_address setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];
            [_hotel_address setTitleColor:[UIColor purpleColor] forState:UIControlStateNormal];
            _hotel_address.titleLabel.font = [UIFont systemFontOfSize:17];
        }
        return _hotel_address;
    }
    

    2.第二部分的话,就稍微麻烦点,因为上面嵌套了一个 collectionView

    先自定义 collectionView, 在自定义 collectionViewCell, 最后也可以自定义一个 view, 将其作为 collectionView 的父视图 (我是这样写的,我个人觉得没有多大的必要, 简单事物复杂化了)

    collectiomView.m 的代码 

    #import "CollectionView.h"
    #import "CollectionViewCell.h"
    
    
    @interface CollectionView () <UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout>
    
    @end
    
    static NSString *kIdentify = @"CollectionViewCell";
    
    @implementation CollectionView
    
    -(instancetype)initWithFrame:(CGRect)frame collectionViewLayout:(UICollectionViewLayout *)layout {
        if (self = [super initWithFrame:frame collectionViewLayout:layout]) {
            self.delegate = self;
            self.dataSource = self;
            self.alwaysBounceVertical = YES;
            [self registerNib:[UINib nibWithNibName:kIdentify bundle:[NSBundle mainBundle]] forCellWithReuseIdentifier:kIdentify];
        }
        return self;
    }
    
    
    #pragma mark --- 代理 ----
    #pragma mark  设置CollectionView的组数
    - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{
        return 1;
    }
    
    #pragma mark  设置CollectionView每组所包含的个数
    - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
    {
        return self.imgArrays.count;
    }
    
    #pragma mark  设置CollectionCell的内容
    // The cell that is returned must be retrieved from a call to -dequeueReusableCellWithReuseIdentifier:forIndexPath:
    - (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
            CollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:kIdentify forIndexPath:indexPath];
        cell.type_img.image = [UIImage imageNamed:(self.imgArrays[indexPath.row])];
            return cell;
    }
        
    
    
    #pragma mark  定义每个UICollectionView的大小
    - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{
        return CGSizeMake([UIScreen mainScreen].bounds.size.width / 5, 100);
    }
    
    
    
    #pragma mark  定义整个CollectionViewCell与整个View的间距
    - (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
    {
        return UIEdgeInsetsMake(0, 0, 0, 0);//(上、左、下、右)
    }
    
    
    #pragma mark  定义每个UICollectionView的横向间距
    - (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section
    {
        return 0;
    }
    
    #pragma mark  定义每个UICollectionView的纵向间距
    - (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section
    {
        return 0;
    }
    
    #pragma mark  点击CollectionView触发事件
    -(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
        
        
    }
    
    #pragma mark  设置CollectionViewCell是否可以被点击
    - (BOOL)collectionView:(UICollectionView *)collectionView shouldSelectItemAtIndexPath:(NSIndexPath *)indexPath{
        return YES;
    }
    

    collectionViewCell 用 xib 就好了,这个就不再啰嗦了

    3. 自定义 tableView

    #import "HotelTableView.h"
    #import "SectionHeaderViewOne.h"
    #import "SectionHeaderViewTwo.h"
    #import "CollectionView.h"
    
    
    @interface HotelTableView () <UITableViewDelegate,UITableViewDataSource>
    
    @end
    
    @implementation HotelTableView
    
    - (instancetype)init
    {
        self = [super init];
        if (self) {
            self.dataSource = self;
            self.delegate = self;
            UIView *footerView = [[UIView alloc] init];
            footerView.backgroundColor = [UIColor lightGrayColor];
            self.tableFooterView = footerView;
        }
        return self;
    }
    
    
    - (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
        if (section == 0) {
            return 0;
        }else if (section == 1){
            return 0;
        }else {
            return 10;
        }
    }
    
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
        return 3;
    }
    
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
        static NSString *cell_id = @"cell_id";
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cell_id];
        if (!cell) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cell_id];
        }
        cell.textLabel.text = @"简单的测试";
        return cell;
    }
    
    - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
        if (section == 0) {
            SectionHeaderViewOne *headerView = [[SectionHeaderViewOne alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 200)];
            return headerView;
        }else if (section == 1){
            SectionHeaderViewTwo *headerView = [[SectionHeaderViewTwo alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 200)];
            headerView.imgArrays = @[@"04",@"10",@"42",@"51",@"70",@"80-2",@"80",@"10",@"04",@"51"];
            return headerView;
        }else {
            UILabel *label = [[UILabel alloc] init];
            [label setFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 60)];
            label.text = @"入住日期,3月24日";
            label.font = [UIFont systemFontOfSize:18];
            return label;
        }
    }
    
    
    - (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
        return 100;
    }
    
    
    - (CGFloat )tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
        if (section == 2) {
            return 60;
        }else {
            return 200;
        }
    }
    
    - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
        return 10;
    }
    

    4. 将 tableView 添加到控制器上面就好了

    #import "ViewController.h"
    #import "HotelTableView.h"
    
    @interface ViewController ()
    
    @property (nonatomic,strong) HotelTableView *tableView;
    
    
    @end
    
    @implementation ViewController
    
    -(HotelTableView *)tableView {
        if (!_tableView) {
            _tableView = [[HotelTableView alloc] init];
            [_tableView setFrame:self.view.bounds];
        }
        return _tableView;
    }
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        [self.view addSubview:self.tableView];
    }
    
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    

     

    以上就可以简单实现上面图的界面了,这样控制器里面看起来是不是很简洁,因为逻辑处理可以相应的分散到 tableView 以及子视图当中, 哪怕界面逻辑修改,维护起来成本也不至于太高,这是我的想法,欢迎各路大神拍砖

     

    转载于:https://my.oschina.net/alanTang123/blog/867363

    展开全文
  • 一个商城Demo,持续更新中 在Object-C中学习数据结构与算法之排序算法 iOS 音乐播放器之锁屏歌词+歌词解析+锁屏效果 XLsn0wPushTimePicker首尾时间选择器 iOS 高度封装自适应表单 自定义模态视图的转场动画 i....

    iOS精选源码

    微信自定义搜索框实现

    image

    一个商城Demo,持续更新中

    image

    在Object-C中学习数据结构与算法之排序算法

    image

    iOS 音乐播放器之锁屏歌词+歌词解析+锁屏效果

    XLsn0wPushTimePicker首尾时间选择器

    iOS 高度封装自适应表单

    image

    自定义模态视图的转场动画

    image

    iOS视频通话项目

    这可能这是封装最完善的多级列表了,求 Star~

    image

    NicooPlayer Swift4.1 视频播放器 支持旋转、锁屏、各种手势

    iOS优质博客

    iOS开发 KVO 的内部实现

    KVO是实现Cocoa Bindings的基础,它提供了一种方法,当某个属性改变时,相应的objects会被通知到。在其他语言中,这种观察者模式通常需要单独实现,而在Objective-C中,通常无须增加额外代码即可使用。概览 这是怎么实现的呢?其实这都是通过Objective-C强大的运行时(runtime)实现的。... 阅读原文

    聊聊 iOS Keychain

    某天,小熊碰见这样一个错误 Couldn't update the Keychain Item问题处理 ,网上搜索了下网上很多解决方案,依然百撕不得骑姐。后来参考下面两篇文章。才发现是用法不正确,网上好多一些错误用法的文章也是醉了。什么是Keychain?根据苹果的介绍,iOS设备中的Keychain是一个安全的存储容... 阅读原文

    WWDC2018—What is New in Cocoa Touch

    正文这篇文章是对WWDC2018关于Cocoa Touch新特性的翻译与总结。在What's New in Cocoa Touch这个session中,主要分为三个topic来讲的,下面一个一个来看。一、Framework updates一、性能优化方面1、scrolling在iOS12中首先对scrollview的滑... 阅读原文

    iOS 开发中的『库』

    看文章之前,你可以看下下面几个问题,如果你都会了,或许可以不看。.framework 是什么?怎么制作?谈一谈自己对动态库和静态库的理解。在项目中如何使用动态framework的 APP ?使用了动态framework 的 APP 能上架 Appstore 么?可以通过 framework 的方式实现 app 的热修复... 阅读原文

    iOS面试准备之思维导图

    以思维导图的方式对iOS常见的面试题知识点进行梳理复习,文章xmind点这下载,文章图片太大查看不了也点这下载https://github.com/MisterBooo/ReadyForBAT目录1.UI视图相关面试问题2.Objective-C语言特性相关面试问题3.Runtime相关面试问题4.内存管理相关面试问题... 阅读原文

    欢迎扫码关注微信公众号

    转载于:https://my.oschina.net/u/3588131/blog/1839539

    展开全文
  • 类似京东商城客户端应用iOS源码

    千次阅读 2016-05-25 10:22:02
    IOS商城,电商开源APP,类似京东商城,天猫商城,淘宝,去年开发的一个项目,现在把它分享出来。服务端是java 商城,对应项目是Shop-for-JavaWeb1.App使用MVC框架完成开发。2.使用CocoaPods引入各大第三方组件:pod...
  • JD-Mobile, 高仿IOS京东商城--停止更新
  • 上次的商城布局是oc语言写的 这次是swift 自动布局 一行两个 切换成一行一个 相互切换
  • iOS走近商城APP(一) iOS走近商城APP(二 购物车常用控件) iOS走近商城APP(三 WKWebView 商品规格选择框架封装) iOS走近商城APP(四 runloop应用 获取通讯录并处理) #####本篇文章主要内容 购物车的数据结构...
  • 京东商城IOS系统 操作使用手册 软件简介专业综合全面的网上购物商城百万种商品家 用电器手机数码服装电脑母婴化妆图书等十几大 类 功能特色 1 京东商城承诺所售商品 100%正品行货全国联保机打 发票价格更实 惠支持...
  • ios的app上传到商城流程和注意点,自己之前的一些经验,拿出来分享。
  • iOS-商城app 商品详情 商品介绍前言如图分析关键代码自定义导航栏商品页面 前言 在商城电商app类似淘宝,京东等中,会有比较复杂的商品详情页面,下面有个例子可供参考。 如图 分析 三个导航栏,需要自定义导航栏 ...
  • iOS- 商城缺筛选侧边栏

    千次阅读 2016-11-07 09:43:05
    即插即拔,基本支持自定义任何内脏,样式是怎样完全由你制定,Demo我做成了商城风格,怎样用全在于你自己。ZYSideSlipFilter的工作核心是数据源,它贯穿了整个工作流程。 我们来看结构图: ...
  • 第01节.课程介绍.mp4 第02节.内容综述.mp4 第03节.Swift版本历史和各版本特性快览.mp4 第04节.Swift和Objective-C的主要区别.mp4 第05节.swiftc:强大的命令行工具.mp4 第06节.REPL:Swift交互式解释器.mp4 ...
  • iOS模仿京东商城中的选择地区样式

    千次阅读 2016-08-15 17:27:03
    在ViewController文件中创建添加地址界面: @property(nonatomic,strong)UILabel *selectAreaLabel;...仿京东商城选择地区样式详细讲解源码Demo:http://download.csdn.net/detail/hbblzjy/9603813
  • iOS开发商城时会遇到 商品 详情 评论 三个视图筛选的页面, 这里封装了一个框架,可以使随意切换子视图界面,继承简单,也封装了滑条框架.效果图如下: 滑条框架.h文件 #import @interface ...
  • 1、登录到苹果的应用商店有什么要求(需要身份证验证?需要附合某些要求?)? 2、登录到应用商店限制开发语言吗?有人说必须是C语言开发的,其它语言只能越狱? 3、现在手机应用会不会有些饱合,个人开发有没有...
  • swift封装的椭圆形的商城搜索框
  • 之前写过一个仿淘宝商品详情页和加入购物车的demo,有许多朋友下载了,但是那份代码只适用于商品规格只有两种的商品,拓展性不强,可以参考思路,地址(https://github.com/qlyx/AddShoppingCart) ...
  • web商城倒计时一、时间方法,兼容ios二、倒计时总结 一、时间方法,兼容ios ios获取时间和安卓有个兼容性问题,ios只支持‘/’的时间格式,对于‘-’格式的时间格式,不能正确解析,安卓对于两种格式都支持,都能...
  • 商城 —— 由 3033 分享 ...忽然发现最近也只有值班才能写东西了,中间更新了两篇其他的断了下商城相关的文章,仔细看了看之前...前两篇文章:iOS走近商城APP(一) ,iOS走近商城APP(二 购物车常用控件)(今天
  • ###开篇 忽然发现最近也只有值班...前两篇文章:iOS走近商城APP(一) ,iOS走近商城APP(二 购物车常用控件)(今天值班整座大楼一如既往的静悄悄,胆小怪我咯-_-、)。 ####主要内容 使用WKWebView替换Webview WKWebVie...
  • 上篇文章:iOS走近商城APP(一)(今天值班整座大楼静悄悄,好恐怖-_-、)。 ####购物车相关 #####控件一 商品加入购物车前的规格选择界面 如上图中红色框内的内容,是可以显示商品的规格内容,进行单选,要设置他的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 609
精华内容 243
关键字:

ios商城