UIImageView

  • UIKit框架提供了非常多的UI控件,但并不是每一个都很常用,有些控件可能1年内都用不上,有些控件天天用,比如UIButton、UILabel、UIImageView、UITableView等等
  • UIImageView极其常用,功能比较专一:显示图片
  • 能显示图片,不能直接通过addTarget...方法监听点击

1.常见属性

  • @property(nonatomic,copy) NSArray *animationImages;

    • 显示的动画图片
  • @property(nonatomic,retain) UIImage *image;
    • 显示的图片
  • @property(nonatomic) NSTimeInterval animationDuration;
    • 动画图片的持续时间
  • @property(nonatomic) NSInteger animationRepeatCount;
    • 动画的播放次数(默认是0,代表无限播放)

2.常见方法

  • (void)startAnimating;

    • 开始动画
  • (void)stopAnimating;
    • 停止动画
  • (BOOL)isAnimating;

    • 是否正在执行动画
  • 一个UIImage对象代表一张图片,一般通过imageNamed:方法就可以通过文件名加载项目中的图片

UIImage *image = [UIImage imageNamed:@"Tom"];

3. contentMode属性

  • 带有scale单词的: 图片有可能会拉伸

    • UIViewContentModeScaleToFill(默认)

      • 将图片拉伸至填充整个imageView
      • 图片显示的尺寸跟imageView的尺寸是一样的
    • 带有aspect单词的:图片会保持原来的宽高比
      • UIViewContentModeScaleAspectFit

        • 保持图片的宽高比,保证刚好能看到整个图片
      • UIViewContentModeScaleAspectFill
        • 拉伸到图片宽度或者高度跟imageView一样,并且居中显示
  • 没有带scale单词的: 图片绝对不会被拉伸

    • UIViewContentModeCenter(居中)
    • UIViewContentModeTop(居中靠下)
    • UIViewContentModeBottom(居中靠下)
    • UIViewContentModeLeft(居中靠左
    • UIViewContentModeRight(居中靠右)
    • UIViewContentModeTopLeft(显示在左上角)
    • UIViewContentModeTopRight(显示在右上角)
    • UIViewContentModeBottomLeft(显示在左下角)
    • UIViewContentModeBottomRight(显示在右下角)
    • 图片的属性clipsToBounds = YES(裁剪超出imageView边框的部分)

4. 注意点

  • 用initWithImage默认坐标是(0,0),并且是图片的大小
  • 不能直接修改OC对象的"结构体属性"的成员
    • 取出结构体
    • 赋值

5. 修改frame的3种方式

  • 直接用CGRectMake函数

    • CGPointZero == CGPointMake(0,0);
  • 用临时结构体变量
  • 使用大括号{}
    • 要强制转换类型

6. 帧动画

  • 抽取重复代码

    • 将相同的代码放入一个新的方法
    • 不同的东西变成方法的参数

7. 音频播放

  • 导入

    • URL就算是本地的(直接拖进来[如果含有中文会出错],不能省略file://
    • 必须是全路径
NSURL *url = [NSURL URLWithString:(全路径/本地的(直接拖进来[如果含有中文会出错]))];
AVPlayer *player = [AVPlayer playerWithURL:url];
//不播放,因为player是局部变量,需要定义一个强指针
  • 将音频资料添加到Supporting Files中

    • 全路径:Finder-->前往-->个人-->资源库(隐藏文件夹)-->developer-->CoreSimulator-->Devices-->设备-->data-->Containers-->Bundle-->Application-->应用-->应用名.app
NSURL *url = [NSURL URLWithString:@"file://名称.扩展名"];
//
AVPlayer *player = [AVPlayer playerWithURL:url];
//不播放,因为player是局部变量,需要定义一个强指针
8. 缓存
  • 用imageWithContentsOfFile+全路径

    • 放到images.xcassets就会有缓存,会压缩到一个文件中
    • 将大图片放入到Supporting Files中,并且添加时选中create groups
    • 如果选create folder references则会生成一个文件夹来保存添加的文件

9. 图片的加载方式

  • 有缓存
UIIMage *Image = [UIImage imageNamed:@"图片名"];
- 使用场合: 图片较小,使用频率高
- 放到images.xcassets就会有缓存,会压缩到一个文件中
  • 无缓存
NSString *file = [[NSBundle mainBundle] pathForResource:@"图片名"];
UIImage *image = [UIImage imageWithContentOfFile:@"图片文件的全路径"];
- 使用场合: 图片较大,使用频率较小
- 不能放入images.xcassets中
  • 放入images.xcassets中的图片,只能通过图片名加载图片

10. 延迟做一些事情

[self performSelector:@selector(stand:) withObject:@"123" afterDelay:10];
//10秒后自动调用self的stand: 方法,并且传递@"123"参数

11. 简单播放

//创建一个音频文件
NSURL *url = [NSBundle mainBundle] URLForResource:@"音频文件名" withExtension:@"音频文件的扩展名"];
//创建播放器
AVPlayer *player = [AVPlayer playerWithURL:url];
//播放
[self.player play];
  • 从资源库中加载资料用[NSBundle mainBundle]

UIImageView总结的更多相关文章

  1. AFNetworking 3.0 源码解读(十)之 UIActivityIndicatorView/UIRefreshControl/UIImageView + AFNetworking

    我们应该看到过很多类似这样的例子:某个控件拥有加载网络图片的能力.但这究竟是怎么做到的呢?看完这篇文章就明白了. 前言 这篇我们会介绍 AFNetworking 中的3个UIKit中的分类.UIAct ...

  2. 6. UIImageView 的使用

    1. UIImageView 的认识 QQ:853740091 UIImageView 继承UIView,通过他的名字我们也可以看出这个是用来显示图片的 2. 使用方法 UIImageView *im ...

  3. UI控件(UIImageView)

    @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; image1_ = [UIImage imageNa ...

  4. iOS--使用UIImageView进行GIF动图播放

    大家好,好久没有跟新了.其实也就昨天到今天的时间. 前言:实际上,GIF动图文件中包含了一组图片及其信息数组,这些信息数据记录着这一组图片中各张图片的播放时长等信息,我们可以将图片和这些信息或取出来, ...

  5. UIImageView 自带动画+N张图片实现很炫的动画

    gitHub上又看到个很炫的动画:https://github.com/MartinRGB/GiftCard-iOS   看了看他的代码,发现核心动画(就是把按钮包装成一个礼物盒)其实很简单,就是把一 ...

  6. UIImageView

    - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. /***** ...

  7. IOS开发之Bug--关于UIImageView的使用

    这里是遇到的一个关于使用UIImageView的小bug,bug就是加载不出来图片. 原因:如果图片资源是jpg文件,如果代码没有加后缀.jpg就会出现不加载出来的情况: 添加上.jpg就能加载出来了 ...

  8. UIScrollView,UIPageControl,UIImageView 实现图片轮播的效果

    上一篇博客介绍了如何将XCode创立的项目提交到Git版本控制,这次就直接做一个图片轮播的展示demo,刚好可以把UIScrollView.UIPageControl.UIImageView这三个控件 ...

  9. iOS中UIImageView的填充模式

    UIImageView的填充模式 属性名称 imageV.contentMode枚举属性: @"UIViewContentModeScaleToFill", // 拉伸自适应填满整 ...

  10. NSBundle控件和UIImageView和UIButton区别

    1.NSBundle 1> 一个NSBundle代表一个文件夹,利用NSBundle能访问对应的文件夹 2> 利用mainBundle就可以访问软件资源包中的任何资源 3> 模拟器应 ...

随机推荐

  1. vue的逆向传值(子传父)

    逆向传值:子组件传值给父组件叫做逆向传值  (是不v欸允许的,必须经过事件触发才能传值) 逆向传值步骤: 1.要传值必须先抛出,在接收 语法: this.$emit("event" ...

  2. mac 工作区

    https://www.zhihu.com/question/20917614 http://www.bjhee.com/mission-control.html 窗口切换 https://sspai ...

  3. 解决SpringBoot项目部署到服务器后访问Tomcat后404,无法访问Controller

  4. Redis入门和Java利用jedis操作redis

    Redis入门和Java利用jedis操作redis Redis介绍 Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库. Redis 与其他 key - val ...

  5. 关于 RocketMQ 事务消息的正确打开方式 → 你学废了吗

    开心一刻 昨晚和一哥们一起吃夜宵,点了几瓶啤酒 不一会天空下起了小雨,哥们突然道:糟了 我:怎么了 哥们:外面下雨了,我老婆还在等着我去接她 他给了自己一巴掌,说道:真他妈不是个东西 我心想:哥们真是 ...

  6. vue2与vue3的差异(总结)?

    vue作者尤雨溪在开发 vue3.0 的时候开发的一个基于浏览器原生 ES imports 的开发服务器(开发构建工具).那么我们先来了解一下vite Vite Vite,一个基于浏览器原生 ES i ...

  7. [loj3284]Exercise

    对于一个排列$p_{i}$,假设循环长度依次为$x_{1},x_{2},...,x_{m}$,那么所需步数即${\rm lcm}_{i=1}^{m}x_{i}$ 由于是乘积,因此可以枚举素数$p$,并 ...

  8. [bzoj1927]星际竞速

    考虑没有爆发,那么相当于是带权最小不可交路径覆盖,由于只能从编号小的到编号大的,因此一定是DAG,而DAG的最小路径覆盖可以拆点并跑最大流,那么带权的只需要跑费用流即可(S向i连(1,0)的边,i'向 ...

  9. [luogu5426]Balancing Inversions

    由于交换是相邻交换,所以分为两类:1.左右区间内部交换,那么一定会让逆序对数量$\pm 1$,也就是说如果没有左右区间之间交换,那么答案就是$|ansL-ansR|$(ans表示逆序对数量)2.左右区 ...

  10. could not extract ResultSet

    使用jpa进行代码更新:update的时候发现代码出现了异常:could not extract ResultSet 在数据库看数据并没有更新,后发现更新操作需要加一个注解 注释:当设置nativeQ ...