demo2动态加载显示商品详情页


/*
要求:实现 头像+昵称(多余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动态加载显示商品详情页的更多相关文章
- [ActionScript 3.0] AS3.0 动态加载显示内容
可以将下列任何外部显示资源加载到 ActionScript 3.0 应用程序中: 在 ActionScript 3.0 中创作的 SWF 文件 — 此文件可以是 Sprite.MovieClip 或扩 ...
- [安卓] 9、线程、VIEW、消息实现从TCP服务器获取数据动态加载显示
一.前言: 一般情况下从TCP服务器读取数据是放在一个线程里读的,但是刷新界面又不得不放在线程外面,所以需要用消息传递把线程里从TCP里获得的数据传送出来,然后根据数据对页面进行相应的刷新. 二.业务 ...
- ecshop 商品详情页显示同类别下的推荐商品
1.打开goods.php文件找到下面代码 $smarty->assign('goods_rank', get_goods_rank($goods_id)); // 商品的销售排名 在上面的代码 ...
- ie6,7下js动态加载图片不显示错误
ie6,7下js动态加载图片不显示错误 先描述一下出现这种匪夷所思bug的背景: 我在页面加载的时候加载一堆小缩略图,<a href="javascript:void(0);" ...
- 用js原生加jquery实现下拉跳转至商品详情页,上拉回到商品简介
在做一个商城的项目时,做到商品详情页的时候需要实现这种下拉跳转到商品详情页加载许多图片,上拉回到商品简介的效果,并且需要用户在滑动时有一种费力的感觉.最初是通过iscroll插件实现的,但这个插件在使 ...
- Qt:使用Model-View,动态的加载显示数据
共有 main.cpp, Widget.h, Widget.cpp, Widget.ui, MyModel.h, MyModel.cpp 六个文件. 可从此下载整个工程文件: /Files/biao/ ...
- Ecshop商品详情页显示当前会员等级价格
会员登录状态下,在ECSHOP商品详情页的本店售价中显示当前登录会员对应的等级价格,在未登录状态下,则还默认显示原来的本店售价. 解决方法: 这个需要修改ECSHOP程序代码来实现. 打开文件 /in ...
- bootstrap模态框modal使用remote动态加载内容,第二次加载显示相同内容解决办法
bootstrap的modal中,使用remote可以动态加载页面到modal-body中,并弹窗显示 如果提供的是 URL,将利用 jQuery 的 load 方法从此 URL 地址加载要展示的内容 ...
- 在aspx页动态加载ascx页面内容,给GridView控件绑定数据
在aspx页动态加载ascx页面内容 //加载ascx页面内容Control c1 = this.Page.LoadControl("WebUserControl1.ascx"); ...
随机推荐
- 什么是electron
Electron 是什么 定义 Electron是一个能让你使用传统前端技术(Nodejs, Javascript, HTML, CSS)开发一个跨平台桌面应用的框架.这里所说的桌面应用指的是在Win ...
- Java入门系列之final
前言 在C#经典面试中掺杂过Java的final关键字,主要用于类不能被继承,在C#则是利用关键字seal修饰类为密封类,而在Java中的final关键字的具体用法包含C#中const.readonl ...
- 从零开始学Electron笔记(四)
在之前的文章我们介绍了一下Electron的这个remote模块,接下来我们继续说一下Electron的右键菜单的制作. 在我们日常我们使用的软件中都会存在右键菜单的情况,比如我们用到的浏览器,开发所 ...
- python 将指定文件夹中的指定文件放入指定文件夹中
import os import shutil import re #获取指定文件中文件名 def get_filename(filetype): name =[] final_name_list = ...
- 概率图模型(CPD)(二)
CPD是conditional probability distribution的缩写,翻译成中文叫做 条件概率分布.在概率图中,条件概率分布是一个非常重要的概念.因为概率图研究的是随机变量之间的练习 ...
- Python函数01/函数的初识/函数的定义/函数调用/函数的返回值/函数的参数
Python函数01/函数的初识/函数的定义/函数调用/函数的返回值/函数的参数 内容大纲 1.函数的初识 2.函数的定义 3.函数的调用 4.函数的返回值 5.函数的参数 1.函数初识 # def ...
- Qt-数据库操作SQLite
1 简介 参考视频:https://www.bilibili.com/video/BV1XW411x7NU?p=88 说明:本文对在Qt中操作SQLite做简要说明. SQLite:SQLite 是 ...
- 用scratch编程大炮打幽灵
首先来看看效果: 是不是很炫酷呢?想知道具体程序的话请关注微信公众号!
- 【JVM之内存与垃圾回收篇】程序计数器
程序计数器 介绍 JVM 中的程序计数寄存器(Program Counter Register)中,Register 的命名源于 CPU 的寄存器,寄存器存储指令相关的现场信息.CPU 只有把数据装载 ...
- Python中ftplib模块的使用
ftplib模块的主要接口 # from ftplib import FTP #加载ftp模块 # ftp=FTP() #设置变量 # ftp.set_debuglevel(2) #打开调试级别2,显 ...