图像拉伸只有一部分

时间:2015-11-27 06:07:29

标签: ios objective-c iphone

我想图像拉伸图像的某些部分。正好在图像的切口下方。但是当文字增加时它会拉伸整个图像。但我希望在此之后展开图像。link

balloonView.image =[[UIImage imageNamed:@"chatbg.png"] stretchableImageWithLeftCapWidth:50 topCapHeight:0];;

请检查http://postimg.org/image/7d7lzu9n1/f99d1ebd/

2 个答案:

答案 0 :(得分:0)

一般性讨论:为了在Android中的UIImage iOS中创建可伸缩9Patches,您可以使用此功能:

UIImage * backgroundImg = [UIImage imageNamed:@"bg.png"];
backgroundImg = [backgroundImg resizableImageWithCapInsets:UIEdgeInsetsMake(2,2, 2, 2)];
[imgView setImage:cellBackgroundImg];

你也可以使用:

- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth
                                 topCapHeight:(NSInteger)topCapHeight
  

基本上图像没有在左边缘和右边缘的leftCapWidth像素区域和顶部和底部的topCapHeight像素中拉伸。缩放图像时,这些限制区域内的区域会受到拉伸。

OP的问题:我认为为什么你无法让它发挥作用是因为你的topCapHeight设置为0。尝试这样的事情:

[[UIImage imageNamed:@"chatbg.png"] stretchableImageWithLeftCapWidth:50 
                                                        topCapHeight:50];

答案 1 :(得分:0)

如果leftCapWidth和topCapHeight都非零,则可伸缩图像分为9个部分。

 leftCapWidth
  <----->
  +--------------+ ^
  |     | |      | |
  |  A  | |  B   | | topCapHeight
  |-----+·+------| v
  |-----+·+------|
  |  C  | |  D   |
  |     | |      |
  +--------------+

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

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

只需使用此代码即可。如果您对左侧箭头仍有任何问题,请将LeftCapWidth的值更改为5,10,20,然后进行检查。

balloonView.image =[[UIImage imageNamed:@"chatbg.png"] stretchableImageWithLeftCapWidth:10 topCapHeight:20];

希望,这是你正在寻找的。任何关注都会回复给我。