iOS编程——Swift使用resizableImageWithCapInsets来拉伸图片
2015-08-05 11:30
711 查看
在做项目的过程中,经常要用到各种尺寸的图片。有的图片则是长度不同,但是他们的某些区域是相同的。那有没有什么方法可以不用美工来切好多张图,用一张就可以实现呢?
这样既可以减轻美工工作量,又可以减少包得大小。 答案就是用resizableImageWithCapInsets。声明如下:
其中使用capInsets:UIEdgeInsets 可以圈定一个矩形,这个图片矩形内的区域会拉伸变形,而这个矩形区域外的部分则会保持原样。
resizingMode:包括两种模式:
1)Title 通过重复显示UIEdgeInsets指定的矩形区域来填充图片
2) Stretch 通过拉伸UIEdgeInsets指定的矩形区域来填充图片
这里我们仅说iOS 6.0以后(现在都已经8.0多了,兼容iOS6以后就相当可以了)
我们先添加一张图片,其最初大小为(100, 30),假设适配的iPhone 6
显示原来大小:
现在比如要适配 Plus,要拉伸这个图,尺寸变为(300, 30)
显示的很难看了:
我们把左边10个像素和右边的40个像素给保持原样,中间的蓝色区域来进行拉伸
这样就显示正常了。
这样既可以减轻美工工作量,又可以减少包得大小。 答案就是用resizableImageWithCapInsets。声明如下:
func resizableImageWithCapInsets(capInsets: UIEdgeInsets, resizingMode: UIImageResizingMode) -> UIImage // the interior is resized according to the resizingMode
其中使用capInsets:UIEdgeInsets 可以圈定一个矩形,这个图片矩形内的区域会拉伸变形,而这个矩形区域外的部分则会保持原样。
resizingMode:包括两种模式:
1)Title 通过重复显示UIEdgeInsets指定的矩形区域来填充图片
2) Stretch 通过拉伸UIEdgeInsets指定的矩形区域来填充图片
enum UIImageResizingMode : Int { case Tile case Stretch }
这里我们仅说iOS 6.0以后(现在都已经8.0多了,兼容iOS6以后就相当可以了)
我们先添加一张图片,其最初大小为(100, 30),假设适配的iPhone 6
//default size (100, 30) let imageView = UIImageView(frame: CGRectMake(40, 40, 100, 30)) let image = UIImage(named: "test") imageView.image = image view.addSubview(imageView)
显示原来大小:
现在比如要适配 Plus,要拉伸这个图,尺寸变为(300, 30)
let imageView = UIImageView(frame: CGRectMake(40, 40, 300, 30)) imageView.image = image view.addSubview(imageView)
显示的很难看了:
我们把左边10个像素和右边的40个像素给保持原样,中间的蓝色区域来进行拉伸
let imageView = UIImageView(frame: CGRectMake(40, 40, 300, 30)) let image = UIImage(named: "test")?.resizableImageWithCapInsets(UIEdgeInsetsMake(0, 10, 0, 40), resizingMode: UIImageResizingMode.Stretch) imageView.image = image view.addSubview(imageView)
这样就显示正常了。
相关文章推荐
- swift中tabbar切换页面动画
- iOS编程——Swift用代码为view添加各种圆角
- swift protocol
- Chapter 5:UIKit Dynamics - iOS 8 Swift Programming cookBook 读书笔记
- Swift:实例方法和类型方法
- Chapter 5:collection view - iOS 8 Swift Programming cookBook 读书笔记
- Swift iOS 文件操作:沙盒(SandBox)、程序包(NSBundle)
- Swift之沙盒与数据存储
- Swift2.0中Json数据的解析教程
- ios7 以上会出现导航栏遮盖的问题 swift语言处理
- Swift工程中引用OC文件
- XCode6.3编写swift+OC引入含C++的库时的问题
- Swift学习笔记系列——(14)析构
- Swift架构概述
- Swift语法—— where语句使用
- Swift学习笔记系列——(13)初始化
- Swift对象存储API概述
- CocoaPods OC项目引入第三方Swift库 问题
- Swift入门(七)——结构体(Struct)
- Watch OS 2 Complication开发教程(一)基础(持续连载中)