0

我正在尝试使用带有 stretchableImageWithLeftCapWidth 的 UIImage 在我的 UIImageView 中设置图像,但遇到了一个奇怪的缩放错误。基本上将我的图像想象成一个 31 像素宽的椭圆形。左右 15 个像素是大写字母,中间的单个像素是缩放部分。

如果我将左帽设置为 15,这很好用。但是,如果我将其设置为 4。我希望得到一个“中心”部分,因为它跨越中心而两端有点弯曲捏。

我得到的是左边的帽子看起来是正确的,然后是一个长的中间部分,就像我在像素 5 处缩放单个像素一样,然后是图像右侧的一部分,它在大约两倍的宽度上扩展和关闭的原始图像。生成的图像就像一个温度计灯泡。

有没有人看到过这样的奇怪行为并且可能知道发生了什么?

4

2 回答 2

2

你的观察是正确的,乔伊。StretchableImageWithLeftCapWidth 不会像您期望的那样扩展图像的整个中心。它只扩展了左盖右侧的像素列和顶盖下方的像素行!

改用 UIView 的 contentStretch 属性,你的问题就解决了。这样做的另一个优点是 contentStretch 也可以适当地缩小图形,而 stretchableImageWithLeftCapWidth 仅在使图形变大时才有效。

于 2010-08-13T15:41:39.723 回答
0

不确定我是否正确,但 LeftCapWidth 等是为圆角制作的,圆角半径内的矩形中的所有内容都被拉伸以适应目标按钮等上的“大写字母”之间的空间。

所以如果你的椭圆比 4 x 2 = 8 更高或更宽,那么中间矩形中的任何东西都会被拉伸。而你的是,所以它至少看起来有点难看!但如果它甚至不是对称的,那么某些东西会影响拉伸。可能与原点或框架有关,或者它何时设置,或者它设置了两次,或者您有两个不同的拉伸图像,它们相互叠加,使温度计看起来。

我曾经在同一个地方创建了两个相同的按钮,使用相同的保留对象——当然扔掉了前一个按钮。然后我想知道为什么当我将 alpha 设置为 0 时该按钮没有消失......但它确实消失了,只是它下面有一个“死”相同的按钮 :)

于 2010-06-16T13:27:57.040 回答