(自动调整大小掩码) 固定高度的图像宽度可以灵活调整

12

我一直在使用代码而非IB来构建iPhone界面。

现在我遇到了以下问题:

如何设置图像的宽度基于它所在的主视图并让其两侧有50像素的边距。(它还应该适用于旋转,所以宽度应该是灵活的)。

我已经尝试过例如frame.size.width - 50等设置大小,但屏幕旋转时这种方法不起作用。另一件我尝试过的事情是使用自动调整大小掩码,但我并没有完全理解它的工作原理。

一个图片是否仍然需要设置一个框架或者它完全被自动调整大小掩码所覆盖?如果被覆盖了,那么如何给图像一个固定高度和灵活的宽度?

我使用的书(《高级iOS4编程》)在这个问题上不太清楚,而我在网上找到的大多数示例都是针对界面构建器的。

谢谢您的时间。

此致敬礼, Jasper

2个回答

50

水平方向:

  • 保持左右固定边距进行调整大小:UIViewAutoresizingFlexibleWidth
  • 保持大小和距离左侧的距离不变:UIViewAutoresizingFlexibleRightMargin
  • 保持大小并居中:UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin
  • 保持大小和距离右侧的距离不变:UIViewAutoresizingFlexibleLeftMargin

垂直方向:

  • 保持上下固定边距进行调整大小:UIViewAutoresizingFlexibleHeight
  • 保持大小和距离顶部的距离不变:UIViewAutoresizingFlexibleBottomMargin
  • 保持大小并居中:UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin
  • 保持大小和距离底部的距离不变:UIViewAutoresizingFlexibleTopMargin

将第一部分中的一个选项与第二部分中的一个选项组合使用 |。例如,要在水平方向上调整大小并在垂直方向上保持相同的大小和距离顶部的距离,可以使用 UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin

您还可以使用其他组合来完成更复杂的操作,但这些是基础知识。


所以基本上我现在的看法是..你为某个对象设置框架。然后在屏幕旋转时指定这些值,以便它知道如何响应。 - Jasper
是的,或者在父视图因任何其他原因而改变大小时。例如,“通话状态栏”可能会出现,导致顶级UINavigationController调整其内容区域的大小,或者您可以出于自己的原因更改父视图的frame - Anomie

0

你可能想要这个:

[myImageView setAutoresizingMask:UIViewAutoresizingFlexibleWidth];

这将保持边距不变并调整宽度。


这是我尝试做的,但如果我想要固定高度,那么我该如何设置这个图像的高度呢? - Jasper
如果您不将高度设置为可伸缩的,那么高度就不会改变。 - Jeff Kelley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接