iPhone stretchchableImageWithLeftCapWidth只生成"D"

Sus*_*nna 9 iphone sdk stretch uibutton uiimage

UIImage *aImage = [[UIImage imageNamed:@"Gray_Button.png"] stretchableImageWithLeftCapWidth:25 topCapHeight:0];
Run Code Online (Sandbox Code Playgroud)

试图制作一个"玻璃药丸按钮".

如果图像更大,"拉伸"会做什么......而我试图在...上使用的按钮更小?

图像"拉伸"和"缩小"吗?

我问的原因是因为我的所有图像看起来都像"D"形.

左侧是方形的......右侧是圆形的.

D形告诉你我做错了什么?太多......或太少......"leftCap设置"?图像太大了?

ken*_*ytm 54

一种伸缩性图像被划分成9个部分,如果两个leftCapWidthtopCapHeight为非零.

     leftCapWidth
      <----->
      +--------------+ ^
      |     | |      | |
      |  A  | |  B   | | topCapHeight
      |-----+·+------| v
      |-----+·+------|
      |  C  | |  D   |
      |     | |      |
      +--------------+
Run Code Online (Sandbox Code Playgroud)

中心部分的大小总是1像素,这是拉伸的部分,例如:

     leftCapWidth (constant!)
      <----->
      +------------------+ ^
      |     |     |      | |
      |  A  |     |  B   | | topCapHeight (constant!)
    v |-----+ - - +------| v
    | |     .     .      |
    | |     .     .      |
    ^ |-----+ - - +------|
      |  C  |     |  D   |
      |     |     |      |
      +------------------+
            >-----<
        stretched region
Run Code Online (Sandbox Code Playgroud)

要创建"玻璃药丸按钮",您应该将圆形边框填充到上面的区域A,B,C和D中,并将该药丸的半径提供到leftCapWidthtopCapHeight.


而且,可伸缩图像不可收缩.如果您尝试使用比要应用它的按钮(或其他任何)更大的可伸缩图像,它们可能会被错误地呈现(尤其是在较旧的iOS上).