`
fantom
  • 浏览: 141962 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

UIImageView【转】

 
阅读更多
【转】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];    // 将图片尺寸调整为与内容图片相同
分享到:
评论

相关推荐

    UIImageView-Rotate

    在iOS开发中,UIImageView是用于显示图像的常见控件,它在用户界面设计中起着至关重要的作用。当你需要在应用中展示图片时,UIImageView是你首选的工具。然而,有时我们可能需要对UIImageView中的图像进行旋转操作,...

    会旋转的 UIImageView

    通过给继承与 UIImageView 的类 CXGImageView 添加 CABasicAnimation 转动动画,实现播放器图片转动效果.

    UIImageView、深入解析UIImageView

    ### UIImageView 深入解析 #### 一、UIImageView 基本概念与初始化 `UIImageView` 是 iOS 中用于展示图像的视图控件。在 iOS 应用开发中,经常需要用到 `UIImageView` 来显示静态图像或动画效果。`UIImageView` ...

    UIImageView动画

    在iOS开发中,UIImageView是用于显示图像的常见控件,它可以是应用界面中的图标、背景图片等。在某些场景下,我们可能需要为UIImageView添加动画效果,以增加用户体验的趣味性和交互性。本知识点主要围绕UIImageView...

    IOS使用UIImageView显示gif动画的例子 SDWebImage代码5月修改升级

    为了实现在UIImageView上展示GIF动画,开发者通常会借助第三方库,比如本例中提到的`SDWebImage`。`SDWebImage`是一个非常流行且功能强大的图片加载库,它不仅支持从网络加载图片,还提供了缓存机制和处理各种图片...

    ios-UIImageView加载SVG格式的图片.zip

    在给定的资源"ios-UIImageView加载SVG格式的图片.zip"中,包含了一个名为"SVGProject"的示例项目,它可能是一个简单的iOS应用,演示了如何在UIImageView中加载并显示SVG图像。这个项目可以作为学习如何在iOS应用中...

    iOS_UIImageView and 手势

    在iOS开发中,`UIImageView`是用于展示图片的常用组件,而手势识别(Gesture Recognizers)则为用户交互提供了丰富的可能性。本篇文章将深入探讨`UIImageView`与手势API的结合使用,帮助开发者创建更具交互性的iOS...

    swift-EEZoomableImageView-为UIImageView提供全屏缩放功能

    《Swift实现全屏缩放的UIImageView扩展:EEZoomableImageView》 在iOS应用开发中,经常需要处理图像的展示,特别是在需要用户提供图片或者查看详细图片时。为了提供更好的用户体验,通常会希望图片能够进行全屏缩放...

    UIImageView的手势

    在iOS开发中,UIImageView是用于显示图像的常见控件,而手势识别则为与用户交互提供了丰富的可能性。本文将深入探讨如何在UIImageView中添加和使用各种手势,包括点击、拖动、旋转和缩放。 首先,我们要引入手势...

    使用UIImageView实现的橡皮擦类

    在iOS应用开发中,UIImageView是显示图像的基本控件,它用于加载、展示静态图片。而题目中的"使用UIImageView实现的橡皮擦类"是一个扩展,它使得UIImageView不仅可以展示图片,还可以实现橡皮擦功能,允许用户擦除...

    OC Extension UIImageView+FHXExtension.zip

    本话题涉及的"UIImageView+FHXExtension.zip"是一个OC的扩展,为UIImageView类添加了额外的功能,方便开发者更高效地处理图像显示。下面我们将详细探讨这个扩展中的知识点。 首先,"UIImageView+FHXExtension"这种...

    iOS开发中UIImageView控件的常用操作整理

    在iOS开发中,UIImageView是用于展示图像的UI控件,它可以是应用界面中不可或缺的部分。在Objective-C中,我们可以通过多种方式创建并操作UIImageView。以下是对UIImageView常用操作的详细讲解: 1. **创建...

    UIImageViewAnimator 多媒体源码_ios源码

    在iOS开发中,UIImageView是我们常用的一个组件,用于显示静态图片。然而,当需要实现复杂的图片动画效果时,UIImageView的单一功能就显得力不从心了。为此,开发者们创造了许多扩展,其中UIImageViewAnimator就是一...

    IOS中UIImageView方法实现简单动画

    在iOS开发中,UIImageView是用于显示图像的常见控件,但它并不只是静态地展示图片,还可以通过一组内置的动画方法实现简单的动画效果。这些方法可以让开发者轻松地创建一些基础的过渡或循环效果,无需深入Core ...

    James-IOS-Label:可以拉伸,旋转的简单UIImageView和UILabel。 可用于tableview单元格或视图中的订单处理状态

    它提供了一个可拉伸、可旋转的UIImageView和UILabel,非常适合用在UITableView的单元格或是视图中展示订单或交易的状态。 首先,我们来详细探讨UIImageView的拉伸与旋转功能。UIImageView是iOS中用来显示图像的类,...

    ios 360度旋转效果demo

    它通过使用`UIImageView`这一UI组件,来实现图片的动态旋转效果。关键代码位于`FVImageSequence.m`文件中,该文件是实现旋转功能的核心部分。 在iOS开发中,`UIImageView`是苹果提供的一个视图类,主要用于显示静态...

    点击旋转图片再点击停止旋转

    1. **UIImageView**:在iOS中,UIImageView是用于显示图像的UI控件。它是实现图片旋转的基础。首先,我们需要创建一个UIImageView实例,并将需要旋转的图片设置为其image属性。 2. **CADisplayLink**:...

    ios 转盘 demo

    对于转盘上的每个选项,可以创建对应的UILabel或者UIImageView,并将其添加到转盘视图上。布局时需确保每个选项在旋转过程中都能正确显示。 五、交互逻辑 在转盘停止时,需要处理选中项的逻辑。这可能涉及到回调...

    Loaded-icon.zip_icon_加载时旋转的

    1. **创建UIImageView对象**:首先,需要创建一个UIImageView实例,并设置其frame来确定在屏幕上的位置和大小。这个UIImageView将用来显示旋转的加载图标。 ```objc UIImageView *loadingImageView = [[UIImageView...

Global site tag (gtag.js) - Google Analytics