为啥我放置在滚动视图中的图像视图高度扭曲?
Posted
技术标签:
【中文标题】为啥我放置在滚动视图中的图像视图高度扭曲?【英文标题】:Why do my image views placed inside a scroll view have distorted heights?为什么我放置在滚动视图中的图像视图高度扭曲? 【发布时间】:2015-06-05 20:35:20 【问题描述】:我有一个UIImageViews
数组,每个都有不同的图像和一个将它们放在UIScrollView
中的函数,因此它们可以像幻灯片一样自动滚动。我的滚动视图高度为 150 像素,图像为 400x150 PDF。
由于某些奇怪的原因,在 iPhone 5 模拟器上,我的图像垂直扭曲,而在 iPhone 6 和 6 Plus 上却完全正常。有没有人知道为什么会发生这种情况?
这是我的代码:
var pageViews: [UIImageView] = []
@IBOutlet weak var carousel: UIScrollView!
func showPage()
//Sets up the image views with their images inside the scroll view
for (index, page) in enumerate(pageViews)
var frame = carousel.frame
page.frame = CGRectMake(frame.size.width * CGFloat(index), 0, carousel.frame.width, page.image!.size.height)
page.frame.origin.x = frame.size.width * CGFloat(index)
page.contentMode = .ScaleToFill
carousel.addSubview(page)
上面的函数在 viewDidAppear() 中被调用。我试过在 viewDidLoad() 和 viewDidLayoutSubviews() 中调用它,但没有区别。我还尝试将UIViewContentMode
更改为其他选项,例如.ScaleAspectFit
,它修复了高度失真,但图像不再填充它们的图像视图,这让一切看起来都很奇怪。我尝试更改图像大小,但没有效果。最后我尝试了page.sizeToFit()
,它把一切都搞砸了。我现在有点迷路了.. 救命?
【问题讨论】:
你确定它们在 6 和 6+ 上也没有失真吗?这些手机的宽度比 5 更接近 400,因此可能更难分辨。如果您将图像视图设置为.ScaleToFill
,如果它们的纵横比与图像视图的纵横比不同,它将扭曲图像。您可以将其设置为ScaleAspectFill
,它将保持纵横比并填满整个图像视图。这将导致图像的顶部/底部或左侧/右侧部分被截断。
【参考方案1】:
将图像视图clipToBounds
设置为true
并将UIViewContentMode
设置为.Center
解决了这个问题!这可能是一个临时解决方案,但目前效果很好。感谢您的帮助
【讨论】:
以上是关于为啥我放置在滚动视图中的图像视图高度扭曲?的主要内容,如果未能解决你的问题,请参考以下文章