博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[UI界面]-UIImage的拉伸
阅读量:4956 次
发布时间:2019-06-12

本文共 1565 字,大约阅读时间需要 5 分钟。

    UIImage主要是用来设置UIImageView中的image属性的。如果图片尺寸和UIImageView的尺寸正好一样。那么,恭喜您,直接放上去就ok了。

    但是,如果两个尺寸不相匹配怎么办呢?答案很明显有两种:拉伸或者保持原来大小不变。

一、不拉伸图片

    如果你不想拉伸图片,那么伴随着一个问题。这个Image应该放在哪里合适?

    这时,UIImageView会用到从父类UIView继承过来的一个属性contentMode。

    如果这样写:

      imageView.contentMode = UIViewContentModeCenter;//假设imageView存在,并且已经设置过了一个尺寸较小的图片

    这句代码执行后,可以看到图片会显示在imageView的中央。其它的枚举值效果,大家可以自己去尝试。

二、拉伸图片

    如果拉伸图片,那么伴随的将是另外一个问题,该如果拉伸?

    1>均匀拉伸

      均匀拉伸分为两种:等比例拉伸或者非等比例拉伸

      如果选择等比例拉伸,那么可能必然只能以一边外参照,另一边就无法考虑到。

      这时,也会用到上面说的contentMode属性。

        imageView.contentMode = UIViewContentModeScaleAspectFit;//假设imageView存在,并且已经设置过了一个尺寸较小的图片

        imageView.contentMode = UIViewContentModeScaleAspectFill;//假设imageView存在,并且已经设置过了一个尺寸较小的图片

      上面代码第一种,执行的效果是,水平方向和垂直方向等比例拉伸。当某一边达到最大效果时,停止拉伸,并显示出来。

      下面代码,执行的效果是,水平方向和垂直方向等比例拉伸。当某一边达到最大效果时,如果另一边还没有达到最大效果,继续拉伸,并且已经达到最大效果的方向会继续拉伸,超过imageView的边界。

      如果是非等比拉伸,那么就不需要考虑那么多问题了。

        imageView.contentMode = UIViewContentModeScaleToFill;//假设imageView存在,并且已经设置过了一个尺寸较小的图片

      这句代码会直接将图片拉伸到填充这个imageView。

    2>非均匀拉伸

      在这里只考虑一种情况。就是保持图片的边界不变,只拉伸中间的一部分。

      如果是iOS5.0以前,可以有两个选择。不过第一种已经声明过时,不推荐使用。

        [image stretchableImageWithLeftCapWith:7 topCapHeight:8];//假设image已经存在,并且其大小为17*31

        [image resizableImageWithCapInsets:[UIEdgeInsetsMake(8, 7, 22, 9)]];//假设image已经存在,并且其大小为17*31

      上面代码第一种,意思是说,如果水平方向需要拉伸,那么保持左边7个像素不变,保持右边(17 - 7 - 1)个像素不变,拉伸的是从第7个像素开始的一个像素长度;如果是垂直方向需要拉伸,那么保持上边8个像素不变,保持下边(31-8-1)个像素不变,拉伸的是从第8个像素开始的一个像素长度。

      下面代码,所做的效果和上面的一样。

转载于:https://www.cnblogs.com/dilin/p/3567571.html

你可能感兴趣的文章
SQL中Group By的使用
查看>>
错误org/aopalliance/intercept/MethodInterceptor解决方法
查看>>
Pylint在项目中的使用
查看>>
使用nginx做反向代理和负载均衡效果图
查看>>
access remote libvirtd
查看>>
(4) Orchard 开发之 Page 的信息存在哪?
查看>>
ASP.NET中 GridView(网格视图)的使用前台绑定
查看>>
Haskell学习-高阶函数
查看>>
PC-XP系统忘记密码怎么办
查看>>
深入了解Oracle ASM(二):ASM File number 1 文件目录
查看>>
Boosting(提升方法)之AdaBoost
查看>>
链接元素<a>
查看>>
Binding object to winForm controller through VS2010 Designer(通过VS2010设计器将对象绑定到winForm控件上)...
查看>>
Spring Boot实战笔记(二)-- Spring常用配置(Scope、Spring EL和资源调用)
查看>>
第二章:webdriver 控制浏览器窗口大小
查看>>
【动态规划】流水作业调度问题与Johnson法则
查看>>
Python&Selenium&Unittest&BeautifuReport 自动化测试并生成HTML自动化测试报告
查看>>
活现被翻转生命
查看>>
POJ 1228
查看>>
SwaggerUI+SpringMVC——构建RestFul API的可视化界面
查看>>