AspectFill VS. AspectFit
从去年10月进入公司,到现在差不多忙碌了3个月,期间几乎所有精力和时间都花在了公司的项目上,有很多工作学习的心得一直没有总结,趁周末无事就来使这写一写。
除了刚进公司的那一个月是做一些修修补补的工作,后面的时间直接就在项目里大刀阔斧的搞改造,大概用了不到一个月的时间完成一个新的核心功能,当然是多亏了安卓版的前车之鉴,进度来的比较快,那段时间总体来说就是跟CoreGrahics 打交道,玩弄动画和affineTransform ,然后就是移植opencv的代码,很无脑的移植而已。这里唯一值得一提的是搞清楚了 AspectFill 和 AspectFit 是怎么回事。
AspectFill VS. AspectFit
如果跟图片打过交道,这两个概念几乎是最常见的,其实也不仅限于图片,这个概念涉及到所有内容和容器的关系。通常,如果我们要把一个固定大小的内容,比如图片放到一个固定大小的容器里,但是这个容器的宽高比例和图片的不一样的时候,我们不能简单粗暴的直接把图片的宽高设置成和容器的一样,这样图片会被挤压而失真。所以就需要按比例来缩放图片,使其既保证真实的比例,又能塞进给定的容器。但是如何缩放就是个问题:
- 容器和图片的比例一样,这个好办,只需要按照比例缩放就行了,比如缩小3倍,newWidth = width / 3; newHeight = height /3
- 容器和图片比例不一样,问题来了。
假设容器宽和高分别是H, W;图片宽高分别是h, w。图片和容器比例不一样可能带来这个问题 h / H = 3; w / W = 2。因为要按比例,所以我们只能从缩小3倍和缩小2倍中选一个来缩放。
如果我们选择缩3 倍,那么新图片的高度刚好和容器契合,但是宽度本来只需缩小2倍就够了,但是我们缩了3倍,于是新图片在容器里的宽度就不能填满而出现了留白,这样的缩放方式就是AspectFit 因为他取了最大的缩放值从而保证整张图片都能完整的放进容器(这就是Fit),代价是不能充满容器。
对于AspectFill 当然就是与Fit 相反,其目的是“Fill” 即保证充满容器。所以选择两个缩放值中较小的那个,接上例,因为选择缩小2倍,所以宽度刚好契合容器,但是高度因为只缩了2倍所以导致一部分图片内容被截在了容器外面。
Conclusion
AspectFill 用途:保证图片充满整个容器,方式:选取宽高缩放值里较小的值来缩放,代价:一部分图片内容被截断。
AspectFit 用途:保证图片完整地装进容器,方式:选取宽高缩放值里较大的值来缩放,代价:容器无法装满,出现留白。
To Be Continued....
AspectFill VS. AspectFit的更多相关文章
- ios基础知识
1获取系统语言设置 NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; NSArray *languages = ...
- iOS 基础知识
1获取系统语言设置 NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; NSArray *languages = ...
- 微信小程序image组件中aspectFill和widthfix模式应用详解
aspectFill 与 widthfix 都是保持宽高比不变 aspectFill 保持纵横比缩放图片,只保证图片的短边能完全显示出来.也就是说,图片通常只在水平或垂直方向是完整的,另一个方向将会发 ...
- 浅谈H5图片中object-fit的属性及含义/ 小程序image mode属性中scaleToFill,aspectFit,widthFix等类似
我们在H5中对于图片的属性包含如下: object-fit属性有哪些值呢? object-fit: fill; object-fit: contain; object-fit: cover; o ...
- iOS 底层框架的浅析
1.简介 IOS是由苹果公司为iPhone.iPod touch和iPad等设备开发的操作系统. 2.知识点 iPhone OS(现在叫iOS)是iPhone, iPod touch 和 iPad 设 ...
- 微信小程序-媒体组件
audio 音频. MediaError.code 示例代码: <!-- audio.wxml --> <audio poster="{{poster}}" na ...
- iOS开发拓展篇—音频处理(音乐播放器6)
iOS开发拓展篇—音频处理(音乐播放器6) 一.图片处理 说明: Aspect表示按照原来的宽高比进行缩放. Aspectfit表示按照原来的宽高比缩放,要求看到全部图片,后果是不能完全覆盖窗口,会留 ...
- iOS - MPMoviePlayer 视频播放
前言 MP_EXTERN_CLASS_AVAILABLE(3_2) NS_DEPRECATED_IOS(3_2, 9_0, "Use AVPlayerViewController in AV ...
- 微信小程序初体验(上)
版权声明:本文由练小习原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/204 来源:腾云阁 https://www.qclo ...
随机推荐
- httpclient+Jsoup总结
Jsoup.parse解析HTML字符串,如Jsoup.parse("<html><head><title>Firstparse</title> ...
- sql server2008 获取动态sql的变量值
--通过SQL 字符串 查询 获取查出的值sp_executesql declare @QuerySql nvarchar(500),@uid int,@Ucode varchar(100);set ...
- EXTJS 6 必填项加星号*
/**重写ext filed组件, 实现表单必填项加红色*星号**/ Ext.override(Ext.form.field.Base,{ initComponent:function(){ if(t ...
- 同级兄弟元素之间的CSS控制
为了实现这个导航效果:选中菜单中某一项,隐藏掉自身的左边背景线条,同时让他的下一个兄弟元素也隐藏掉线条. 有一种选择器就叫兄弟元素选择器,分为临近兄弟和普通兄弟. 临近兄弟:用 + 表示,只匹配该元素 ...
- ASP.NET Web API与Rest web api
ASP.NET Web API is a framework that makes it easy to build HTTP services that reach a broad range of ...
- 【转】Git如何Check Out出指定文件或者文件夹
[转]Git如何Check Out出指定文件或者文件夹http://www.handaoliang.com/a/20140506/195406.html 在进行项目开发的时候,有时候会有这样的需求那就 ...
- ios 中NSDateFormater中的特殊字符
今天要把一个字符串转化为日期格式,这个字符串是服务器传过来的,如下: 2015-02-28T14:40:15 我开始使用这个格式来转化 yyyy-MM-ddThh:mm:ss ,一直返回nil,原来 ...
- NEFU 503 矩阵求解 (非01异或的高斯消元)
题目链接 中文题,高斯消元模板题. #include <iostream> #include <cstdio> #include <cmath> #include ...
- Rabbitmq实现负载均衡与消息持久化
Rabbitmq 是对AMQP协议的一种实现.使用范围也比较广泛,主要用于消息异步通讯. 一,默认情况下Rabbitmq使用轮询(round-robin)方式转发消息.为了较好实现负载,可以在消息 ...
- TCP/IP的Socket编程
1. TCP/IP.UDP的基本概念 TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,他是一个工业标准的协议集, ...