我想知道下载“模式”的内容是什么?它包含“缩放以填充”,“纵横适合”等。到目前为止,我从来没有改变它,但我仍然很好奇它可以用于什么。有人可以解释一下吗?
答案 0 :(得分:56)
视图的content mode property告诉我们应如何布置其内容。在Interface Builder中,可以在Attributes Inspector中选择各种模式。
让我们使用两个图像视图来查看各种模式的工作原理。
图像高度和宽度被拉伸以匹配UIImageView
的大小。
图像的最长边(高度或宽度)被拉伸以匹配视图。这使得图像尽可能大,同时仍然显示整个图像而不会扭曲高度或宽度。 (我将UIImageView
背景设置为蓝色,以便其大小清晰。)
图像的最短边(高度或宽度)被拉伸以匹配视图。与“Aspect Fit”类似,图像的比例不会与原始宽高比失真。
重绘仅适用于需要进行自定义缩放和调整大小的自定义视图。我们没有使用自定义视图,因此我们不应该使用Redraw。请注意,这里UIImageView
只给出了与Scale to Fill相同的结果,但它在幕后做了更多的工作。
关于Redraw,documentation说:
内容模式适用于回收视图内容,但如果您希望自定义视图在缩放和调整大小操作期间自行重绘,则还可以将内容模式设置为
UIViewContentModeRedraw
值。将视图的内容模式设置为此值会强制系统调用视图的drawRect:
方法以响应几何体更改。通常,您应尽可能避免使用此值,并且当然不应将其与标准系统视图一起使用。
图像在视图中居中,但图像的长度和宽度未拉伸。
图像的上边缘在视图顶部水平居中,图像的长度和宽度未拉伸。
图像的下边缘在视图底部水平居中,图像的长度和宽度未拉伸。
图像的左边缘垂直居中于视图的左侧,图像的长度和宽度未被拉伸。
图像的右边缘垂直居中于视图的右侧,图像的长度和宽度不会拉伸。
图像的左上角位于视图的左上角。图像的长度和宽度不会拉伸。
图像的右上角位于视图的右上角。图像的长度和宽度不会拉伸。
图像的左下角位于视图的左下角。图像的长度和宽度不会拉伸。
图像的右下角位于视图的右下角。图像的长度和宽度不会拉伸。
如果内容(在我们的例子中是图片)与视图大小相同(在我们的例子中是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
答案 1 :(得分:26)
View Programming Guide详细介绍了您的要求。如果向下滚动到“内容模式”部分,您就会找到所需内容。
基本上是根据Apple的说法:
“每个视图都有一个内容模式,用于控制视图如何回放其内容以响应视图几何中的更改[...] contentMode属性中的值确定是否应缩放位图以适应新边界或只需固定在视角的一个角落或边缘。“
答案 2 :(得分:5)