[UI界面]-UIImage的拉伸

原文

  http://www.cnblogs.com/dilin/p/3567571.htm


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已经存在,并且其大小为15*15

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

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

l
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值