// tableView中的图片,点击后可以放大置全屏, 再点击缩小会原来位置 // #import "HMViewController.h" @interface HMViewController ()<UITableViewDataSource, UITableViewDelegate> @property (nonatomic, assign) CGRect fristFrame; // 存储每次要展示的图片frame, 方便缩小时使用 @property (nonatomic, strong) UIImageView *fullImageView; // 全屏展示的视图 @property (nonatomic, weak) UITableView *tableView; // tableview @end @implementation HMViewController // 懒加载全屏视图 - (UIImageView *)fullImageView { if (_fullImageView == nil) { // 视图和屏幕一样大 _fullImageView = [[UIImageView alloc] initWithFrame:[UIScreen mainScreen].bounds]; // 设置为可交互, 不然, 后面的手势根本不能用 _fullImageView.userInteractionEnabled = YES; // 添加点击手势 ( 缩小图片时使用 ) [_fullImageView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(actionTap2:)]]; // 设置视图内容填充模式. _fullImageView.contentMode = UIViewContentModeScaleAspectFit; } return _fullImageView; } - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor whiteColor]; UITableView *tableView = [[UITableView alloc]initWithFrame:[UIScreen mainScreen].bounds]; tableView.delegate = self; tableView.dataSource = self; self.tableView = tableView; [self.view addSubview:tableView]; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 20; } /* 该方法中的注释代码为自定义imageView */ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { // UIImageView *imageView;// 自定义ImageView, static NSString *ID = @"cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID]; if (!cell) { cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID]; // imageView = [[UIImageView alloc]initWithFrame:CGRectMake(25, 5, 30, 30)]; // imageView.userInteractionEnabled = YES; // imageView.tag = 1; // 自定义imageView时方便获取 // [imageView addGestureRecognizer:[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(actionTap:)]]; // [cell.contentView addSubview:imageView]; // cell的imageView设置为可交互 cell.imageView.userInteractionEnabled = YES; // 添加点击手势 ( 放大图片时使用 ) [cell.imageView addGestureRecognizer:[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(actionTap:)]]; } // 自定义imageView时使用 // imageView.image = [UIImage imageNamed:@"1"]; cell.imageView.image = [UIImage imageNamed:@"1"];// 设置图片 return cell; } /** * 图片放大 */ -(void)actionTap:(UITapGestureRecognizer *)sender{ // 根据点击手势的坐标,获取被点击的cell CGPoint loaction = [sender locationInView:self.tableView]; NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:loaction]; UITableViewCell *cell = (UITableViewCell *)[self.tableView cellForRowAtIndexPath:indexPath]; // 自定义imageView时使用 // UIImageView *imageView = (UIImageView *)[cell.contentView viewWithTag:1]; // 从cell中获取imageView UIImageView *imageView = cell.imageView; // 转换坐标系 // 转换cell中的imageView的frame 在self.view中的坐标系 CGRect newFrame = [imageView convertRect:imageView.bounds toView:self.view]; // 保存被点击的图片的frame, 缩小时使用 self.fristFrame = newFrame; // if (![self.fullImageView superview]) { // 貌似没用, 检查是否有父视图 // 设置全屏视图中的图片 self.fullImageView.image = imageView.image; // 设置frame起始位置(动画开始位置) self.fullImageView.frame = self.fristFrame; // 设置背景颜色 self.fullImageView.backgroundColor = [UIColor blackColor]; // 添加到视图上面 [self.view addSubview:self.fullImageView]; // 动画效果展示为全屏 [UIView animateWithDuration:0.5 animations:^{ self.fullImageView.frame = [UIScreen mainScreen].bounds; }]; // } } /** * 图片缩小 */ -(void)actionTap2:(UITapGestureRecognizer *)sender{ // 清除背景颜色 self.fullImageView.backgroundColor = [UIColor clearColor]; // 缩小图片动画 [UIView animateWithDuration:0.5 animations:^{ self.fullImageView.frame = self.fristFrame; // 动画缩小到初始位置 } completion:^(BOOL finished) { [self.fullImageView removeFromSuperview];// 从父视图中移除全屏视图 }]; } @end
相关推荐
在iOS开发中,我们经常需要根据用户操作或者特定条件来改变UI元素的显示状态,比如在UITableView中,可能需要在某些情况下显示或隐藏表格前方的图片。这个过程可以通过编程方式实现,以达到更加灵活和个性化的界面...
在Qt框架中,`QTableView`是一个非常重要的组件,它用于显示二维表格数据,常用于数据的浏览和编辑。在本篇文章中,我们将深入探讨如何使用`QTableView`来显示数据,以及涉及到的相关知识点。 首先,`QTableView`是...
在Qt框架中,显示数据库表中的数据通常涉及到多个步骤,包括连接数据库、执行查询语句、将查询结果映射到TableView组件以及自定义数据模型。以下是对这些关键知识点的详细说明: 1. **Qt与数据库连接**:Qt提供了一...
本话题主要涉及如何实现TableView的点击下拉扩展以及在内部嵌入CollectionView来实现图片上传的功能。以下将详细阐述这两个核心知识点。 首先,我们来看TableView的点击下拉扩展。这个功能通常用于隐藏或显示更多的...
包含MYSQL的数据库连接,TableView的表格设置,排序model的使用,数据库数据行数统计,每页只显示10行,每页中的每列可以排序,能删除选定行,增加一行,跳转到第一页、上一页、下一页、最后页,点击单元格可以修改...
本教程将聚焦于如何在TableView中实现分段显示数据,适合初级开发者学习。 首先,理解UITableView的基本构成是关键。UITableView由多个单元格(UITableViewCell)组成,这些单元格可以在屏幕滚动时动态加载和卸载。...
在`TableView`中,每个单元格都有一个对应的`delegate`,可以为每个列定制不同的显示样式。例如,第一列可能使用`DelegateComponent`来创建一个单选框,第二列用`ComboBox`显示,第三列则用`ProgressBar`来呈现进度...
为了处理多个图片,你可以将以上步骤放在一个循环中,遍历所有图片文件,这样就可以生成一个包含所有图片缩略图的列表。例如,如果有一个名为"fileOpen"的文件列表,你可以这样做: ```cpp QStringList files = ...
- 压缩包中的"DemoTableController 2"可能是一个实现了上述功能的示例代码文件,它可能包含了创建TableView,设置Header View,监听滚动事件,以及处理图片放大效果的完整逻辑。通过查看和分析这个文件,可以更深入...
在提供的压缩包文件“tableView点击更多扩展”中,可能包含了实现这一功能的代码示例、资源文件或相关文档。通过查看这些文件,开发者可以更具体地了解实现细节和代码结构。在实际项目中,应根据项目需求和设计规范...
1. 使用占位图:在图片加载过程中显示占位图,提升用户体验。 2. 图片尺寸适配:根据cell大小裁剪或缩放图片,减少内存占用。 3. 缓存策略:合理设置内存和磁盘缓存策略,避免无谓的网络请求。 4. 避免重复下载:...
3. **处理点击事件**:在`tableView:didSelectRowAtIndexPath:`中,获取选中行的模型数据,切换`isExpanded`状态,并调用`reloadRowsAtIndexPaths:withRowAnimation:`刷新这行的显示。同时,可能还需要更新与其相邻...
本实例将探讨如何在QTTableView中集成复选框和按钮控件,以增强用户界面的交互性。QTTableView是QT框架中的一个关键组件,它允许我们展示和操作表格数据。下面将详细讲解这一实现过程。 1. **QT与Mingw**: Mingw...
在标题“iOS TableView下拉图片放大上拉图片高度缩小TableViewFrame动态变化”中,提到的是一个特定的交互效果,即当用户滚动TableView时,顶部图片的行为会有所改变:下拉时图片放大,上拉时图片高度缩小,同时整个...
"RunLoop优化tableView加载大量图片卡顿问题"这一主题主要探讨如何利用RunLoop机制来改善这种状况,以实现流畅的滚动效果。 RunLoop是Objective-C中的一个核心概念,它是一个对象,用于管理线程的执行循环,保证...
在iOS开发中,Table View(简称tableView)是用于展示数据的一种常见控件,它能够以列表形式呈现信息。当我们需要在横屏模式下使用tableView时,可能会遇到一些不同于竖屏的挑战,比如布局调整、数据加载和显示等...
本示例"IOS Tableview远程加载数据并显示"旨在教你如何从远程服务器获取数据,并将其动态地加载到UITableView中,为用户提供流畅的滚动体验。这个"tableviewdemo"压缩包文件很可能是包含了实现这一功能的代码示例。 ...
在这个特定的场景中,我们关注的是一个增强型的tableView实现,它具有“点击更多”功能以及头部的搜索栏。这个设计模式通常用于提供用户更丰富的交互体验,让他们能够方便地筛选和查找列表中的内容。 首先,"点击更...
然而,在这种情况下,可能会遇到一个问题:当用户点击TableView中的Cell时,`UITableView`的`didSelectRowAtIndexPath`方法不再被调用。这是因为`UITapGestureRecognizer`拦截了触摸事件,使得TableView无法正确检测...
`TableViewSection展开隐藏`是UITableView高级用法的一个实例,它允许用户通过点击某个Section头部来展开或隐藏该Section下的所有行。这样的交互设计可以有效地组织和管理大量信息,提高用户体验。 首先,我们要...