UIImageView是iOS中用于显示图像(图片、gif、svg等)的视图。

它的主要功能有:

1. 显示图片
UIImageView可以通过image属性显示一张UIImage类型的图片。可以是本地图片、从网络下载的图片等。

2. 设置填充模式
可以通过contentMode属性设置图片在UIImageView内的显示和填充模式。内容模式有:- scaleToFill:拉伸填充整个imageView
- scaleAspectFit:保持纵横比缩放适应imageView
- scaleAspectFill:保持纵横比缩放填充满imageView
- top、bottom、left、right:拉伸填充指定方向
- center:居中不拉伸显示

3. 设置多种交替动画
可以通过animationImages和animationDuration设置多张图片的交替动画。
或者配置UIImageViewAnimation方式来实现更为复杂的动画。

4. 支持用户交互
UIImageView支持用户交互事件,可以得到点击、拖动等事件。

5. 实现自适应布局
UIImageView支持Auto Layout,可以自动适应不同屏幕尺寸。

1. 创建UIImageView实例:

    UIImageView *imgview = [[UIImageView alloc] init];

2.设置UIImageView的布局信息:

   imgview.frame =CGRectMake((self.view.frame.size.width-100)/2, (self.view.frame.size.height-100)/2, 100, 100);

3. 设置image属性,显示图片:

  imgview.image = [UIImage imageNamed:@"icon"]

这里需要使用UIImage类的imageNamed方法传入图片的名称来生成图片,然后赋给imgview的image属性。

效果图:

4. 设置contentMode属性,控制图片缩放模式:

imageView.contentMode = UIViewContentModeScaleToFill; // 充满
imageView.contentMode = UIViewContentModeScaleAspectFit; // 完整显示
imageView.contentMode = UIViewContentModeScaleAspectFill; // 完整充满这里不做演示。就是三个枚举只,分别用来设置不同的展示方式

5. UIImageView设置圆角的方式

第一种方法:通过设置layer的属性

最简单的一种,但是很影响性能,一般在正常的开发中使用很少.

  //设置圆角
imgview.layer.cornerRadius = imgview.frame.size.width / 2;
//将多余的部分切掉
imgview.layer.masksToBounds = YES;

效果:

第二种方法:使用贝塞尔曲线UIBezierPath和Core Graphics框架画出一个圆角

 //开始对imageView进行画图
UIGraphicsBeginImageContextWithOptions(imgview.bounds.size, NO, 1.0);
//使用贝塞尔曲线画出一个圆形图
[[UIBezierPath bezierPathWithRoundedRect:imgview.bounds cornerRadius:imgview.frame.size.width] addClip];
[imgview drawRect:imgview.bounds];
imgview.image = UIGraphicsGetImageFromCurrentImageContext();
//结束画图
UIGraphicsEndImageContext();

第三种方法:使用CAShapeLayer和UIBezierPath设置圆角

首先需要导入<AVFoundation/AVFoundation.h>

 UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:imgview.bounds byRoundingCorners:UIRectCornerAllCorners cornerRadii:imgview.bounds.size];

        CAShapeLayer *maskLayer = [[CAShapeLayer alloc]init];
//设置大小
maskLayer.frame = imgview.bounds;
//设置图形样子
maskLayer.path = maskPath.CGPath;
imgview.layer.mask = maskLayer;

效果图:

这三种方法中第三种最好,对内存的消耗最少,而且渲染快速

IOS开发-UIImageView基本用法的更多相关文章

  1. iOS开发-UIImageView高效设置Radius

    圆角的设置在iOS中随处可见,开发的时候也很方便,但是有的时候如果一个页面有大量的需要设置圆角的图片,容易产生性能问题,UIImageView ios9.0之前设置圆角是会产生离屏渲染的,9.0之后不 ...

  2. iOS开发宝典:String用法大全

    一.NSString 创建字符串.  NSString *astring = @"This is a String!"; 创建空字符串,给予赋值.  NSString *astri ...

  3. iOS开发——UIImageView

    1.图像点击之后,全屏浏览 - (void)viewDidLoad { [super viewDidLoad]; _myImage=[[UIImageView alloc]initWithFrame: ...

  4. iOS开发-UIImageView响应点击事件

    UIImageView是不能够响应点击事件的,在开发过程中我们需要经常对头像等添加点击事件,上网搜索一番后发现有如下两个方法: 1.找到点击图片Event,添加事件处理函数 UIImageView.u ...

  5. iOS开发-UIImageView的contentMode属性

    UIImageView 的contentMode这个属性是用来设置图片的显示方式,如居中.居右,是否缩放等,有以下几个常量可供设定:UIViewContentModeScaleToFillUIView ...

  6. IOS开发Block详细用法

    Block简介:       ios4.0系统已开始支持block,在编程过程中,blocks被Obj-C看成是对象,它封装了一段代码,这段代码可以在任何时候执行.Blocks可以作为函数参数或者函数 ...

  7. IOS开发self.的用法总结

    如果声明的是retain类型的,然后使用self.的话此时引用计数会加1,变成1,如果同时又使用了alloc,那么引用计数又加一变成了2,那么如果只是release一次的话就会内存泄漏. 这种情况下的 ...

  8. iOS开发 Coretext基本用法

    转至 http://blog.csdn.net/fengsh998/article/details/8691823 API接口文档. https://developer.apple.com/libra ...

  9. iOS 开发多线程篇—GCD的常见用法

    iOS开发多线程篇—GCD的常见用法 一.延迟执行 1.介绍 iOS常见的延时执行有2种方式 (1)调用NSObject的方法 [self performSelector:@selector(run) ...

  10. iOS开发多线程篇—GCD的常见用法

    iOS开发多线程篇—GCD的常见用法 一.延迟执行 1.介绍 iOS常见的延时执行有2种方式 (1)调用NSObject的方法 [self performSelector:@selector(run) ...

随机推荐

  1. python入门教程之一 什么是python

    python简介 1 什么是python Python是一种计算机程序设计语言.你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页 ...

  2. Java语言在Spark3.2.4集群中使用Spark MLlib库完成朴素贝叶斯分类器

    一.贝叶斯定理 贝叶斯定理是关于随机事件A和B的条件概率,生活中,我们可能很容易知道P(A|B),但是我需要求解P(B|A),学习了贝叶斯定理,就可以解决这类问题,计算公式如下: P(A)是A的先验概 ...

  3. php对接snmp设备详细讲解

    1.Php安装snmp扩展 1.基础环境准备 Php7.2版本 yum -y install php72w-snmp Php7.4版本 yum install net-snmp php-snmp ne ...

  4. FBV和CBV的区别(源码分析)

    FBV和CBV源码分析 FBV直接调用user方法执行业务代码 CBV相当于在FBV上面封装了一层 from django.contrib import admin from django.urls ...

  5. Go语言实现协程下载器

    一般常用的下载方式是通过浏览器访问URL,然后基于HTTP进行下载.这种单线程下载方式通常比较慢,这里尝试使用Go语言实现一个多协程的下载器. 大致思路 按照传统的单线程的思路,实现下载要基于HTTP ...

  6. Django笔记二十七之数据库函数之文本函数

    本文首发于公众号:Hunter后端 原文链接:Django笔记二十七之数据库函数之文本函数 这篇笔记将介绍如何使用数据库函数里的文本函数. 顾名思义,文本函数,就是针对文本字段进行操作的函数,如下是目 ...

  7. Spring中事务嵌套这么用一定得注意了!!

    前言 最近项目上有一个使用事务相对复杂的业务场景报错了.在绝大多数情况下,都是风平浪静,没有问题.其实内在暗流涌动,在有些异常情况下就会报错,这种偶然性的问题很有可能就会在暴露到生产上造成事故,那究竟 ...

  8. Split to Be Slim: 论文复现

    摘要:在本论文中揭示了这样一种现象:一层内的许多特征图共享相似但不相同的模式. 本文分享自华为云社区<Split to Be Slim: 论文复现>,作者: 李长安 . Split to ...

  9. Django笔记三十二之session登录验证操作

    本文首发于公众号:Hunter后端 原文链接:Django笔记三十二之session登录验证操作 这一篇笔记将介绍 session 相关的内容,包括如何在系统中使用 session,以及利用 sess ...

  10. OData WebAPI实践-OData与EDM

    本文属于 OData 系列 引言 在 OData 中,EDM(Entity Data Model) 代表"实体数据模型",它是一种用于表示 Web API 中的结构化数据的格式.E ...