- 浏览: 140399 次
- 性别:
- 来自: 北京
文章分类
最新评论
UIImageView【转】
- 博客分类:
- iOS基本篇
【转】http://my.oschina.net/plumsoft/blog/76128
1、创建一个UIImageView:
创建一个UIImageView对象有五种方法:
UIImageView *imageView1 = [[UIImageView alloc] init];
UIImageView *imageView2 = [[UIImageView alloc] initWithFrame:(CGRect)];
UIImageView *imageView3 = [[UIImageView alloc] initWithImage:(UIImage *)];
UIImageView *imageView4 = [[UIImageView alloc] initWithImage:(UIImage *) highlightedImage:(UIImage *)];
UIImageView *imageView5 = [[UIImageView alloc] initWithCoder:(NSCoder *)];
比较常用的是前边三个。至于第四个,当这个ImageView的highlighted属性是YES时,显示的就是参数highlightedImage,一般情况下显示的是第一个参数UIImage。
2、frame与bounds属性:
上述创建一个UIImageView的方法中,第二个方法是在创建时就设定位置和大小。
当之后想改变位置时,可以重新设定frame属性:
imageView.frame = CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat heigth);
注意到UIImageView还有一个bounds属性
imageView.bounds = CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat heigth);
那么这个属性跟frame有什么区别呢?
我的理解是,frame设置其位置和大小,而bounds只能设置其大小,其参数中的x、y不起作用即便是之前没有设定frame属性,控件最终的位置也不是bounds所设定的参数。bounds实现的是将UIImageView控件以原来的中心为中心进行缩放。例如有如下代码:
imageView.frame = CGRectMake(0, 0, 320, 460);
imageView.bounds = CGRectMake(100, 100, 160, 230);
执行之后,这个imageView的位置和大小是(80, 115, 160, 230)。
3、contentMode属性:
这个属性是用来设置图片的显示方式,如居中、居右,是否缩放等,有以下几个常量可供设定:
UIViewContentModeScaleToFill
UIViewContentModeScaleAspectFit
UIViewContentModeScaleAspectFill
UIViewContentModeRedraw
UIViewContentModeCenter
UIViewContentModeTop
UIViewContentModeBottom
UIViewContentModeLeft
UIViewContentModeRight
UIViewContentModeTopLeft
UIViewContentModeTopRight
UIViewContentModeBottomLeft
UIViewContentModeBottomRight
注意以上几个常量,凡是没有带Scale的,当图片尺寸超过 ImageView尺寸时,只有部分显示在ImageView中。UIViewContentModeScaleToFill属性会导致图片变形。UIViewContentModeScaleAspectFit会保证图片比例不变,而且全部显示在ImageView中,这意味着ImageView会有部分空白。UIViewContentModeScaleAspectFill也会证图片比例不变,但是是填充整个ImageView的,可能只有部分图片显示出来。
前三个效果如下图:
UIViewContentModeScaleToFill UIViewContentModeScaleAspectFit UIViewContentModeScaleAspectFill
4、更改位置
更改一个UIImageView的位置,可以
4.1 直接修改其frame属性
4.2 修改其center属性:
imageView.center = CGPointMake(CGFloat x, CGFloat y);
center属性指的就是这个ImageView的中间点。
4.3 使用transform属性
imageView.transform = CGAffineTransformMakeTranslation(CGFloat dx, CGFloat dy);
其中dx与dy表示想要往x或者y方向移动多少,而不是移动到多少。
5、旋转图像
imageView.transform = CGAffineTransformMakeRotation(CGFloat angle);
要注意它是按照顺时针方向旋转的,而且旋转中心是原始ImageView的中心,也就是center属性表示的位置。
这个方法的参数angle的单位是弧度,而不是我们最常用的度数,所以可以写一个宏定义:
#define degreesToRadians(x) (M_PI*(x)/180.0)
用于将度数转化成弧度。下图是旋转45度的情况:
6、缩放图像
还是使用transform属性:
imageView.transform = CGAffineTransformMakeScale(CGFloat scale_w, CGFloat scale_h);
其中,CGFloat scale_w与CGFloat scale_h分别表示将原来的宽度和高度缩放到多少倍,下图是缩放到原来的0.6倍的示意图:
7、播放一系列图片
imageView.animationImages = imagesArray;
// 设定所有的图片在多少秒内播放完毕
imageView.animationDuration = [imagesArray count];
// 不重复播放多少遍,0表示无数遍
imageView.animationRepeatCount = 0;
// 开始播放
[imageView startAnimating];
其中,imagesArray是一些列图片的数组。如下图:
8、为图片添加单击事件:
imageView.userInteractionEnabled = YES;
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapImageView:)];
[imageView addGestureRecognizer:singleTap];
一定要先将userInteractionEnabled置为YES,这样才能响应单击事件。
9、其他设置
imageView.hidden = YES或者NO; // 隐藏或者显示图片
imageView.alpha = (CGFloat) al; // 设置透明度
imageView.highlightedImage = (UIImage *)hightlightedImage; // 设置高亮时显示的图片
imageView.image = (UIImage *)image; // 设置正常显示的图片
[imageView sizeToFit]; // 将图片尺寸调整为与内容图片相同
1、创建一个UIImageView:
创建一个UIImageView对象有五种方法:
UIImageView *imageView1 = [[UIImageView alloc] init];
UIImageView *imageView2 = [[UIImageView alloc] initWithFrame:(CGRect)];
UIImageView *imageView3 = [[UIImageView alloc] initWithImage:(UIImage *)];
UIImageView *imageView4 = [[UIImageView alloc] initWithImage:(UIImage *) highlightedImage:(UIImage *)];
UIImageView *imageView5 = [[UIImageView alloc] initWithCoder:(NSCoder *)];
比较常用的是前边三个。至于第四个,当这个ImageView的highlighted属性是YES时,显示的就是参数highlightedImage,一般情况下显示的是第一个参数UIImage。
2、frame与bounds属性:
上述创建一个UIImageView的方法中,第二个方法是在创建时就设定位置和大小。
当之后想改变位置时,可以重新设定frame属性:
imageView.frame = CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat heigth);
注意到UIImageView还有一个bounds属性
imageView.bounds = CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat heigth);
那么这个属性跟frame有什么区别呢?
我的理解是,frame设置其位置和大小,而bounds只能设置其大小,其参数中的x、y不起作用即便是之前没有设定frame属性,控件最终的位置也不是bounds所设定的参数。bounds实现的是将UIImageView控件以原来的中心为中心进行缩放。例如有如下代码:
imageView.frame = CGRectMake(0, 0, 320, 460);
imageView.bounds = CGRectMake(100, 100, 160, 230);
执行之后,这个imageView的位置和大小是(80, 115, 160, 230)。
3、contentMode属性:
这个属性是用来设置图片的显示方式,如居中、居右,是否缩放等,有以下几个常量可供设定:
UIViewContentModeScaleToFill
UIViewContentModeScaleAspectFit
UIViewContentModeScaleAspectFill
UIViewContentModeRedraw
UIViewContentModeCenter
UIViewContentModeTop
UIViewContentModeBottom
UIViewContentModeLeft
UIViewContentModeRight
UIViewContentModeTopLeft
UIViewContentModeTopRight
UIViewContentModeBottomLeft
UIViewContentModeBottomRight
注意以上几个常量,凡是没有带Scale的,当图片尺寸超过 ImageView尺寸时,只有部分显示在ImageView中。UIViewContentModeScaleToFill属性会导致图片变形。UIViewContentModeScaleAspectFit会保证图片比例不变,而且全部显示在ImageView中,这意味着ImageView会有部分空白。UIViewContentModeScaleAspectFill也会证图片比例不变,但是是填充整个ImageView的,可能只有部分图片显示出来。
前三个效果如下图:
UIViewContentModeScaleToFill UIViewContentModeScaleAspectFit UIViewContentModeScaleAspectFill
4、更改位置
更改一个UIImageView的位置,可以
4.1 直接修改其frame属性
4.2 修改其center属性:
imageView.center = CGPointMake(CGFloat x, CGFloat y);
center属性指的就是这个ImageView的中间点。
4.3 使用transform属性
imageView.transform = CGAffineTransformMakeTranslation(CGFloat dx, CGFloat dy);
其中dx与dy表示想要往x或者y方向移动多少,而不是移动到多少。
5、旋转图像
imageView.transform = CGAffineTransformMakeRotation(CGFloat angle);
要注意它是按照顺时针方向旋转的,而且旋转中心是原始ImageView的中心,也就是center属性表示的位置。
这个方法的参数angle的单位是弧度,而不是我们最常用的度数,所以可以写一个宏定义:
#define degreesToRadians(x) (M_PI*(x)/180.0)
用于将度数转化成弧度。下图是旋转45度的情况:
6、缩放图像
还是使用transform属性:
imageView.transform = CGAffineTransformMakeScale(CGFloat scale_w, CGFloat scale_h);
其中,CGFloat scale_w与CGFloat scale_h分别表示将原来的宽度和高度缩放到多少倍,下图是缩放到原来的0.6倍的示意图:
7、播放一系列图片
imageView.animationImages = imagesArray;
// 设定所有的图片在多少秒内播放完毕
imageView.animationDuration = [imagesArray count];
// 不重复播放多少遍,0表示无数遍
imageView.animationRepeatCount = 0;
// 开始播放
[imageView startAnimating];
其中,imagesArray是一些列图片的数组。如下图:
8、为图片添加单击事件:
imageView.userInteractionEnabled = YES;
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapImageView:)];
[imageView addGestureRecognizer:singleTap];
一定要先将userInteractionEnabled置为YES,这样才能响应单击事件。
9、其他设置
imageView.hidden = YES或者NO; // 隐藏或者显示图片
imageView.alpha = (CGFloat) al; // 设置透明度
imageView.highlightedImage = (UIImage *)hightlightedImage; // 设置高亮时显示的图片
imageView.image = (UIImage *)image; // 设置正常显示的图片
[imageView sizeToFit]; // 将图片尺寸调整为与内容图片相同
发表评论
-
Foundation和UIKit框架组织图
2013-01-28 08:58 6128... -
[转]linux常用命令
2013-01-26 22:33 841本文来自于http://blog.csdn.net/totog ... -
[转] NSString 控件消息
2013-01-19 15:52 1029【转】http://www.tongwenguan.com/o ... -
关闭arc
2013-01-17 22:35 04.2前的xcode中,打开“Build Setting”,找 ... -
地址薄源码分析
2013-01-17 10:13 1607ContactViewController.h 头文件 #im ... -
iOS main函数 机器码
2013-01-17 07:24 2460main 启动对应机器码分析 0x2730: pushl ... -
歌曲源码剪切分析
2013-01-16 17:19 7530mian.m 以及appdelegate就不说了,主要说说C控 ... -
[转]深入理解Objective-c中@class的含义
2013-01-16 07:16 1016[转]http://blog.prosight.me/i ... -
isKindOfClass<> isMemberOfClass[转]
2013-01-15 10:27 0转http://blog.csdn.net/totogo201 ... -
NSString 截取,文件读取【转】
2013-01-16 07:18 1497【转】http://www.cnblogs.com/csj00 ... -
loadNibNamed
2013-01-15 10:05 0动态加载,就是在程序运行当中,根据需要动态地加载一些视图,常常 ... -
respondsToSelector
2013-01-15 09:31 2475respondsToSelector该方法询问对象以确定其是否 ... -
initWithFrame<>initWithCoder
2013-01-15 09:19 1724initWithFrame 和 initWithCode ... -
协议protocol
2013-01-16 07:17 1046自定义协议语法如下: @protocol 协议名称 方法之声明 ... -
addSubview<>insertSubView
2013-01-15 08:35 3532addSubview是一层一层往上加,新加的只能放到父视图的最 ... -
UIViewController生命周期[转]
2013-01-15 00:09 935转http://www.cnblogs.com/smileEv ... -
IBOutlet IBaction 详解
2013-01-14 23:33 4328IBOutlet对于编译器而言只是一个标记,也就是 ... -
AppDelegate.m 介绍
2013-01-14 22:59 6573【转】[url] www.cnblogs.com/xunzi ... -
didReceiveMemoryWarning
2013-01-14 21:52 5552[转]http://blog.csdn.net/yy404 ... -
OC-plist xib pch StoryBoard
2013-01-14 21:12 1189plist plist文件是什么呢? 它全名是: ...
相关推荐
通过给继承与 UIImageView 的类 CXGImageView 添加 CABasicAnimation 转动动画,实现播放器图片转动效果.
UIImageView-旋转
因为种种原因,需要在iphone应用中实现图片查看功能,由于iphone屏幕支持多点触摸,于是是想到用“手势”来实现图片的...它有两个主要的成员,一个UIImage对象用于指定一个内存图片,一个UIImageView控件用于显示图片。
手势的用法,缩放,旋转,点击,拖动,只是代码,可以复制粘贴采用
詹姆斯-IOS-Label 可以拉伸,旋转的简单UIImageView和UILabel。 它可以用于tableview单元格或视图中的订单/交易状态。
JMAnimatedImageView是UIImageView的高性能子类: 以最小的内存压力播放巨大的图像动画, 允许与imageView进行手动交互以驱动手动动画, 可以使用带有旋转木马, 支持GIF加载动画。 变更记录 0.2.4: 改善文件...
作者ws00801526,源码XMNViews,是个人的一些自定义view搜集,也是一个单手手势旋转放大的自定义View,可以添加UIImageView,UILabel作为其contentView,实现其delegate,可以实现UILabel在放大的同时字体也放大
iPhone6.1 测试成功。 同目录下有demo截屏 用UIimageView实现360度旋转效果。主要代码在:FVImageSequence.m
使用UIImageView 的UIRotateImageView这个超级视图将定义图像的边界。 在代码中设置图像。 根据您的需要调用 require 方法: (void)rotateWithAngle:(CGFloat)angle; 旋转角度 (void)rotateAtPosition:(CGFloat)...
先来看看实现的类似效果图: ... 首先我们实现图片界面,这个界面上有黑色的背景,一张图片和一个查看评论的按钮: - (void)viewDidLoad { [super viewDidLoad];... UIImageView *myImage = [[UIImageView
文档介绍了1 随机数的使用,2 在UIImageView 中旋转图像,3 在Quartz中如何设置旋转点,4 创建.plist文件并存储,5 读取plist文件并转化为NSDictionary,6 读取一般性文档文件,7隐藏NavigationBar
LDStickerView LDStickerView 自定义 UIView,可以通过...var imageView: UIImageView = UIImageView ( image : UIImage ( named : " cu-meo.png " )) imageView. contentMode = UIViewContentMode. ScaleAspectFill
一个单手手势旋转放大的自定义View,可以添加UIImageView,UILabel作为其contentView,实现其delegate,可以实现UILabel在放大的同时字体也放大 github地址:https://github.com/ws00801526/XMNViews
一个 UIImageView 子类,只要它的 image 属性为零,它就会显示一个旋转的 UIActivityIndicator。 此外,您可以附加一个动作块,当点击图像时会触发该动作块。 作者 Martin Hartl, 执照 MHSegmentedView 在 MIT...
iOS开发中一般用UILabel来展示文字、UIImageView用来显示图片、UIButton用于简单的图文点击响应事件,稍复杂一点的可以借助NSAttributedString来实现图文混排需求,又或者将图文内容转换为HTML由WKWebView...
本框架可以快速集成图片过渡转场动画,目前有push和modal两种方式,呈现方式为zoom放大动画效果.效果图展示push方式modal方式一.简单上手(使用默认方式)1.在.h文件中继承父类/** * 使用默认的方式,导入头文件 ...
转轮机 Respinner 是 UIRefreshControl 的替代品,它在根据 UIScrollView 的 contentOffset 滚动时在内部旋转自定义 UIView。 允许您使用自定义旋转视图、自定义高度等。 安装 将 Respinner.swift 放到你的 Xcode ...
#介绍UIGestures和UIImageView UIGestures(最多30分钟,有关捏,缩放,轻击和旋转手势的高级概述,以及为什么要使用它们的原因。 #实时编码: 从初始示例项目开始(在github中提供) 添加一个UIImageview并添加...
UIImage图片的大小调整可能会发生拉伸变形,但宽高随意设定。 UIImage图片方向的调整长方形图片放倒后需要改变对应的UIImageView
继承UIImageView 封装一个类,通过添加手势,对图片进行移动、缩放、旋转操作 。