如何在这样的代码中绘制可调整大小的 UIImage?

Posted

技术标签:

【中文标题】如何在这样的代码中绘制可调整大小的 UIImage?【英文标题】:How do I draw resizable UIImage in code like this? 【发布时间】:2012-09-05 13:17:56 【问题描述】:

我想为 UISegmentedControl 使用自定义背景图像,例如“查找我的朋友”。以下是他们可调整大小的图片的样子:

source http://feedzr.com/source.png source http://feedzr.com/inwork.png

如何在 Core Graphics 中创建复杂的阴影效果?

编辑

底部图像是在真正的 UISegmentedControl 中使用皮革背景时上面的样子。在可调整大小的图像中有很多效果,例如: 底部光泽,顶部内阴影和从上到下的部分渐变。

我只是看不到这张图片中使用的效果和效果。我不是在问如何使用 UIEdgeInsets。

【问题讨论】:

您是指部分开始于“无处不在”部分及以后的发光效果吗? 没有。我想画的是上图。底部图像就是上面使用皮革背景时的样子。就像底部光泽、顶部内阴影和从上到下的部分渐变一样,我只是看不到这张图片中使用的效果和效果。 没有任何“效果”,这些图像很可能是设计师在 Photoshop 中制作的。 【参考方案1】:

这些只是 2 张图片。一个有影子一个没有……

您必须使用 CapInsets 创建这些图像以使其可调整大小

例如

UIImage *buttonImage = [[UIImage imageNamed:@"yourImage"]  
   resizableImageWithCapInsets:UIEdgeInsetsMake(1, 11, 0, 20)];

要了解 UIEdgeInsets 的工作原理,请阅读: How does UIEdgeInsetsMake work?

或者在 Apple Doc 中:

UIEdgeInsetsMake
Creates an edge inset for a button or view.

UIEdgeInsets UIEdgeInsetsMake (
   CGFloat top,
   CGFloat left,
   CGFloat bottom,
   CGFloat right
);
Parameters
top
The inset at the top of an object.
left
The inset on the left of an object
bottom
The inset on the bottom of an object.
right
The inset on the right of an object.
Return Value
An inset for a button or view

Discussion
An inset is a margin around the drawing rectangle where each side (left, right, top, and bottom) can have a different value.

Availability
Available in ios 2.0 and later.
See Also

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIKitFunctionReference/Reference/reference.html

【讨论】:

对不起,我没有清楚地描述我的问题。我编辑了它。请看一下编辑部分,谢谢@lukaswelte

以上是关于如何在这样的代码中绘制可调整大小的 UIImage?的主要内容,如果未能解决你的问题,请参考以下文章

JPanel中可调整大小的JFreeChart

iOS - 可调整大小的图像的固定部分设置?

如何从可调整大小的窗口中删除最小化和最大化按钮?

Qt C++ 可调整大小矩形的最小尺寸

iOS中的自定义“可调整大小的图像”绘图

如何使 iframe 可调整大小?