将Cell中的视图取出传递到根视图
当我们点击Cell中的某个图片时,图片会有一种从Cell中取出,放大,然后再回到原来的Cell中的效果。我的想法是:当Cell中的图片用button 来显示。当我们点击Cell中的这个button的时候,button触发方法以代理的方式将button的图片和这个Cell 传递到视图控制器。视图控制器通过坐标转换,得出图片在屏幕的位置坐标,然后保存这个位置并根据这个Frame在主视图创建一个ImageView。控制这个imageView的位置变化即可达到取出放大退回原有位置的效果。
//
// MyCell.h
// 自定义Cell
//
// Created by 邓竹立 on 15-3-18.
// Copyright (c) 2015年 邓竹立. All rights reserved.
// #import <UIKit/UIKit.h> @protocol MyCellDelagate <NSObject> -(void)image:(UIImage *)image rect:(CGRect) rect from:(UIView*)view; @end
@interface MyCell : UITableViewCell
@property (weak, nonatomic) UIButton *iconButton;
@property(nonatomic,weak)id<MyCellDelagate> myDelgate; +(instancetype)cellWithTableView:(UITableView *)tableView; @end
//
// MyCell.m
// 自定义Cell
//
// Created by 邓竹立 on 15-3-18.
// Copyright (c) 2015年 邓竹立. All rights reserved.
// #import "MyCell.h" @interface MyCell () @end @implementation MyCell - (void)clickIconButton:(UIButton *)sender
{
[self.myDelgate image:sender.imageView.image rect:sender.frame from:self.contentView];
} +(instancetype)cellWithTableView:(UITableView *)tableView
{
static NSString *reuseId=@"cell";
MyCell *cell=[tableView dequeueReusableCellWithIdentifier:reuseId];
if (!cell)
{
cell=[[MyCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseId];
} UIButton *button=[[UIButton alloc]init]; cell.iconButton=button;
button.frame=CGRectMake(0, 0, 120, 120); [cell.iconButton setImage:[UIImage imageNamed:@"DSC00003.jpg"] forState:UIControlStateNormal];
[cell.iconButton addTarget:cell action:@selector(clickIconButton:) forControlEvents:
UIControlEventTouchUpInside];
[cell.contentView addSubview:button];
return cell;
} @end
#import "ViewController.h"
#import "MyCell.h"
@interface ViewController ()<UITableViewDataSource,UITableViewDelegate,MyCellDelagate>
@property (weak, nonatomic) IBOutlet UITableView *tableView; @end @implementation ViewController - (void)viewDidLoad
{
[super viewDidLoad]; self.tableView.delegate=self;
self.tableView.dataSource=self;
self.tableView.allowsSelection=NO;
}
-(void)image:(UIImage *)image rect:(CGRect)rect from:(UIView *)view
{
UIImageView *imageView=[[UIImageView alloc] init];
CGRect rect1=[view convertRect:rect toView:self.view]; imageView.frame=CGRectMake(rect1.origin.x+100, rect1.origin.y+100, rect1.size.width, rect1.size.height);
imageView.image=image;
[self.view addSubview:imageView];
} -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 5;
} -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
MyCell *cell=[MyCell cellWithTableView:tableView];
cell.myDelgate=self; return cell;
} -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 200;
} - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} @end
将Cell中的视图取出传递到根视图的更多相关文章
- Revit中如何将视图过滤器传递到其它项目
在Revit中采用过滤器控制视图显示,利用过滤器给图元着色,利用过滤器控制视图显示或隐藏等,那么,在不同的项目中是否每次都要设置相同的过滤器,其实,Revit提供了这么一种在不同项目传递信息的方式,在 ...
- 关于cell中添加子视图 复用重叠问题的解决方法
问题本质: 因为你要添加的子视图并不是在自定义的cell中实现的,而是根据系统给的UITableViewCell这个类创建的实例,每次进图 cellForRow方法都会创建一个cell,每次都要创 ...
- URL中传递参数给视图函数
1. 采用在url中使用变量的方式: 在path的第一个参数中,使用<参数名>的方式可以传递参数.然后在视图函数中也要写一个参数,视图函数中的参数必须和url中的参数名称保持一致,不然就找 ...
- 视图交互--表视图(UITableView)的cell交互析略
在表视图UITableView的cell上经常有一些交互,根据项目开发中的情况,需要对此进行一些规范.总结出了几种交互方法,这些方法在其他视图的交互上同样可以适用.用一个简单的例子来举例说明一下,其他 ...
- ASP.NET MVC之从控制器传递数据到视图四种方式(一)
前言 本系列开始着手讲述ASP.NET MVC,也算是自己对基础的回顾以及进一步深入学习,保证每天发表一篇该系列文章,关于基本知识则不再叙述,园子有关文章不胜枚举,这一系列若有叙述不当或错误之处,欢迎 ...
- Laravel教程 三:视图变量传递和Blade
Laravel教程 三:视图变量传递和Blade 此文章为原创文章,未经同意,禁止转载. Blade 上一篇我们简单地说了Router,Views和Controllers的工作流程,这一次我就按照上一 ...
- ASP.NET MVC之从控制器传递数据到视图四种方式
前言 本系列开始着手讲述ASP.NET MVC,也算是自己对基础的回顾以及进一步深入学习,保证每天发表一篇该系列文章,关于基本知识则不再叙述,园子有关文章不胜枚举,这一系列若有叙述不当或错误之处,欢迎 ...
- VC++ 6.0中实现三叉切分窗口与多视图 [转]
一.引用 当用户需要同时对文当的不同部分进行编辑时,常常会用到切分窗口;这些窗口可以都是相同的视,或者一个窗口为列表视,而另一个为树型视图.应用程序框架有多种方式来表示多视图,切分窗口是其中的方式之一 ...
- ASP.NET MVC 5 学习教程:控制器传递数据给视图
原文 ASP.NET MVC 5 学习教程:控制器传递数据给视图 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字 ...
随机推荐
- md5可能会被破解咋办?
所谓加Salt,就是加点“佐料”.其基本想法是这样的——当用户首次提供密码时(通常是注册时),由系统自动往这个密码里撒一些“佐料”,然后再散列.而当用户登录时,系统为用户提供的代码撒上同样的“佐料”, ...
- HW5.24
import java.util.Calendar; public class Solution { public static void main(String[] args) { System.o ...
- HW5.1
public class Solution { public static void main(String[] args) { int count = 0; for(int i = 1; i < ...
- HW2.5
import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...
- POJ2773 - Happy 2006(欧拉函数)
题目大意 给定两个数m,k,要求你求出第k个和m互质的数 题解 我们需要知道一个等式,gcd(a,b)=gcd(a+t*b,b) 证明如下:gcd(a+t*b,b)=gcd(b,(a+t*b)%b)= ...
- Devlop Win 8 and Windows Phone App for Microsoft Dynamics CRM
Microsoft Dynamics CRM App for Windows Phone http://www.windowsphone.com/en-us/store/app/dynamics-cr ...
- Jetty 8长连接上的又一个坑
Jetty 8 长连接的超时断开连接的机制:超时连接机制针对IO传输过程中的数据阻塞时间超过一定阈值时,断开该连接.阻塞指当前处于数据传输阶段,但是连续指定时间内都没有发出或者接收到任何数据时,Jet ...
- Task任务
- 一切皆WEB
所有应用都应该成为Web应用吗?当然不是.总有一些重要的例外,有些种类的软件跟网络也毫无关系.但是,这些是少数情况,是一些特殊应用.它们固然是重要的小生态环境,但不管怎么说,就只是“小生态”. 如果你 ...
- iOS网络编程(三) 异步加载及缓存图片---->SDWebImage
@SDWebImage提供一个UIImageView的类别以支持加载来自网络的远程图片.具有缓存管理.异步下载.同一个URL下载次数控制和优化等特征. @SDWebImage的导入1.https:// ...