我为原生 iPhone 应用程序设计了一个自定义的 tableview(基于 jQuery Mobile 的设计)。tableview 被分割成几个图像(标题、行等),可用作UITableView
. UIImageView
我在一个成为backgroundView
我自定义的图像中使用这个图像UITableViewCell
。不知何故,底部边距出现在某些设备上。
为了方便起见,我不使用 iOS 的 tableview 标题。表格视图中的所有内容都是表格视图单元格,包括(假)标题。每个单元格的高度与背景图像的高度相匹配。所有视图都以编程方式设置,因此 XIB 文件中没有可能导致问题的隐藏内容。
我使用UITableView
with 风格UITableViewStylePlain
。为了防止显示常规分隔符,我在 tableview 控制器的viewDidLoad
方法中使用此代码:
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
在init
我的自定义(子类)tableview 单元格的方法中,我像这样应用背景图像:
UIImage *backgroundImage = [UIImage imageNamed:@"Word.png"];
self.backgroundView = [[UIImageView alloc] initWithImage:backgroundImage];
这在 iOS 模拟器(iOS 5.0 和 5.1)和我的 iPhone 和 iPad(iOS 6)上完美运行。但是,在我的客户端的 iPhone (iOS 5.1.1) 上,背景图像比 tableview 单元格低 2px。因此,可以看到一条水平线。
点击查看完整图片
为了使调试更容易,我在这样的方法中为单元格及其背景视图添加了背景颜色layoutSubviews
:
self.backgroundView.backgroundColor = [UIColor orangeColor];
self.backgroundColor = [UIColor yellowColor];
对于常规单元格,我使用橙色和黄色,对于标题单元格,我使用蓝色和绿色。如果您查看图像,您会发现背景视图的高度等于单元格的高度。这通过记录两个视图的frame
和来确认。bounds
我不知道这里出了什么问题。所有 UITableViewCells 的大小与背景图像完全相同。@2x
所有图像都具有正好两倍大的Retina变体。
希望有人知道这里出了什么问题。如果你需要我尝试一些东西,请发表评论,我会的。此外,我将尝试查找安装了 iOS 5.1.1 的其他一些设备,看看那里会发生什么。