gpt4 book ai didi

ios - UIEdgeInsetsMake 是如何工作的?

转载 作者:IT王子 更新时间:2023-10-29 07:34:26 25 4
gpt4 key购买 nike

我正在制作一个应用程序,其中我将 UIEdgeInsetsMake 用于 resizableImageWithCapInsets,但我不明白它是如何工作的,UIEdgeInsetsMake有 4 个参数:

  • 置顶
  • 底部

但它们是 float 的,所以我不知道如何将其设置为图像,谢谢! :D

最佳答案

根据文档:

You use this method to add cap insets to an image or to change the existing cap insets of an image. In both cases, you get back a new image and the original image remains untouched.

During scaling or resizing of the image, areas covered by a cap are not scaled or resized. Instead, the pixel area not covered by the cap in each direction is tiled, left-to-right and top-to-bottom, to resize the image. This technique is often used to create variable-width buttons, which retain the same rounded corners but whose center region grows or shrinks as needed. For best performance, use a tiled area that is a 1x1 pixel area in size.

因此您只需要在 UIEdgeInsetsMake 函数的值中使用您想要使其不可拉伸(stretch)的像素数量即可。

假设您有一张 21x50 点的图像(标准清晰度为 21x50 像素,Retina“@2x”定义为 42x100 像素)并希望该图像可水平拉伸(stretch),同时保持左侧和右侧的 10 个点不变拉伸(stretch)图像,但只拉伸(stretch)中间 1 点宽的带。然后您将使用 UIEdgeInsetsMake(0,10,0,10)

不要因为它们是 float 而烦恼(例如,这对于子像素调整大小很有用,但实际上您可能只会使用整数(或没有小数部分的 float )

注意,这是 iOS5+ 独有的方法,在 iOS5 之前不可用。如果您使用 iOS5 之前的 SDK,请改用 stretchableImageWithLeftCapWidth:topCapHeight:


[EDIT] 一些技巧 我使用了一段时间,因为我不记得 UIEdgeInsets 结构的字段顺序是什么——以及我们应该是什么顺序将参数传递给 UIEdgeInsetsMake 函数——我更喜欢使用 the "designated inits" syntax像这样:

UIEdgeInsets insets = { .left = 50, .right = 50, .top = 10, .bottom = 10 };

或者当需要显式转换时:

UIImage* rzImg = [image resizableImageWithCapInsets:(UIEdgeInsets){
.left = 50, .right = 50,
.top = 10, .bottom = 10
}];

我发现它更具可读性,尤其是要确保我们不会混淆不同的边界/方向!

关于ios - UIEdgeInsetsMake 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7628004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com