2

我正在关注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];
}

在这里,我附上了 2 个快照ios6ios7其中描述了气泡视图在 ios7 中的行为如何,尽管代码相同。 ios6气泡ios7气泡

有人也有同样的问题并在GITHUB HERE
中报告了 我查看了很多代码,似乎resizableImageWithCapInsets在 ios7 中存在问题。它会生成我们在方法中设置的边框UIEdgeInsetsMake
任何人都有想法或解决方案从气泡视图中删除边框并与 ios6 气泡视图相同?
任何帮助都是不言而喻的。提前致谢。

4

3 回答 3

4

当宽度或高度为浮点数时,iOS 7 中会添加透明线。作为一种解决方法,您可以四舍五入此数字

于 2013-10-02T04:02:29.743 回答
3

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

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

于 2013-10-17T12:47:21.567 回答
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 已经是你只需要在它是一个传出气泡时才需要它。和平

于 2013-10-18T08:51:31.320 回答