/*

要求:实现 头像+昵称(多余7位用...)

商品图片(根据商品实际的图片的大小进行动态的展示。按照一定的比例进行展示。)

产品简介。产品简介在商品图片的下边。并跟随商品图片的大小进行动态的收缩或者是展示。

考虑:实现功能之后,是否要做占位图 进行图片的占位??!

*/

难点:动态的加载。

实现:首先创建ui 然后请求数据 最后在主线程进行赋值 并且刷新ui 即可实现。

//

//  ACShowDetailVC.m

//  demo2详情动态加载展开

//

//  Created by Alice_ss on 2018/1/3.

//  Copyright © 2018年 AC. All rights reserved.

//

#import "ACShowDetailVC.h"

#import "JAppViewTools.h"

#import "JAppUtility.h"

#import "UIViewExt.h"

#import "AFNetworking.h"

#import "UIImageView+WebCache.h"

#define SCREENW [UIScreen mainScreen].bounds.size.width

#define SCREENH [UIScreen mainScreen].bounds.size.height

@interface ACShowDetailVC (){

    UIScrollView *bgScrollView;//最后边用一个scrollview比较方便

    UIView *contentView;//装内容的view

    UIImageView *iconIMG;

    UILabel *nicknameLabel;

    UIImageView *goodIMG;

    UILabel *goodIntro;

}

@end

@implementation ACShowDetailVC

- (void)viewDidLoad {

    [super viewDidLoad];

    [self createUI];

    //模拟请求数据

    [self performSelector:@selector(loadDates) withObject:nil afterDelay:2.0f];

}

#pragma mark - 模拟请求数据

- (void)loadDates{

    //请求完数据之后,从新绘制界面。

    //假如请求到了头像  昵称  商品图 商品描述

    [UIView animateWithDuration:1.0f animations:^{

        //在这里刷新主界面,展示新界面,在主线程中刷新ui

        dispatch_async(dispatch_get_main_queue(), ^{

            [self freshUI];

        });

    } completion:nil];

}

#pragma mark - 请求完数据之后从新刷新ui

- (void)freshUI{

    //设置内容

    [iconIMG sd_setImageWithURL:[NSURL URLWithString:@"https://tva2.sinaimg.cn/crop.0.0.100.100.50/0068QiKMjw8esxxwpxcxdj302s02s3yb.jpg"] placeholderImage:[UIImage imageNamed:@"icon_default"]];

    nicknameLabel.text = @"我是昵称。我的昵称是小可爱";

    [goodIMG sd_setImageWithURL:[NSURL URLWithString:@"https://tva2.sinaimg.cn/crop.0.0.100.100.50/0068QiKMjw8esxxwpxcxdj302s02s3yb.jpg"] placeholderImage:[UIImage imageNamed:@"icon_default"]];

    goodIntro.text = @"这个宝贝,人见人爱,花见花开。你一定会爱上她的。真的不信你看呀。我是一只宝贝详情,我是独一无二的存在。2018年一定要。。。。。。。。。。。。。。。。。。。。。。。。这个宝贝,人见人爱,花见花开。你一定会爱上她的。真的不信你看呀。我是一只宝贝详情,我是独一无二的存在。2018年一定要。。。。。。。。。。。。。。。。。。。。。。。。这个宝贝,人见人爱,花见花开。你一定会爱上她的。真的不信你看呀。我是一只宝贝详情,我是独一无二的存在。2018年一定要。。。。。。。。。。。。。。。。。。。。。。。。这个宝贝,人见人爱,花见花开。你一定会爱上她的。真的不信你看呀。我是一只宝贝详情,我是独一无二的存在。2018年一定要。。。。。。。。。。。。。。。。。。。。。。。。这个宝贝,人见人爱,花见花开。你一定会爱上她的。真的不信你看呀。我是一只宝贝详情,我是独一无二的存在。2018年一定要。。。。。。。。。。。。。。。。。。。。。。。。这个宝贝,人见人爱,花见花开。你一定会爱上她的。真的不信你看呀。我是一只宝贝详情,我是独一无二的存在。2018年一定要。。。。。。。。。。。。。。。。。。。。。。。。这个宝贝,人见人爱,花见花开。你一定会爱上她的。真的不信你看呀。我是一只宝贝详情,我是独一无二的存在。2018年一定要。。。。。。。。。。。。。。。。。。。。。。。。";

//    goodIntro.text = @"这个宝贝,人见人爱";

    //设置内容的位置及格式

    //1.名字最多显示8个字。多余的显示...

    if (nicknameLabel.text.length>8) {

        nicknameLabel.text = [[nicknameLabel.text substringWithRange:NSMakeRange(0, 7)]stringByAppendingString:@"..."];

    }

    //2.商品图片的高度按照比例进行显示

    [goodIMG sd_setImageWithURL:[NSURL URLWithString:@"https://tva2.sinaimg.cn/crop.0.0.100.100.50/0068QiKMjw8esxxwpxcxdj302s02s3yb.jpg"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {

        CGFloat scorW = goodIMG.width/image.size.width;

        CGFloat scroH = scorW *image.size.height;

        //从新设置goodimg的高度

        goodIMG.height = scroH;

        goodIntro.top = CGRectGetMaxY(goodIMG.frame)+10;

        goodIntro.height  = [JAppUtility getTextHeightWithView:goodIntro];

        contentView.height = CGRectGetMaxY(goodIntro.frame)+10;

        CGFloat offY =CGRectGetMaxY(contentView.frame)-SCREENH;

        NSLog(@"%f",offY);

        if(offY>0){

            bgScrollView.contentSize = CGSizeMake(SCREENW, SCREENH+offY+64);

        }else{

          bgScrollView.contentSize = CGSizeMake(SCREENW, SCREENH);

        }

    }];

}

#pragma mark - 界面ui

- (void)createUI{

//    self.view.backgroundColor = [UIColor grayColor];

    bgScrollView = [JAppViewTools getScrollView:CGRectMake(0, 64, SCREENW, SCREENH) :self];

    bgScrollView.contentSize = CGSizeMake(SCREENW, SCREENH);

    bgScrollView.backgroundColor = [UIColor grayColor];

    [self.view addSubview:bgScrollView];

    //1.大view

    contentView = [JAppViewTools getView:CGRectMake(0, 0, SCREENW, 300) :[UIColor whiteColor]];

    [bgScrollView addSubview:contentView];

    //2.头像

    iconIMG = [JAppViewTools getImageView:CGRectMake(15, 15, 44, 44) image:@"icon_default"];

    [contentView addSubview:iconIMG];

    //3.昵称

    nicknameLabel = [JAppViewTools getLabel:CGRectMake(CGRectGetMaxX(iconIMG.frame)+10, CGRectGetMidY(iconIMG.frame)-10, SCREENW-(CGRectGetMaxX(iconIMG.frame)+10), 20) :JTextFCMake([UIFont systemFontOfSize:15], [UIColor blackColor])];

    nicknameLabel.text = @"名字占位符";

    [contentView addSubview:nicknameLabel];

    //4.商品图

    goodIMG = [JAppViewTools getImageView:CGRectMake(CGRectGetMinX(iconIMG.frame), CGRectGetMaxY(iconIMG.frame)+10, SCREENW-CGRectGetMinX(iconIMG.frame)*2, 100) image:@"icon_default"];

    [contentView addSubview:goodIMG];

    //5.商品简介

    goodIntro = [JAppViewTools getLabel:CGRectMake(CGRectGetMinX(iconIMG.frame), CGRectGetMaxY(goodIMG.frame)+10, SCREENW-30, 30) :@"商品简介占位符" :JTextFCMake([UIFont systemFontOfSize:15], [UIColor redColor])];

    [contentView addSubview:goodIntro];

    contentView.height = CGRectGetMaxY(goodIntro.frame)+10;

}

- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

/*

#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    // Get the new view controller using [segue destinationViewController].

    // Pass the selected object to the new view controller.

}

*/

@end

喜欢的,想要demo的可以 邮箱联系我:673658917@qq.com.

如有任何问题,也可联系我邮箱,期待你。

业精于勤荒于嬉,行成于思毁于随。加油

demo2动态加载显示商品详情页的更多相关文章

  1. [ActionScript 3.0] AS3.0 动态加载显示内容

    可以将下列任何外部显示资源加载到 ActionScript 3.0 应用程序中: 在 ActionScript 3.0 中创作的 SWF 文件 — 此文件可以是 Sprite.MovieClip 或扩 ...

  2. [安卓] 9、线程、VIEW、消息实现从TCP服务器获取数据动态加载显示

    一.前言: 一般情况下从TCP服务器读取数据是放在一个线程里读的,但是刷新界面又不得不放在线程外面,所以需要用消息传递把线程里从TCP里获得的数据传送出来,然后根据数据对页面进行相应的刷新. 二.业务 ...

  3. ecshop 商品详情页显示同类别下的推荐商品

    1.打开goods.php文件找到下面代码 $smarty->assign('goods_rank', get_goods_rank($goods_id)); // 商品的销售排名 在上面的代码 ...

  4. ie6,7下js动态加载图片不显示错误

    ie6,7下js动态加载图片不显示错误 先描述一下出现这种匪夷所思bug的背景: 我在页面加载的时候加载一堆小缩略图,<a href="javascript:void(0);" ...

  5. 用js原生加jquery实现下拉跳转至商品详情页,上拉回到商品简介

    在做一个商城的项目时,做到商品详情页的时候需要实现这种下拉跳转到商品详情页加载许多图片,上拉回到商品简介的效果,并且需要用户在滑动时有一种费力的感觉.最初是通过iscroll插件实现的,但这个插件在使 ...

  6. Qt:使用Model-View,动态的加载显示数据

    共有 main.cpp, Widget.h, Widget.cpp, Widget.ui, MyModel.h, MyModel.cpp 六个文件. 可从此下载整个工程文件: /Files/biao/ ...

  7. Ecshop商品详情页显示当前会员等级价格

    会员登录状态下,在ECSHOP商品详情页的本店售价中显示当前登录会员对应的等级价格,在未登录状态下,则还默认显示原来的本店售价. 解决方法: 这个需要修改ECSHOP程序代码来实现. 打开文件 /in ...

  8. bootstrap模态框modal使用remote动态加载内容,第二次加载显示相同内容解决办法

    bootstrap的modal中,使用remote可以动态加载页面到modal-body中,并弹窗显示 如果提供的是 URL,将利用 jQuery 的 load 方法从此 URL 地址加载要展示的内容 ...

  9. 在aspx页动态加载ascx页面内容,给GridView控件绑定数据

    在aspx页动态加载ascx页面内容 //加载ascx页面内容Control c1 = this.Page.LoadControl("WebUserControl1.ascx"); ...

随机推荐

  1. day75 bbs项目☞后台管理+修改头像

    目录 一.后台管理之添加文章 二.修改用户头像 bbs项目总结 一.后台管理之添加文章 添加文章有两个需要注意的问题: 文章的简介切取,应该想办法获取到当前文章的文本内容后再截取字符 XSS攻击,由于 ...

  2. 使用wsl2時碰到的問題

    1.啓動wsl系统时出现“参考的对象类型不支持尝试的操作”. 解决方法: netsh winsock reset

  3. pointer-events:none 的应用

    相信很多人都遇到过 Retina屏的1px边框  的问题. 很多人都用 :before,:after 伪类 eg: .div:after { position: absolute; top: 0;   ...

  4. bzoj3383[Usaco2004 Open]Cave Cows 4 洞穴里的牛之四*

    bzoj3383[Usaco2004 Open]Cave Cows 4 洞穴里的牛之四 题意: 平面直角坐标系有n个点,从(0,0)出发,从一个点上可以跳到所有与它横纵坐标距离都≤2的点上,求最少步数 ...

  5. 适用于IE8浏览器的bootsarp下拉菜单(支持多选,全选)

    html部分代码,引用及整体项目Github项目地址:https://github.com/CNbozi/combobox 1 <!DOCTYPE html> <html lang= ...

  6. 洛谷P1063.能量项链

    题目描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定 ...

  7. vector基本用法

    Vector作为STL容器中的一员,使用频率非常高,因此对其基本用法和实用技巧进行记录,便于后期查询使用. 基本用法 #include <iostream> #include <ve ...

  8. STL源码剖析:序

    STL源码包含哪些内容 容器:STL的核心 适配器:容器都是在一种最底层的基础容器上使用适配器实现 空间配置器:提供内存的管理 迭代器:由于遍历容器中的数据 算法:由于操作容器中的数据,如排序,拷贝, ...

  9. linux中neovim+tmux安装与配置遇到的问题

    Neovim 安装与配置 安装 pip3 install neovim 之前安装过anaconda,默认安装python3和pip3 检查状态 :checkhealth 终端输入'nvim' 进入nv ...

  10. iPhone截长图的方法

    iPhone手机暂没有长图截取功能,所以我们只能通过别的方式进行长图截取. (2020年4月10日更新) ios13目前可以截长图了,不过只能在Safari中进行长图截取,而且存储形式为pdf格式,下 ...