这一节,我们实现通过点击图片将图片放大显示的功能。

首先我们创建一个名为FlickrPhotoViewConroller的类,这个类继承于UIViewController。

改动头文件内容例如以下:

  1. #import <UIKit/UIKit.h>
  2. @class FlickrPhoto;
  3.  
  4. @interface FlickrPhotoViewConroller : UIViewController
  5. @property (nonatomic, strong) FlickrPhoto *flickrPhoto;
  6. @end

声明outlet和action:

  1. #import "FlickrPhotoViewConroller.h"
  2. #import "Flickr.h"
  3. #import "FlickrPhoto.h"
  4.  
  5. @interface FlickrPhotoViewConroller ()
  6.  
  7. @property (weak) IBOutlet UIImageView *imageView;
  8. - (IBAction)done:(id)sender;
  9.  
  10. @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区域中:

  1. @property (nonatomic) BOOL sharing;

改动didSelectItemAtIndexPath方法:

  1. if (!self.sharing)
  2. {
  3. NSString *searchTerm = self.searchs[indexPath.section];
  4. FlickrPhoto *photo = self.searchResults[searchTerm][indexPath.row];
  5. [self performSegueWithIdentifier:@"ShowFlickrPhoto" sender:photo];
  6. [self.collectionView deselectItemAtIndexPath:indexPath animated:YES];
  7. }
  8. else
  9. {
  10.  
  11. }

当用户点击某幅缩略图时,运行ShowFlickrPhoto segue。

  1. #import "FlickrPhotoViewConroller.h"
  2. - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
  3. {
  4. if ([segue.identifier isEqualToString:@"ShowFlickrPhoto"])
  5. {
  6. FlickrPhotoViewConroller *flickrPhotoViewController = segue.destinationViewController;
  7. flickrPhotoViewController.flickrPhoto = sender;
  8. }
  9. }

实现viewWillAppear方法。显示大图片到view中:

  1. -(void)viewDidAppear:(BOOL)animated { // 1
  2. if(self.flickrPhoto.largeImage)
  3. {
  4. self.imageView.image = self.flickrPhoto.largeImage;
  5. }
  6. else
  7. { // 2
  8. self.imageView.image = self.flickrPhoto.thumbnail;
  9. // 3
  10. [Flickr loadImageForPhoto:self.flickrPhoto thumbnail:NO completionBlock:^(UIImage *photoImage, NSError *error) {
  11. if(!error) { // 4
  12. dispatch_async(dispatch_get_main_queue(), ^{ self.imageView.image =
  13. self.flickrPhoto.largeImage;
  14. });
  15. }
  16. }];
  17. }
  18. }

实现done方法。通过点击Donebutton返回到主view:

  1. - (void)done:(id)sender
  2. {
  3. [self.presentingViewController dismissViewControllerAnimated:YES completion:^{}];
  4. }

程序运行效果例如以下:

iOS UICollectionView 入门 07 点击cell放大图片的更多相关文章

  1. iOS - UITableView加载网络图片 cell适应图片高度

    使用xib创建自定制cell   显示图片   创建一个继承UITableViewCell的类   勾选xib 如下是xib创建图 xib 向.h拖拽一个关联线 .h .m 2.代码创建(使用三方适配 ...

  2. IOS 线程的总结(及cell的图片下载)

    零.线程的注意点(掌握) 1.不要同时开太多的线程(1~3条线程即可,不要超过5条)2.线程概念1> 主线程 : UI线程,显示.刷新UI界面,处理UI控件的事件2> 子线程 : 后台线程 ...

  3. iOS点击cell查看大图,点击大图还原小图-b

    一.项目需求 用collectionView展示很多照片,点击某个照片,用全屏scrollView无限循环的方式查看图片.点击放大的图片,图片缩小到原先的尺寸. 如图gif1.gif所示,点击中间的图 ...

  4. iOS UICollectionView(转一) XIB+纯代码创建:cell,头脚视图 cell间距

    之前用CollectionViewController只是皮毛,一些iOS从入门到精通的书上也是泛泛而谈.这几天好好的搞了搞苹果的开发文档上CollectionViewController的内容,亲身 ...

  5. iOS 点击cell下拉

    iOS  点击cell下拉 代码如下: #import "ViewController.h" @interface ViewController ()<UITableView ...

  6. 李洪强iOS开发之-实现点击单行View显示和隐藏Cell

    李洪强iOS开发之-实现点击单行View显示和隐藏Cell 实现的效果:  .... ....

  7. [iOS] UICollectionView实现图片水平滚动

    最新更新: 简单封装了一下代码,参考新文章:UICollectionView实现图片水平滚动 先简单看一下效果: 新博客:http://wossoneri.github.io 准备数据 首先先加入一些 ...

  8. JavaScript基础入门07

    目录 JavaScript 基础入门07 BOM window对象 Navigator对象 Screen 对象 Location对象 History 对象 JavaScript 基础入门07 BOM ...

  9. Swift - 实现点击cell动态修改高度

    Swift - 实现点击cell动态修改高度 效果 源码 https://github.com/YouXianMing/Swift-Animations // // TapCellAnimationC ...

随机推荐

  1. Android-xUtils框架介绍(一)

    Android基于快速开发的一个框架——xUtils,它是在aFinal基础上进行重构和扩展的框架,相比aFinal有很大的改善.同时,如果如果你的应用是基于网络的,那么只要处理得当,它会让你彻底的摆 ...

  2. 1414. Astronomical Database(STL)

    1414 破题 又逼着用stl 卡内存 trie树太耗了 水不过去 用set存字符串 set可以自己按一定顺序存 且没有重复的 再用lower_bound二分查找字符串的第一次出现 接着往后找就行了 ...

  3. input之placeholder与行高的问题。

    我们实现一个输入框的视觉的时候为了保持其各种各样的兼容性: 1.鼠标要跟文字一样高度. 2.文字要居中对齐. 3.还要有placeholder 第一个目标,当实现一个高度为40像素的高度输入框时,为了 ...

  4. ASP.NET MVC 入门10、Action Filter 与 内置的Filter实现(实例-防盗链)

    于ASP.NET MVC Preview5. 前一篇中我们已经了解了Action Filter 与 内置的Filter实现,现在我们就来写一个实例.就写一个防盗链的Filter吧. 首先继承自Filt ...

  5. Asp.Net 高性能框架 SqlSugar.ORM 2.3

    一.前言 SqlSugar从去年到现在已经一年了,版本从1.0升到了现在的2.3 ,这是一个稳定版本 ,有数家公司已经项目上线,在这里我将SqlSugar的功能重新整理成一篇新的贴子,希望大家喜欢. ...

  6. 消息系统Kafka介绍

    1.  概述 Kafka是Linkedin于2010年12月份开源的消息系统,它主要用于处理活跃的流式数 据.活跃的流式数据在web网站应用中非常常见,这 些数据包括网站的pv.用户访问了什么内容,搜 ...

  7. 32、handler更新控件值

    import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os. ...

  8. 备份 VPS 上得内容到国内

    起源: 最近毕设快开题了,校园网进入了收费测试的阶段,得把车辆的数据库 down 下来.发现国内 down 的速度真心慢呢.于是乎使用了在美国的 VPS 来 down,果不其然,30M 左右的下载速度 ...

  9. SVN server 安装 并创建用户访问

    1. 下载svn   官网https://www.visualsvn.com/server/download/ 或者其他网站都行,下载是VisualSVN-Server-3.5.6.msi. 2.安装 ...

  10. 使用 EasyBCD 安装Ubuntu 14.04 Error 15: file not found错误的解决方法

    今天安装Window7 和 Ubuntu 14.04 双系统时,出现如下异常,记录一下. 安装过程是参考 http://www.linuxidc.com/Linux/2014-04/100369.ht ...