【问题标题】:Bottom margin appears within backgroundView (UIImageView) of UITableViewCell底部边距出现在 UITableViewCell 的 backgroundView (UIImageView) 中
【发布时间】:2012-08-06 22:59:53
【问题描述】:

我为原生 iPhone 应用程序设计了一个自定义表格视图(基于 jQuery Mobile 的设计)。表格视图被分割成几个图像(标题、行等),可用作UITableView 中的背景图像。我在UIImageView 中使用此图像,它成为我自定义UITableViewCellbackgroundView。在某些设备上不知何故出现了底部边距。

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

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

self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

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

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];

对于常规单元格,我使用橙色和黄色,对于标题单元格,我使用蓝色和绿色。如果您查看图像,您会发现背景视图的高度等于单元格的高度。这可以通过记录两个视图的framebounds 来确认。

我不知道这里出了什么问题。所有 UITableViewCells 的大小与背景图像完全相同。所有图像都有 Retina @2x 变体,恰好大两倍。

希望有人知道这里出了什么问题。如果你需要我尝试一些东西,请发表评论,我会的。此外,我会尝试寻找其他一些安装了 iOS 5.1.1 的设备,看看那里会发生什么。

【问题讨论】:

    标签: ios5 uitableview uiimageview


    【解决方案1】:

    谷歌快速搜索:

    UIImageView 一像素

    返回先前的 Stackoverflow 讨论,建议

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

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

    【讨论】:

    • 这就是解决方案。非常感谢你! (顺便说一句,很奇怪:禁用压缩会使应用程序变小 40KB。这是一种糟糕的压缩算法。)
    猜你喜欢
    • 2017-05-15
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    • 2018-04-16
    • 2011-09-24
    相关资源
    最近更新 更多