Iphone 当用于UIImageView/UIView时,如何调整使用ResizebleMageWithCapInsets创建的UIImage的大小
我正在编写代码,以使用自定义图像作为Iphone 当用于UIImageView/UIView时,如何调整使用ResizebleMageWithCapInsets创建的UIImage的大小,iphone,ios,uiview,uiimageview,uiimage,Iphone,Ios,Uiview,Uiimageview,Uiimage,我正在编写代码,以使用自定义图像作为UIView的背景 该应用程序仅在纵向模式下运行。在使用4英寸视网膜屏幕之前,我使用固定大小的手绘png作为背景图像(card.png) UIView* frontView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.bounds.size.width, self.bounds.size.height)]; frontView.autoresizingMask = UIViewAutoresizi
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)];
我重画了<代码>卡。PNG < /代码>作为代码> CordyResiZabel.PNG < /C> >它的高度是140像素,中间有8像素块,我想要瓦片,所以顶部插图是72像素高,底部插图是60像素高。
下一步是什么 我是否应该创建动态大小为frontView
的UIImageView
如何制作可调整大小的图像,调整大小
我尝试过的几件事……没有一件能使可调整大小的图像平铺
干杯,
加文
更新:
我错误地设置了UIEdgeInsetsMake(72,0,60,0)
这些值基于@2x
图像。当更改为UIEdgeInsetsMake(36,0,30,0)
时,我得到了正确的垂直大小调整
正如Mike指出的,我需要将UIImageView
的大小设置为父级,并正确设置它的autoresizingMask
:
im.autoresizingMask=UIViewAutoresizingFlexibleWidth | uiviewautoresizingflexiblewhight;
我知道,UIImageView
的大小是动态的,正确的,以填充其父视图-frontView
(我给了它一个绿色背景,以便在3.5英寸屏幕和4英寸屏幕上进行视觉检查
可调整大小的图像,
cardImage
,也在垂直面上正确调整大小。查看UIView contentMode属性。它应该让您了解UIImageView在更改图像大小时如何在内部呈现图像。查看UIView contentMode属性。它应该让您了解当UIImageView改变图像的大小时,它会在内部渲染图像。一旦将可拉伸图像传递给UIImageView
后,您只需将该图像视图调整到所需的高度即可
在您的情况下,您可能希望通过执行以下操作使图像视图填充其父视图:
im.frame = frontView.bounds;
im.autoresizingMask =
UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[frontView addSubview:im];
我们让
im
填充frontView
,并告诉它在其父对象(frontView
)更改大小时自动增加其宽度/高度。这应该可以满足您的需要。一旦您将可拉伸图像传递给UIImageView
后,您只需将该图像视图调整到所需的高度即可
在您的情况下,您可能希望通过执行以下操作使图像视图填充其父视图:
im.frame = frontView.bounds;
im.autoresizingMask =
UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[frontView addSubview:im];
我们让
im
填充frontView
,并告诉它在其父对象(frontView
)改变大小时自动增加其宽度/高度。这应该可以满足您的需要。您可以尝试使用stretchableImage吗
UIImage *image = [UIImage imageNamed:@"card_resizable.png"];
UIImage* cardImage = [image stretchableImageWithLeftCapWidth:0.0f
topCapHeight:70.0f];
你能试着用StretchableMage吗
UIImage *image = [UIImage imageNamed:@"card_resizable.png"];
UIImage* cardImage = [image stretchableImageWithLeftCapWidth:0.0f
topCapHeight:70.0f];
嘿,谢谢,我试过用LeftCapWidth伸缩图像,但这不是我需要的。
用CapInsets伸缩图像是正确的;我犯了其他错误。干杯。@GavinHope听到这个消息很高兴:)嘿,谢谢,我尝试了用LeftCapWidth伸缩图像
-但这不是我所需要的。用CapInsets伸缩图像
是正确的;我还犯了其他错误。干杯。@GavinHope听到这个消息很高兴:)嗨,迈克,谢谢你指出了一些事情:设置边界和自动调整大小的掩码。我已经尝试过设置边界,但是失败了使用一个调整大小的掩码…但是错误的调整大小掩码,我需要UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight
,正如你所指出的。事实上,真正的问题是我的cap插图…72和60的值是基于@2x
图像的(你们不知道这一点)…当我将其放入1x空间时,我得到了所需的垂直调整大小(使用正确的autoresizingMask
。嗨,迈克,谢谢你指出了这些问题:设置边界和自动调整大小掩码。我曾尝试设置边界并使用了一个调整大小掩码…但是调整大小掩码错误,我需要UIViewAutoresizingFlexibleWidth | uiviewautoresizingflexiblewhight
,正如你所说的那样特德出来了。事实上,真正的问题是我的帽子插图…72和60的值是基于@2x
图像的(你们不可能知道)…当我把它们放在1x空间时,我得到了所需的垂直调整大小(正确的自动调整大小任务
)。