Interface Builder中的“Mode”属性是什么,提供“Scale to fill”,“Aspect fit”等?

时间:2011-01-26 12:38:54

标签: cocoa-touch interface-builder

我想知道下载“模式”的内容是什么?它包含“缩放以填充”,“纵横适合”等。到目前为止,我从来没有改变它,但我仍然很好奇它可以用于什么。有人可以解释一下吗?

3 个答案:

答案 0 :(得分:56)

视图的content mode property告诉我们应如何布置其内容。在Interface Builder中,可以在Attributes Inspector中选择各种模式。

enter image description here

让我们使用两个图像视图来查看各种模式的工作原理。

enter image description here

缩放到填充

enter image description here

图像高度和宽度被拉伸以匹配UIImageView的大小。

Aspect Fit

enter image description here

图像的最长边(高度或宽度)被拉伸以匹配视图。这使得图像尽可能大,同时仍然显示整个图像而不会扭曲高度或宽度。 (我将UIImageView背景设置为蓝色,以便其大小清晰。)

Aspect Fill

enter image description here

图像的最短边(高度或宽度)被拉伸以匹配视图。与“Aspect Fit”类似,图像的比例不会与原始宽高比失真。

重绘

enter image description here

重绘仅适用于需要进行自定义缩放和调整大小的自定义视图。我们没有使用自定义视图,因此我们不应该使用Redraw。请注意,这里UIImageView只给出了与Scale to Fill相同的结果,但它在幕后做了更多的工作。

关于Redraw,documentation说:

  

内容模式适用于回收视图内容,但如果您希望自定义视图在缩放和调整大小操作期间自行重绘,则还可以将内容模式设置为UIViewContentModeRedraw值。将视图的内容模式设置为此值会强制系统调用视图的drawRect:方法以响应几何体更改。通常,您应尽可能避免使用此值,并且当然不应将其与标准系统视图一起使用。

中心

enter image description here

图像在视图中居中,但图像的长度和宽度未拉伸。

enter image description here

图像的上边缘在视图顶部水平居中,图像的长度和宽度未拉伸。

enter image description here

图像的下边缘在视图底部水平居中,图像的长度和宽度未拉伸。

enter image description here

图像的左边缘垂直居中于视图的左侧,图像的长度和宽度未被拉伸。

enter image description here

图像的右边缘垂直居中于视图的右侧,图像的长度和宽度不会拉伸。

左上角

enter image description here

图像的左上角位于视图的左上角。图像的长度和宽度不会拉伸。

右上角

enter image description here

图像的右上角位于视图的右上角。图像的长度和宽度不会拉伸。

左下角

enter image description here

图像的左下角位于视图的左下角。图像的长度和宽度不会拉伸。

右下角

enter image description here

图像的右下角位于视图的右下角。图像的长度和宽度不会拉伸。

注释

  • 如果内容(在我们的例子中是图片)与视图大小相同(在我们的例子中是UIImageView),那么更改内容模式将没有明显的区别。

  • 有关UIImageView以外的观看内容模式的讨论,请参阅thisthis问题。

  • 在Swift中,要设置为以编程方式设置内容模式,请执行以下操作:

    imageView.contentMode = UIViewContentMode.ScaleToFill
    imageView.contentMode = UIViewContentMode.ScaleAspectFit
    imageView.contentMode = UIViewContentMode.ScaleAspectFill
    imageView.contentMode = UIViewContentMode.Redraw
    imageView.contentMode = UIViewContentMode.Center
    imageView.contentMode = UIViewContentMode.Top
    imageView.contentMode = UIViewContentMode.Bottom
    imageView.contentMode = UIViewContentMode.Left
    imageView.contentMode = UIViewContentMode.Right
    imageView.contentMode = UIViewContentMode.TopLeft
    imageView.contentMode = UIViewContentMode.TopRight
    imageView.contentMode = UIViewContentMode.BottomLeft
    imageView.contentMode = UIViewContentMode.BottomRight
    

答案 1 :(得分:26)

View Programming Guide详细介绍了您的要求。如果向下滚动到“内容模式”部分,您就会找到所需内容。

基本上是根据Apple的说法:

  

“每个视图都有一个内容模式,用于控制视图如何回放其内容以响应视图几何中的更改[...] contentMode属性中的值确定是否应缩放位图以适应新边界或只需固定在视角的一个角落或边缘。“

答案 2 :(得分:5)