底部边距出现在UITableViewCell的backgroundView(UIImageView)中

时间:2012-08-06 22:59:54

标签: ios5 uitableview uiimageview

我为原生iPhone应用程序设计了一个自定义的tableview(基于jQuery Mobile的设计)。 tableview被切成若干图像(标题,行等),可用作UITableView中的背景图像。我在UIImageView中使用此图片,该图片成为我的自定义backgroundView的{​​{1}}。不知何故,某些设备上会出现下边距。

为了方便起见,我不使用iOS的tableview标题。 tableview中的所有内容都是tableview单元格,包括(假)标题。每个单元格的高度与背景图像的高度相匹配。所有视图都是以编程方式设置的,因此XIB文件中没有可能导致问题的隐藏内容。

我使用样式为UITableViewCell的{​​{1}}。为了防止显示常规分隔符,我在tableview控制器的UITableView方法中使用此代码:

UITableViewStylePlain

在我的自定义(子类)tableview单元格的viewDidLoad方法中,我应用这样的背景图像:

self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

这适用于iOS模拟器(iOS 5.0和5.1)以及我的iPhone和iPad(iOS 6)。但是,在我的客户端的iPhone(iOS 5.1.1)上,背景图像比tableview单元高2px。因此,可以看到水平线。

Problem (thumb)

点击查看完整图片

为了简化调试,我在init方法中为单元格及其背景视图添加了背景颜色,如下所示:

UIImage *backgroundImage = [UIImage imageNamed:@"Word.png"];
self.backgroundView = [[UIImageView alloc] initWithImage:backgroundImage];

对于常规细胞,我使用橙色和黄色,而对于标题细胞,我使用蓝色和绿色。如果查看图像,您会看到背景视图的高度等于单元格的高度。通过记录两个视图的layoutSubviewsself.backgroundView.backgroundColor = [UIColor orangeColor]; self.backgroundColor = [UIColor yellowColor]; 来确认这一点。

我不知道这里出了什么问题。所有UITableViewCell都与背景图像完全相同。所有图像都具有Retina frame变体,其大小正好是其两倍。

希望有人知道这里出了什么问题。如果您需要我尝试一下,请发表评论然后我会。此外,我将尝试找到安装了iOS 5.1.1的其他设备,以了解其中发生的情况。

1 个答案:

答案 0 :(得分:1)

快速谷歌搜索:

UIImageView一个像素

返回之前建议的Stackoverflow讨论

在构建设置中将“压缩PNG文件”设置为“否”

可能会解决这个问题:iOS 5.1 with Xcode 4.3.1: [UIColor colorWithPatternImage:] strange behavior only on device