pme*_*ino 59 cocoa-touch uiimage ios ios5 uiedgeinsets
我在做一个应用程序,我用UIEdgeInsetsMake了resizableImageWithCapInsets,但我不明白是怎么做的工作原理完全,UIEdgeInsetsMake有4个参数:
但它们是漂浮的,所以我不知道如何将其设置为图像,谢谢!:d
Ali*_*are 70
根据文件:
您可以使用此方法为图像添加上限,或更改图像的现有上限.在这两种情况下,您都会返回一个新图像,原始图像保持不变.
在缩放或调整图像大小期间,由盖子覆盖的区域不会缩放或调整大小.相反,在每个方向上没有被盖子覆盖的像素区域是平铺的,从左到右和从上到下,以调整图像的大小.此技术通常用于创建可变宽度按钮,这些按钮保留相同的圆角但其中心区域根据需要增大或缩小.为获得最佳性能,请使用大小为1x1像素区域的平铺区域.
因此,您只需要使用您想要在UIEdgeInsetsMake函数值中不可伸展的像素数量.
假设您有一个21x50点的图像(标准清晰度为21x50像素,Retina为42x100像素,"@ 2x"定义)并希望此图像可水平拉伸,在拉伸图像时保持左侧和右侧的10个点不受影响,但只能在中间伸展1点宽的乐队.然后你会用UIEdgeInsetsMake(0,10,0,10).
不要打扰它们是浮点数(例如,这对于子缩位大小调整很有用,但实际上你可能只使用整数(或没有小数部分的浮点数)
请注意,这是iOS5 +唯一的方法,在iOS5之前不可用.如果您使用iOS5之前的SDK,请stretchableImageWithLeftCapWidth:topCapHeight:改用.
[编辑]我从一段时间以来使用的一些提示,因为我永远不会记住UIEdgeInsets结构的字段是以哪种顺序- 以及我们应该将参数传递给UIEdgeInsetsMake函数的顺序- 我更喜欢使用像这样的"指定inits"语法:
UIEdgeInsets insets = { .left = 50, .right = 50, .top = 10, .bottom = 10 };
Run Code Online (Sandbox Code Playgroud)
或者当需要显式演员时:
UIImage* rzImg = [image resizableImageWithCapInsets:(UIEdgeInsets){
.left = 50, .right = 50,
.top = 10, .bottom = 10
}];
Run Code Online (Sandbox Code Playgroud)
我发现它更具可读性,特别是为了确保我们不混合不同的边框/方向!
mat*_*att 10
但它们是漂浮的,所以我不知道如何将其设置为图像
这是一个UIImage实例方法.因此,您resizableImageWithCapInsets在图像中创建的方式是首先将该消息发送到图像(UIImage).
很酷的新功能:请注意,如果边缘插入全部为零,则图像将平铺.这适用于任何接受背景图像的背景.它甚至可以在UIImageView中运行.
| 归档时间: |
|
| 查看次数: |
78968 次 |
| 最近记录: |