界面生成器中的“模式”属性是什么,它提供了“填充比例”,“方面适合”等?

我想知道下拉“模式”是关于什么? 它包含“填表”,“看点适合”等。 我从来没有改变它,但我很好奇它可以用于什么。 有人可以解释吗?

视图编程指南详细介绍了你在问什么。 如果您向下滚动到名为“ Content Modes ”的部分,您可以find您要查找的内容。

基本上根据苹果:

“每个视图都有一个内容模式,用于控制视图如何回应其内容,以响应视图几何体的变化。contentMode属性中的值决定位图是否缩放以适合新的边界或者简单地固定视图的一个angular落或边缘“。

视图的内容模式属性说明应该如何布置其内容。 在Interface Builder中,可以在属性检查器中select各种模式。

在这里输入图像说明

让我们使用两个图像视图来看看各种模式如何工作。

在这里输入图像说明

按比例填充

在这里输入图像说明

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

Aspect Fit

在这里输入图像说明

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

方面填充

在这里输入图像说明

图像的最短边(高度或宽度)被拉伸以匹配视图。 就像“Aspect Fit”一样,图像的比例也不会与原始的高宽比扭曲。

重绘

在这里输入图像说明

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

关于重绘, 文档说:

内容模式对回收视图的内容非常UIViewContentModeRedraw ,但是当您特别希望自定义视图在缩放和resize操作期间重新绘制自己的内容时,您还可以将内容模式设置为UIViewContentModeRedraw值。 将视图的内容模式设置为该值会迫使系统调用视图的drawRect:方法来响应几何变化。 一般来说,你应该尽可能的避免使用这个值,你一定不要在标准系统视图中使用它。

中央

在这里输入图像说明

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

最佳

在这里输入图像说明

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

底部

在这里输入图像说明

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

剩下

在这里输入图像说明

图像的左边缘在视图的左边垂直居中,并且图像的长度和宽度不被拉伸。

在这里输入图像说明

图像的右边缘在视图的右边垂直居中,并且图像的长度和宽度不被拉伸。

左上方

在这里输入图像说明

图像的左上angular放置在视图的左上angular。 图像的长度和宽度不被拉伸。

右上

在这里输入图像说明

图像的右上angular放置在视图的右上angular。 图像的长度和宽度不被拉伸。

左下方

在这里输入图像说明

图像的左下angular放置在视图的左下angular。 图像的长度和宽度不被拉伸。

底部右侧

在这里输入图像说明

图像的右下angular放置在视图的右下angular。 图像的长度和宽度不被拉伸。

笔记

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

  • 查看这个和这个问题,讨论关于UIImageView以外的视图的内容模式。

  • 在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