【发布时间】:2015-03-02 18:57:43
【问题描述】:
以前,我认为 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:我在这个演示中没有使用 autoLayout
【问题讨论】:
-
不是专门为
UIImageView做的,但对任何UIView都是如此。 -
但是图像是属性而不是子视图@A-Live
-
没关系,作为
UIView和UIImageView的实例可以像任何其他UIView一样在其边界之外绘制内容,它也与自动布局没有直接关系,而是绘图实现的结果。
标签: ios objective-c uiimageview