我正在尝试使用带有stretchableImageWithLeftCapWidth的UIImage来设置我的UIImageView中的图像,但遇到了一个奇怪的缩放错误。基本上将我的图像描绘成31像素宽的椭圆。左和右15个像素是大写字母,中间单个像素是缩放部分。
如果我将左帽设置为15,这样可以正常工作。但是,如果我将它设置为,例如,4。我希望得到一个“中心”部分,因为它跨越中心而有点弯曲有点紧张。
我得到的是左帽看似正确,后面是一个长的中间部分,好像我在像素5处缩放了单个像素,然后是图像右侧的一部分,它在那里扩展并关闭了一个宽度两倍于原始图像的宽度。生成的图像就像一个温度计灯泡。
有没有人看到这样的奇怪行为,可能知道发生了什么?
答案 0 :(得分:2)
你的观察是正确的,乔伊。 StretchableImageWithLeftCapWidth不会像您期望的那样扩展图像的整个中心。它只会扩展左上角右侧的像素列和顶盖下方的像素行!
使用UIView的contentStretch属性,您的问题将得到解决。另一个优点是contentStretch也可以正确缩小图形,而stretchchableImageWithLeftCapWidth只在使图形变大时才有效。
答案 1 :(得分:0)
不确定我是否正确,但是LeftCapWidth等是针对圆角设置的,圆角内的矩形内的所有内容都被拉伸以适应目标按钮上“帽子”之间的空间等。
因此,如果您的椭圆形比4 x 2 = 8更高或更宽,则中间矩形中的任何内容都将被拉伸。你的是,所以它至少看起来有点难看!但如果它甚至不对称,那么某些因素会影响这种延伸。也许与原点或框架有关,或者当它被设置,或者它可能被设置两次,或者你有两个不同的拉伸图像在彼此的顶部给温度计外观。
我曾经在同一个地方创建了两个相同的按钮,使用相同的保留对象 - 当然扔掉了前一个按钮。然后我想知道为什么当我将alpha设置为0时按钮没有消失......但它确实如此,它只是在它下面有一个“死”的相同按钮:)