iOS UICollectionView 入门 07 点击cell放大图片
这一节,我们实现通过点击图片将图片放大显示的功能。
首先我们创建一个名为FlickrPhotoViewConroller的类,这个类继承于UIViewController。
改动头文件内容例如以下:
- #import <UIKit/UIKit.h>
- @class FlickrPhoto;
- @interface FlickrPhotoViewConroller : UIViewController
- @property (nonatomic, strong) FlickrPhoto *flickrPhoto;
- @end
声明outlet和action:
- #import "FlickrPhotoViewConroller.h"
- #import "Flickr.h"
- #import "FlickrPhoto.h"
- @interface FlickrPhotoViewConroller ()
- @property (weak) IBOutlet UIImageView *imageView;
- - (IBAction)done:(id)sender;
- @end
打开storyboard,加入一个UIViewController到storyboard中,设置这个view的class为FlickrPhotoViewConroller。
从主view使用ctrl+drag创建一个到Flickr Photo view controller的modal segue。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFtaW5nd3U=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
选中这个segue。设置其identifier为ShowFlickrPhoto
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFtaW5nd3U=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
加入一个toolbar和一个imageview到view中,改动toolbarbutton标题为Done,ctrl+drag连接button和FlickrPhotoViewController的done:方法。
再将imageView的outlet也连接上:
打开ViewController.m。加入下面代码到@interface区域中:
- @property (nonatomic) BOOL sharing;
改动didSelectItemAtIndexPath方法:
- if (!self.sharing)
- {
- NSString *searchTerm = self.searchs[indexPath.section];
- FlickrPhoto *photo = self.searchResults[searchTerm][indexPath.row];
- [self performSegueWithIdentifier:@"ShowFlickrPhoto" sender:photo];
- [self.collectionView deselectItemAtIndexPath:indexPath animated:YES];
- }
- else
- {
- }
当用户点击某幅缩略图时,运行ShowFlickrPhoto segue。
- #import "FlickrPhotoViewConroller.h"
- - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
- {
- if ([segue.identifier isEqualToString:@"ShowFlickrPhoto"])
- {
- FlickrPhotoViewConroller *flickrPhotoViewController = segue.destinationViewController;
- flickrPhotoViewController.flickrPhoto = sender;
- }
- }
实现viewWillAppear方法。显示大图片到view中:
- -(void)viewDidAppear:(BOOL)animated { // 1
- if(self.flickrPhoto.largeImage)
- {
- self.imageView.image = self.flickrPhoto.largeImage;
- }
- else
- { // 2
- self.imageView.image = self.flickrPhoto.thumbnail;
- // 3
- [Flickr loadImageForPhoto:self.flickrPhoto thumbnail:NO completionBlock:^(UIImage *photoImage, NSError *error) {
- if(!error) { // 4
- dispatch_async(dispatch_get_main_queue(), ^{ self.imageView.image =
- self.flickrPhoto.largeImage;
- });
- }
- }];
- }
- }
实现done方法。通过点击Donebutton返回到主view:
- - (void)done:(id)sender
- {
- [self.presentingViewController dismissViewControllerAnimated:YES completion:^{}];
- }
程序运行效果例如以下:
iOS UICollectionView 入门 07 点击cell放大图片的更多相关文章
- iOS - UITableView加载网络图片 cell适应图片高度
使用xib创建自定制cell 显示图片 创建一个继承UITableViewCell的类 勾选xib 如下是xib创建图 xib 向.h拖拽一个关联线 .h .m 2.代码创建(使用三方适配 ...
- IOS 线程的总结(及cell的图片下载)
零.线程的注意点(掌握) 1.不要同时开太多的线程(1~3条线程即可,不要超过5条)2.线程概念1> 主线程 : UI线程,显示.刷新UI界面,处理UI控件的事件2> 子线程 : 后台线程 ...
- iOS点击cell查看大图,点击大图还原小图-b
一.项目需求 用collectionView展示很多照片,点击某个照片,用全屏scrollView无限循环的方式查看图片.点击放大的图片,图片缩小到原先的尺寸. 如图gif1.gif所示,点击中间的图 ...
- iOS UICollectionView(转一) XIB+纯代码创建:cell,头脚视图 cell间距
之前用CollectionViewController只是皮毛,一些iOS从入门到精通的书上也是泛泛而谈.这几天好好的搞了搞苹果的开发文档上CollectionViewController的内容,亲身 ...
- iOS 点击cell下拉
iOS 点击cell下拉 代码如下: #import "ViewController.h" @interface ViewController ()<UITableView ...
- 李洪强iOS开发之-实现点击单行View显示和隐藏Cell
李洪强iOS开发之-实现点击单行View显示和隐藏Cell 实现的效果: .... ....
- [iOS] UICollectionView实现图片水平滚动
最新更新: 简单封装了一下代码,参考新文章:UICollectionView实现图片水平滚动 先简单看一下效果: 新博客:http://wossoneri.github.io 准备数据 首先先加入一些 ...
- JavaScript基础入门07
目录 JavaScript 基础入门07 BOM window对象 Navigator对象 Screen 对象 Location对象 History 对象 JavaScript 基础入门07 BOM ...
- Swift - 实现点击cell动态修改高度
Swift - 实现点击cell动态修改高度 效果 源码 https://github.com/YouXianMing/Swift-Animations // // TapCellAnimationC ...
随机推荐
- Android-xUtils框架介绍(一)
Android基于快速开发的一个框架——xUtils,它是在aFinal基础上进行重构和扩展的框架,相比aFinal有很大的改善.同时,如果如果你的应用是基于网络的,那么只要处理得当,它会让你彻底的摆 ...
- 1414. Astronomical Database(STL)
1414 破题 又逼着用stl 卡内存 trie树太耗了 水不过去 用set存字符串 set可以自己按一定顺序存 且没有重复的 再用lower_bound二分查找字符串的第一次出现 接着往后找就行了 ...
- input之placeholder与行高的问题。
我们实现一个输入框的视觉的时候为了保持其各种各样的兼容性: 1.鼠标要跟文字一样高度. 2.文字要居中对齐. 3.还要有placeholder 第一个目标,当实现一个高度为40像素的高度输入框时,为了 ...
- ASP.NET MVC 入门10、Action Filter 与 内置的Filter实现(实例-防盗链)
于ASP.NET MVC Preview5. 前一篇中我们已经了解了Action Filter 与 内置的Filter实现,现在我们就来写一个实例.就写一个防盗链的Filter吧. 首先继承自Filt ...
- Asp.Net 高性能框架 SqlSugar.ORM 2.3
一.前言 SqlSugar从去年到现在已经一年了,版本从1.0升到了现在的2.3 ,这是一个稳定版本 ,有数家公司已经项目上线,在这里我将SqlSugar的功能重新整理成一篇新的贴子,希望大家喜欢. ...
- 消息系统Kafka介绍
1. 概述 Kafka是Linkedin于2010年12月份开源的消息系统,它主要用于处理活跃的流式数 据.活跃的流式数据在web网站应用中非常常见,这 些数据包括网站的pv.用户访问了什么内容,搜 ...
- 32、handler更新控件值
import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os. ...
- 备份 VPS 上得内容到国内
起源: 最近毕设快开题了,校园网进入了收费测试的阶段,得把车辆的数据库 down 下来.发现国内 down 的速度真心慢呢.于是乎使用了在美国的 VPS 来 down,果不其然,30M 左右的下载速度 ...
- SVN server 安装 并创建用户访问
1. 下载svn 官网https://www.visualsvn.com/server/download/ 或者其他网站都行,下载是VisualSVN-Server-3.5.6.msi. 2.安装 ...
- 使用 EasyBCD 安装Ubuntu 14.04 Error 15: file not found错误的解决方法
今天安装Window7 和 Ubuntu 14.04 双系统时,出现如下异常,记录一下. 安装过程是参考 http://www.linuxidc.com/Linux/2014-04/100369.ht ...