在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的图表显示的实现的更多相关文章

  1. storyboard在ios模拟器无法显示的问题

    一.问题描述 1.在原有项目新建一个名称为test的storyboard类型的文件. 2.test.storyboard添加View Controller,并设置View Controller下Vie ...

  2. aChartEngine图表显示(一页显示多张图表)

    在看本篇的时候,请确认已经看过了 某android平板项目开发笔记----aChartEngine图表显示(1) 不然,有些地方这里就不再说明… 关于XYMutilpleSeriesDataset 一 ...

  3. 使用Visifire+ArcGIS API for Silverlight实现Graphic信息的动态图表显示

    原文:使用Visifire+ArcGIS API for Silverlight实现Graphic信息的动态图表显示 首先来看一看实现的效果: PS:原始的程序中更新曲线数据时添加了过渡的效果,具体可 ...

  4. 关于FusionCharts图表宽度width的设置问题导致图表显示异常的解决办法

    关于FusionCharts图表宽度width的设置问题导致图表显示异常的解决办法 题设: 经常使用FusionCharts图表的朋友可能会遇到这个问题.就是在FusionCharts显示的时候有时候 ...

  5. 解决微信小程序的wx-charts插件tab切换时的显示会出现位置移动问题-tab切换时,图表显示错乱-实现滑动tab

    解决Echarts在微信小程序tab切换时的显示会出现位置移动问题 tab切换时,图表显示错乱 <canvas class="kcanvas" canvas-id=" ...

  6. 在Bootstrap开发中解决Tab标签页切换图表显示问题

    在做响应式页面的时候,往往需要考虑更多尺寸设备的界面兼容性,一般不能写死像素,以便能够使得界面元素能够根据设备的不同进行动态调整,但往往有时候还是碰到一些问题,如Tab标签第一页面正常显示,但是切换其 ...

  7. Xamarin iOS教程之显示和编辑文本

    Xamarin iOS教程之显示和编辑文本 Xamarin iOS显示和编辑文本 在一个应用程序中,文字是非常重要的.它就是这些不会说话的设备的嘴巴.通过这些文字,可以很清楚的指定这些应用程序要表达的 ...

  8. 关于asp.net mvc中 weiui gallery中IOS 下不显示预览图片问题的解决方式

    IOS 下面不显示预览. 结果去掉了红框中的缓存部分 就可以显示了 备忘,也帮助一下需要的朋友 @*<meta http-equiv="pragma" content=&qu ...

  9. 搭建自己的博客(十七):添加每日阅读量并使用highcharts通过图表显示

    之前写了单篇博客的阅读量统计,今天添加了博客总阅读量统计,并且使用highcharts图表显示. 1.变化的部分

随机推荐

  1. virtenv 0.8.6 发布,虚拟桌面配置工具 - 开源中国社区

    virtenv 0.8.6 发布,虚拟桌面配置工具 - 开源中国社区 virtenv 0.8.6 发布,virtenv 是一个用 QT4 开发的应用,用来配置和启动基于 LXC 的虚拟桌面环境.该容器 ...

  2. window应用移植到Linux下(应用移植)

     配置QT的环境变量,这台电脑à属性à高级系统设置à高级à环境变量à系统变量àpathàC:\Qt\Qt5.3.0\5.3\mingw482_32\bin;C:\Qt\Qt5.3.0\Tools\ ...

  3. dom4j的用法

    package xml; import java.io.FileWriter; import java.io.IOException; import java.util.Iterator; impor ...

  4. c# WinForm开发 DataGridView控件的各种操作总结(单元格操作,属性设置)

    一.单元格内容的操作 *****// 取得当前单元格内容 Console.WriteLine(DataGridView1.CurrentCell.Value); // 取得当前单元格的列 Index ...

  5. Linux从用户层到内核层系列 - GNU系列之glibc介绍

    题记:本系列文章的目的是抛开书本从源代码和使用的角度分析Linux内核和相关源代码,byhankswang和你一起玩转linux开发 轻松搞定TCP/IP协议栈,原创文章欢迎交流, byhankswa ...

  6. poj1679(最小生成树)

    传送门:The Unique MST 题意:判断最小生成树是否唯一. 分析:先求出原图的最小生成树,然后枚举删掉最小生成树的边,重做kruskal,看新的值和原值是否一样,一样的话最小生成树不唯一. ...

  7. 实现TextView 文字排版,分散两端对齐

    參考:http://www.cnblogs.com/lcyty/p/3265335.html 方法一:使用HTML TextView textview=(TextView)findViewbyId(R ...

  8. HDU 3830 Checkers

    意甲冠军: 有三件  所有其他棋子可以跳  不能分开的两个跳跃  当被问及状态u为了国家v最低短跳转 思路: 对于一个状态三个棋子的位置能够设为 x y z  (小到大) 仅仅有当y-x=z-y的时候 ...

  9. SWT中一些细节的说明

    1.shell.pack();函数的效果是将程序打包,使其以合适的大小显示出来,不会太大有很多多余空间,也不会太小导致有些控件无法显示. 2. while(!shell.isDisposed()){ ...

  10. Android - 位置定位(Location)服务(Service)类的基本操作

    位置定位(Location)服务(Service)类的基本操作 本文地址: http://blog.csdn.net/caroline_wendy 定位服务(Location Service),能够确 ...