UIImage *aImage = [[UIImage imageNamed:@"Gray_Button.png"] stretchableImageWithLeftCapWidth:25 topCapHeight:0];
尝试制作“玻璃药丸按钮”。
如果图像更大,“拉伸”会做什么......而我试图在...上使用的按钮更小?
图像“拉伸”和“缩小”吗?
我问的原因是因为我的所有图像看起来都像“D”形。
左侧是方形的......右侧是圆形的。
D形告诉你我做错了什么? 太多......或太少......“leftCap设置”? 图像太大了?
答案 0 :(得分:54)
如果leftCapWidth
和topCapHeight
都非零,则可伸缩图像分为9个部分。
leftCapWidth
<----->
+--------------+ ^
| | | | |
| A | | B | | topCapHeight
|-----+·+------| v
|-----+·+------|
| C | | D |
| | | |
+--------------+
中心部分的大小总是1像素,这是拉伸的部分,例如:
leftCapWidth (constant!)
<----->
+------------------+ ^
| | | | |
| A | | B | | topCapHeight (constant!)
v |-----+ - - +------| v
| | . . |
| | . . |
^ |-----+ - - +------|
| C | | D |
| | | |
+------------------+
>-----<
stretched region
要创建“玻璃药丸按钮”,您应该将圆形边框填充到上面的区域A,B,C和D中,并将该药丸的半径提供到leftCapWidth
和{{1} }。
此外,可拉伸图像不可收缩。如果您尝试使用比要应用它的按钮(或其他任何东西)更大的可伸缩图像,它们可能会被错误地渲染(特别是在较旧的iOS上)。
答案 1 :(得分:3)
stretchableImageWithLeftCapWidth的行为与您的预期不符。我建议使用UIView的contentStretch属性来节省一些挫折感。
仅供参考,stretchchableImage的行为方式是:
contentStretch的行为与您期望的一样。该图形基本上分为9个部分,以Kenny解释的方式展开和收缩。
另外,不要忘记,无论何时拉伸视图,其contentMode都应设置为UIViewContentModeScaleToFill。