iOS7中的resizableImageWithCapInsets问题

时间:2013-09-25 13:00:24

标签: iphone ios objective-c uiimage ios7

我正在关注MessagesTableViewController,并且根据文字大小,有用于泡泡视图的UIImage的淀粉方法。它适用于较旧的ios版本,但在ios7中,它显示浅色边框,因为我们设置UIEdgeInsetsMake如下所示。

+ (UIImage *)bubbleDefaultIncoming
{
  return [[UIImage imageNamed:@"bg-chat-white.png"] makeStretchableDefaultIncoming];
}

- (UIImage *)makeStretchableDefaultIncoming
{

  return [self resizableImageWithCapInsets:UIEdgeInsetsMake(15.0f,20.0f, 15.0f, 20.0f)
                            resizingMode:UIImageResizingModeStretch];
}

这里我附上了ios6ios7的2个快照,它描述了气泡视图在ios7中的表现如何,虽然代码相同。 ios6 bubbleios7 bubble

有人也有同样的问题并在GITHUB HERE中报道了 我对代码进行了如此多的审核,似乎ios7中存在resizableImageWithCapInsets的问题。它在我们在方法中设置UIEdgeInsetsMake时生成边框。
任何人都有想法或解决方案从气泡视图中删除边框并使其与ios6气泡视图相同?
任何帮助都会很明显。提前致谢。

3 个答案:

答案 0 :(得分:4)

当宽度或高度为具有浮点数的数字时,iOS 7中会添加透明线条。作为解决方法,您可以对此数字进行舍入

答案 1 :(得分:3)

您需要确保绘制图像的CGRect是偶数而不是带浮点的数字。

除此之外,如果您有一个具有不同高度的TabViewCells的UITableView,您还需要确保这些单元格的高度均为偶数而不是浮点数。

答案 2 :(得分:1)

我可以确认这两个答案都是对的,但由于你使用的是与我相同的框架,我会给你一个片段来帮助你。

只是地板或泡沫的大小,你很高兴。

- (CGRect)bubbleFrame
{
    CGSize bubbleSize = [JSBubbleView bubbleSizeForText:self.text];
    return CGRectMake((self.type == JSBubbleMessageTypeOutgoing ? floor(self.frame.size.width - bubbleSize.width) : 0),
                  kMarginTop,
                  floor(bubbleSize.width),
                  floor(bubbleSize.height));
}

编辑:位置也需要向上或向下舍入,因为kMarginTop已经是你只需要它就是一个传出的气泡。和平