【问题标题】:iPad distorting UIImageView on device onlyiPad 仅在设备上扭曲 UIImageView
【发布时间】:2012-01-27 13:26:28
【问题描述】:

我有一个 1024 像素宽和 120 像素高的 .png 图像,旨在跨越 iPad 屏幕的底部(在横向模式下)。。

我故意让图像视图的大小与图像分辨率相同,因此不执行大小调整,并且图像像素和屏幕像素之间的比例为 1:1。在 100% 缩放的 iPad 模拟器上,png 看起来完全一样,因为它应该。当我在我的 iPad 1 上测试它时,图像变得扭曲,就像 iOS 试图重新采样图像一样。下面是从设备截取的截图。

如果我输出 UIImageView 边界,我会得到预期的宽度和高度。关于为什么会发生这种情况以及为什么模拟器上没有出现失真的任何想法?

编辑:用于插入 ImageView 的代码:

tile = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"tile.png"]];
[tile setFrame:CGRectMake(0, 648, tile.bounds.size.width, tile.bounds.size.height)];
[self.view addSubview:tile];

我使用 IB 和编程得到了相同的结果。

编辑:po [[(id)UIApp keyWindow] recursiveDescription] 的输出

<UIWindow: 0x13f200; frame = (0 0; 768 1024); layer = <UIWindowLayer: 0x127df0>>
| <UIView: 0x14fd40; frame = (0 0; 768 1024); transform = [0, -1, 1, 0, 0, 0]; autoresize = W+H; autoresizesSubviews = NO; layer = <CALayer: 0x14ffe0>>
|    | <UIImageView: 0x14f900; frame = (0 648; 1024 120); autoresize = RM+BM; userInteractionEnabled = NO; layer = <CALayer: 0x14f940>>
|    | <UIImageView: 0x14e210; frame = (125 666; 774 102); autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0x14daa0>>

【问题讨论】:

  • 为了看清楚失真,最好直接去链接的图片:png,iPad screen capture
  • 能否展示放置图片的代码
  • 在 gdb 中暂停应用并粘贴此命令的输出:po [[(id)UIApp keyWindow] recursiveDescription]
  • 目前我是用IB添加的,但是我添加了之前的代码...
  • @robmayoff 我添加了那个输出。

标签: ios xcode ipad uiimageview uiimage


【解决方案1】:

我仍然不知道是什么导致了失真,但是如果我将图像尺寸从 1024x120 修剪到 1023x120,我没有得到任何失真,右侧只有轻微的 1px 间隙。

【讨论】:

  • 我会再等一天左右,然后再将其标记为正确答案,以防有人确切知道这里发生了什么。
【解决方案2】:

AFAIK UIImageView 只是绘制图像,并且与 CoreGraphics 中的所有绘制方法一样,坐标不是像素索引,而是围绕其绘制每个点的点。如果你画一条水平线,那么它的一半被添加到上面的像素中,一半被添加到下面的像素中。

您仅在示例中看到这一点,因为您正在尝试使用具有如此精细功能的这种模式,因此抗锯齿具有您描述的效果。

如果您想显示真实的原始图形,那么您必须自己绘制并禁用抗锯齿。或者可能通过添加一个 CALayer 作为子层,并将内容属性设置为图像。

【讨论】:

  • 我认为可能是这种情况,但我使用了类似的“详细”图像,但没有显示出这种效果。为了测试它,我取了上面图片的一大块(大约 1/3)并显示它,结果很好。我在想,对于超过一定尺寸的图像,可能在幕后进行了一些图像压缩?
猜你喜欢
  • 2017-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多