iOS的图表显示的实现
在app通常有家居展览的照片,显示广告。或者头条新闻。通常网易新闻client
如图,红框框的位置就是一个典型的图展,
熟悉iOS的人肯定知道,这个是个UIScrollview,里面加几张图片就可以实现,当然以下的三个小点点也是不可缺少的。
那做这个东西的思路就非常明晰了:首先这个类是个scrollview,然后在这个scrollview中加入imageview。然后给每一个imageview加入对应的事件就可以。
源码例如以下:
头文件:
//
// GalleryView.h
// Pitch
//
// Created by zhujinhui on 14-9-1.
// Copyright (c) 2014年 zhujinhui. All rights reserved.
// #import <UIKit/UIKit.h> /**
* the protocol of the gallery
*/
@protocol GalleryDelegate <NSObject> -(void)galleryViewItemDidClicked:(int)index; @end /** gallery is used to show a lot of images */ @interface GalleryView : UIScrollView @property (assign ,nonatomic) id<GalleryDelegate> mDelegate; /**
* set all the image to gallery
*/
-(void)setData:(NSArray *) data; @end
实现文件:
//
// GalleryView.m
// Pitch
//
// Created by zhujinhui on 14-9-1.
// Copyright (c) 2014年 zhujinhui. All rights reserved.
// #import "GalleryView.h" #define TAG_BTN_OFFSET 12345 @implementation GalleryView - (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
} /**
* set all the image to gallery
*/
-(void)setData:(NSArray *) data{
//if data is not a array of string,it will throw exception
@try {
//remove all the subview from gallery view
for (UIView *view in self.subviews) {
[view removeFromSuperview];
} //add view to gallery
for (int index = 0; index < [data count]; ++index) {
NSString *imageName = data[index];
UIImage *img = [UIImage imageNamed:imageName];
UIImageView *imgv = [[UIImageView alloc]initWithImage:img];
CGRect frame = CGRectMake(index * 320, 0, 320, 150);
[imgv setFrame:frame];
//add gesture to image
imgv.userInteractionEnabled = YES;
UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc]init];
[tapGestureRecognizer addTarget:self action:@selector(tapped:)];
[imgv addGestureRecognizer:tapGestureRecognizer]; //set tag
imgv.tag = TAG_BTN_OFFSET + index;
[self addSubview:imgv]; } }
@catch (NSException *exception) {
NSLog(@"%@",exception);
}
} -(BOOL)tapped:(UIGestureRecognizer *)gestureRecognizer{
//force convert index to integer
int index = (int) (gestureRecognizer.view.tag - TAG_BTN_OFFSET); if (self.mDelegate) {
if ([self.mDelegate respondsToSelector:@selector(galleryViewItemDidClicked:)]) {
[self.mDelegate galleryViewItemDidClicked:index];
}
}else{
NSLog(@"please set delegate");
} return TRUE;
} -(void)awakeFromNib{ } /*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
// Drawing code
}
*/ @end
iOS的图表显示的实现的更多相关文章
- storyboard在ios模拟器无法显示的问题
一.问题描述 1.在原有项目新建一个名称为test的storyboard类型的文件. 2.test.storyboard添加View Controller,并设置View Controller下Vie ...
- aChartEngine图表显示(一页显示多张图表)
在看本篇的时候,请确认已经看过了 某android平板项目开发笔记----aChartEngine图表显示(1) 不然,有些地方这里就不再说明… 关于XYMutilpleSeriesDataset 一 ...
- 使用Visifire+ArcGIS API for Silverlight实现Graphic信息的动态图表显示
原文:使用Visifire+ArcGIS API for Silverlight实现Graphic信息的动态图表显示 首先来看一看实现的效果: PS:原始的程序中更新曲线数据时添加了过渡的效果,具体可 ...
- 关于FusionCharts图表宽度width的设置问题导致图表显示异常的解决办法
关于FusionCharts图表宽度width的设置问题导致图表显示异常的解决办法 题设: 经常使用FusionCharts图表的朋友可能会遇到这个问题.就是在FusionCharts显示的时候有时候 ...
- 解决微信小程序的wx-charts插件tab切换时的显示会出现位置移动问题-tab切换时,图表显示错乱-实现滑动tab
解决Echarts在微信小程序tab切换时的显示会出现位置移动问题 tab切换时,图表显示错乱 <canvas class="kcanvas" canvas-id=" ...
- 在Bootstrap开发中解决Tab标签页切换图表显示问题
在做响应式页面的时候,往往需要考虑更多尺寸设备的界面兼容性,一般不能写死像素,以便能够使得界面元素能够根据设备的不同进行动态调整,但往往有时候还是碰到一些问题,如Tab标签第一页面正常显示,但是切换其 ...
- Xamarin iOS教程之显示和编辑文本
Xamarin iOS教程之显示和编辑文本 Xamarin iOS显示和编辑文本 在一个应用程序中,文字是非常重要的.它就是这些不会说话的设备的嘴巴.通过这些文字,可以很清楚的指定这些应用程序要表达的 ...
- 关于asp.net mvc中 weiui gallery中IOS 下不显示预览图片问题的解决方式
IOS 下面不显示预览. 结果去掉了红框中的缓存部分 就可以显示了 备忘,也帮助一下需要的朋友 @*<meta http-equiv="pragma" content=&qu ...
- 搭建自己的博客(十七):添加每日阅读量并使用highcharts通过图表显示
之前写了单篇博客的阅读量统计,今天添加了博客总阅读量统计,并且使用highcharts图表显示. 1.变化的部分
随机推荐
- Android开源项目大全 - 工具类
主要包括那些不错的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容.多媒体相关及其他. 一.依赖注入DI 通过依赖注入减少Vie ...
- 为什么 string.find()返回值是-1
之前好像在哪里见到过这个问题,时间有点久,想不起来了,今天写字符串又碰到这个问题,书上给出的定义是当string.find()没有找到时返回的是一个非常大的值,网上有人说是-1,两种说法都对,由于整数 ...
- 就是这么简单(续)!使用 RestAssuredMockMvc 测试 Spring MVC Controllers(转)
接我前面一篇文章关于RestAssured测试Restful web service的, RestAssured还有一个功能, 使用RestAssuredMockMvc 单元测试你的Spring MV ...
- Mongodb中更新的学习小结
今天继续很久没学习的mongodb的简单学习,今天来看的是更新.先来看简单的用法: use updatetest >switched to db updatetest 首先插入一下: db.th ...
- URAL1113(数学)
题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1113 根据样例分析: 1.沙漠只有500公里或者更短,这时很简单,一次搞定. 2.沙漠6 ...
- RVDS 3.1 下载地址及破解方法
RealView Development Suite 3.1 RVDS 3.1下载地址:https://silver.arm.com/download/Development_Tools/RVDS/ ...
- 【剑指offer】旋转数组的最小值
採用二分查找的策略,重点要考虑一些边界情况:旋转了0元素.即输入的是一个升序排列的数组.仅仅包括一个数字的数组.有非常多反复数字的数组等. AC代码: #include<stdio.h> ...
- sharpSVN说明文档
http://sharpsvn.open.collab.net/docs/walkthrough.htm
- SVN的命令行操作
最近在进行svn二次开发,使用的是svnkit.看了很多svnkit的api,渐渐发现都是和SVN的命令行操作对应的.顺便研究一下svn的命名行操作. 1.将文件checkout到本地目录: 基本命令 ...
- 一个极其简洁的Python网页抓取程序,自己主动从雅虎財经抓取股票数据
本程序使用Python 2.7.6编写,扩展了Python自带的HTMLParser,自己主动依据预设的股票代码列表,从Yahoo Finance抓取列表中的数据日期.股票名称.实时报价.当日变化率. ...