iPad仅在设备上扭曲UIImageView

时间:2011-12-25 07:40:04

标签: ios xcode ipad uiimageview uiimage

我有一个1024像素宽,120像素高的.png图像,意图跨越iPad屏幕的底部(横向模式)。enter image description here

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

如果输出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>>

2 个答案:

答案 0 :(得分:2)

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

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

如果要将图形显示为原始图形,则必须自己绘制并禁用抗锯齿。或者可以通过添加CALayer作为子图层,并将contents属性设置为图像。

答案 1 :(得分:0)

我仍然不知道造成失真的原因是什么,但是如果我将图像尺寸从1024x120调整到1023x120,我就不会出现任何失真,右边只有1px的差距。