IOS开发-UIImageView基本用法
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基本用法的更多相关文章
- iOS开发-UIImageView高效设置Radius
圆角的设置在iOS中随处可见,开发的时候也很方便,但是有的时候如果一个页面有大量的需要设置圆角的图片,容易产生性能问题,UIImageView ios9.0之前设置圆角是会产生离屏渲染的,9.0之后不 ...
- iOS开发宝典:String用法大全
一.NSString 创建字符串. NSString *astring = @"This is a String!"; 创建空字符串,给予赋值. NSString *astri ...
- iOS开发——UIImageView
1.图像点击之后,全屏浏览 - (void)viewDidLoad { [super viewDidLoad]; _myImage=[[UIImageView alloc]initWithFrame: ...
- iOS开发-UIImageView响应点击事件
UIImageView是不能够响应点击事件的,在开发过程中我们需要经常对头像等添加点击事件,上网搜索一番后发现有如下两个方法: 1.找到点击图片Event,添加事件处理函数 UIImageView.u ...
- iOS开发-UIImageView的contentMode属性
UIImageView 的contentMode这个属性是用来设置图片的显示方式,如居中.居右,是否缩放等,有以下几个常量可供设定:UIViewContentModeScaleToFillUIView ...
- IOS开发Block详细用法
Block简介: ios4.0系统已开始支持block,在编程过程中,blocks被Obj-C看成是对象,它封装了一段代码,这段代码可以在任何时候执行.Blocks可以作为函数参数或者函数 ...
- IOS开发self.的用法总结
如果声明的是retain类型的,然后使用self.的话此时引用计数会加1,变成1,如果同时又使用了alloc,那么引用计数又加一变成了2,那么如果只是release一次的话就会内存泄漏. 这种情况下的 ...
- iOS开发 Coretext基本用法
转至 http://blog.csdn.net/fengsh998/article/details/8691823 API接口文档. https://developer.apple.com/libra ...
- iOS 开发多线程篇—GCD的常见用法
iOS开发多线程篇—GCD的常见用法 一.延迟执行 1.介绍 iOS常见的延时执行有2种方式 (1)调用NSObject的方法 [self performSelector:@selector(run) ...
- iOS开发多线程篇—GCD的常见用法
iOS开发多线程篇—GCD的常见用法 一.延迟执行 1.介绍 iOS常见的延时执行有2种方式 (1)调用NSObject的方法 [self performSelector:@selector(run) ...
随机推荐
- 1.UML之类图
前言 在实际软件开发中,很多人都忽视了先设计后编码的理念,特别是像我这样的新手菜鸟:但在我亲戚的指导下,我便开启了一个简单项目的先设计关卡. 今天的重中之重---UML,学习了它,我们在编写项目代码时 ...
- php正则表达式大全/php正则表达式使用方法整理集合
匹配数字 "^\d+$" //非负整数(正整数 + 0) "[1][1-9][0-9]$" //正整数 "^((-\d+)|(0+))$" ...
- .NET无侵入自动化探针原理和主流实现
前言 最近,我在微信公众号和博客园分享了一篇关于.NET微服务系统迁移至.NET 6.0的故事的文章,引起了许多读者的关注.其中,许多人对基于 OpenTelemetry .NET 的观测指标和无侵入 ...
- 基于DotNetCoreNPOI封装特性通用导出excel
基于DotNetCoreNPOI封装特性通用导出excel 目前根据项目中的要求,支持列名定义,列索引排序,行合并单元格,EXCEL单元格的格式也是随着数据的类型做对应的调整. 效果图: 调用方式 可 ...
- cesium源码编译调试及调用全过程
完整记录一次cesium源码从下载.打包.调用.调试的全过程. 本文使用软件或API版本: VSCode Node:12.18.3 cesium版本:1.94 总体步骤: 下载源码 执行npm ins ...
- Django 如何使用 Celery 完成异步任务或定时任务
以前版本的 Celery 需要一个单独的库(django-celery)才能与 Django 一起工作, 但从 Celery 3.1 开始,情况便不再如此,我们可以直接通过 Celery 库来完成在 ...
- C# 模拟界面点击/UI自动化测试
有一些UI自动化测试框架,能够实现自动化测试. 本文介绍Peer(微软的TAF技术),也可以实现自动化测试,或是对其他进程进行UI操作.下面是案例~ 在界面上添加俩个按钮: 并处理相应的点击事件: 1 ...
- Rust中的函数指针
什么是函数指针 通过函数指针允许我们使用函数作为另一个函数的参数.函数的类型是 fn (使用小写的 "f" )以免与 Fn 闭包 trait 相混淆.fn 被称为 函数指针(fun ...
- Spring源码:Bean生命周期(三)
前言 在之前的文章中,我们已经对 bean 的准备工作进行了讲解,包括 bean 定义和 FactoryBean 判断等.在这个基础上,我们可以更加深入地理解 getBean 方法的实现逻辑,并在后续 ...
- Feign踩坑源码分析--@FeignClient注入容器
一. @EnableFeignClients 1.1.类介绍 从上面注释可以看出是扫描声明了@FeignClient接口的类,还引入了 FeignClientsRegistrar类,从字面意思可以看出 ...
