我正在编写代码以使用自定义图像作为UIView
.
该应用程序仅以纵向运行。在 4" 视网膜屏幕之前,我使用固定大小的手绘 png 作为背景图像(card.png
如下)。我有这样的代码:
UIView* frontView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.bounds.size.width, self.bounds.size.height)];
frontView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
UIImage* cardImage = [UIImage imageNamed:@"card.png"];
UIImageView* im = [[UIImageView alloc] initWithImage:cardImage];
im.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleBottomMargin;
[frontView addSubview:im];
// frontView has a bunch of stuff added...
如您所料,当我在 iPhone 5 上运行此程序时,所有内容都可以动态调整大小和位置,除了手绘 png card.png
、. 所以该背景图像没有使用可用的完整高度......
那么(我认为)我想做的事情是这样的......
UIImage* cardImage = [[UIImage imageNamed:@"card_resizable.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(72, 0, 60, 0)];
我已重绘card.png
为card_resizable.png
- 它的高度为 140 像素,中间有一个 8 像素的块,我想平铺,所以顶部插图是 72 像素高,底部插图是 60 像素高。
下一步是什么?
我应该创建UIImageView
具有动态大小的frontView
?
如何制作可调整大小的图像,调整大小?
我尝试过的几件事......它们都没有导致平铺可调整大小的图像。
干杯,加文
更新:
我错误地设置了这些值的像素值,UIEdgeInsetsMake(72, 0, 60, 0)
这些值是基于@2x
图像的。当更改为UIEdgeInsetsMake(36, 0, 30, 0)
- 我得到正确的垂直调整大小。
正如迈克指出的那样,我需要将大小设置UIImageView
为父级,并正确设置为autoresizingMask
:
im.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
我知道UIImageView
正确地调整大小以填充其父视图- frontView
(我给它一个绿色背景,以便在 3.5" 屏幕和 4" 屏幕上进行目视检查。
可调整大小的图像cardImage
也在垂直平面上正确调整大小。