Ios 为什么要使用UIImageView';人的形象能超越自身吗?

Ios 为什么要使用UIImageView';人的形象能超越自身吗?,ios,objective-c,uiimageview,Ios,Objective C,Uiimageview,以前,我认为UIImageView的图像不能扩展到视图之外。然而,最近我在IOS8中读到了《编程》一书,书中说: 您还应该注意UIImageView的clipsToBounds属性;如果为false,则其图像(即使它比图像视图大,并且即使它没有被contentMode缩小)可以整体显示,扩展到图像视图本身之外 然后我做了一些简单的测试,这是真的 问题是:苹果用这个功能设计UIImageView的目的是什么?一、 就目前而言,我们无法找到它的优势。我认为这使得contentMode成为一个伪属性

以前,我认为UIImageView的图像不能扩展到视图之外。然而,最近我在IOS8中读到了《编程》一书,书中说:

您还应该注意UIImageView的clipsToBounds属性;如果为false,则其图像(即使它比图像视图大,并且即使它没有被contentMode缩小)可以整体显示,扩展到图像视图本身之外

然后我做了一些简单的测试,这是真的

问题是:苹果用这个功能设计
UIImageView
的目的是什么?一、 就目前而言,我们无法找到它的优势。我认为这使得
contentMode
成为一个伪属性

以下是一个例子:

它是一个refreshView,在
UITableView
中具有自定义的拖动以刷新上面的动画。我设置了一个与refreshView大小相同的
UIImageView
,并将其添加为背景视图。相关代码如下:

let imgView = UIImageView()
imgView.frame = self.bounds
imgView.image = UIImage(named: "refresh-view-bg.png")
imgView.contentMode = .ScaleAspectFill
imgView.clipsToBounds = true
self.addSubview(imgView)
它工作得很好:

但是,当我注释这一行时:

imgView.clipsToBounds = true
它变成这样:

图像扩展到UIImageView之外


ps:我在演示中没有使用自动布局

这是由于自动布局。UIImageView通过计算图像大小返回其-intrinsicContentSize。如果要避免设置宽度(或高度)约束,或者,如果您想在视图与周围其他视图一起布局时共享或不共享空间,则可以使用优先级。

这不是专门为
UIImageView
而做的,但对任何
UIView
都是如此。但是图像是一个属性,而不是子视图@a-live它并不重要,作为
UIView
的一个实例,
UIImageView
可以像任何其他
UIView
一样在其边界之外绘制内容,它也与自动布局没有直接关系,而是绘图实现的结果。但是当我没有给它布局约束时,只需设置UIImageView的框架。这个问题也会发生。因为如果您的项目启用了autolayout,autolayouf将处理所有视图,如果发现可能存在冲突的内容,则不关心您的框架。停止使用框架,使用自动布局越快越好。当您放置视图时,即使未设置约束,autolayout也会将自动调整大小的遮罩转换为约束。我认为,当您启用项目的autolayout时,如果不提供视图约束,系统将使用其帧数据。顺便说一下,我确实喜欢自动布局。但基本上,我认为问题与布局无关:)@Andrea@Carrl我很抱歉,但事实并非如此,这就是为什么您有一个名为setTranslatesAutoresizingMaskIntoConstraints的属性,您可以查看关于自动布局的第一个WWDC视频,他们解释得很清楚。也许这不是问题所在,但如果是你,我无论如何都会研究这个问题,并尝试使用xcode 6的新功能来调试视图,这样你将以3d方式完美地看到帧