【问题标题】:resizableImageWithCapInsets issue in iOS7iOS 7 中带帽插入问题的可调整大小的图像
【发布时间】:2013-09-25 13:00:23
【问题描述】:

我正在关注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 中的行为却很奇怪。 和

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

【问题讨论】:

  • 我在 github 上阅读了该页面,我知道这是一个苹果错误。
  • 有什么需要解决的吗?
  • 是的,您可以通过确保 CGRect 全部均匀并且表格视图单元格具有均匀高度来解决此问题。看我的回答。

标签: iphone ios objective-c uiimage ios7


【解决方案1】:

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

【讨论】:

  • 你可以看到,我已经在使用整数UIEdgeInsetsMake(15.0f,20.0f, 15.0f, 20.0f)。但还是有白线。
  • 圆数应该用于您正在绘制的 cgrectarea
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    我可以确认两个答案都是正确的,但是由于您使用的框架与我相同,因此我将为您提供帮助。

    只需设置气泡的大小即可。

    - (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 已经是您仅在它是一个传出气泡时才需要它。和平

    【讨论】:

    • 当然,我会检查这个。谢谢
    猜你喜欢
    • 2014-04-14
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    • 1970-01-01
    • 2010-12-04
    • 2015-11-07
    相关资源
    最近更新 更多