更改 UIScrollView 内容大小
Posted
技术标签:
【中文标题】更改 UIScrollView 内容大小【英文标题】:Change UIScrollView Content size 【发布时间】:2016-05-09 10:56:11 【问题描述】:我有带有 UIScrollView、一些 UIImages 和 UIButtons 的 ViewController。 在情节提要中,我将 UIScrollView 的大小设置为:宽度:320,高度:570
我想在加载 ViewController 时更改 UIScrollView 的 Contentsize。
我在 viewDidLoad 中添加了边:
scrlMain.contentSize = CGSize(width: 320,height: 790)
我还在 viewDidLayoutSubviews 中添加了代码:
self.scrlMain.translatesAutoresizingMaskIntoConstraints = true
但我的 UIScrollView 仍然是最后一个尺寸 = 570。 我不能使用 viewDidAppear,因为当我按下按钮时,它需要它来改变颜色。当它改变颜色时,我的 UIScrollView 会向上移动。
我做错了什么?
所有代码:
override func viewDidLoad()
super.viewDidLoad()
scrlMain.delegate = self
scrlMain.contentSize = CGSizeMake(320, 790)
override func viewDidLayoutSubviews()
self.scrlMain.translatesAutoresizingMaskIntoConstraints = true
self.scrlMain.contentSize = CGSize(width: self.scrlMain.frame.width, height: 60.0 + 5 * (self.scrlMain.frame.width / 16.0 * 5.0));
【问题讨论】:
【参考方案1】:这个函数有错误:
override func viewDidLayoutSubviews()
self.scrlMain.translatesAutoresizingMaskIntoConstraints = true
self.scrlMain.contentSize = CGSize(width: self.scrlMain.frame.width, height: 60.0 + 5 * (self.scrlMain.frame.width / 16.0 * 5.0));
我删除这段代码:
self.scrlMain.contentSize = CGSize(width: self.scrlMain.frame.width, height: 60.0 + 5 * (self.scrlMain.frame.width / 16.0 * 5.0));
一切正常
【讨论】:
【参考方案2】:嘿@Dim,你可以试试这个-
yourScrollView.contentSize = CGSizeMake(320, 568)
您可以将大小 568 更改为任何您想要的。
【讨论】:
嘿@Mohd,我尝试在 viewDidLoad 中添加 scrlMain.contentSize = CGSizeMake(320, 790)。但我也有同样的问题。 对我来说不是。我将 UIScrollView 向下移动,但它没有修复。它向后移动。如果在 viewDidAppear 中添加此代码,UIScrollView 可以修复。但我不能使用 viewDidAppear。 您可以使用试试这个:
yourScrollView.userInteractionEnabled = YES
请保持屏幕大小和滚动视图内容大小之间的差异......以便它可以正常显示
假设你的ScrollViewSize 大于你的ScreenSize
【讨论】:
我添加了代码:scrlMain.userInteractionEnabled = true;在 viewDidLoad 中。但我有同样的问题。在 Storyboard 中 ViewController 有 570 个,UIScrollController 有 570 个。【参考方案4】:override func viewDidLayoutSubviews()
DispatchQueue.main.async
self.scrollview.translatesAutoresizingMaskIntoConstraints = true
self.scrollview.contentSize = CGSize(width:0, height:self.scrollview.frame.height*2) // whatever hight you want
【讨论】:
viewDidLayoutSubviews 总是在主线程上调用 - 将此工作从主线程传递给主线程是多余的。以上是关于更改 UIScrollView 内容大小的主要内容,如果未能解决你的问题,请参考以下文章
UIScrollView 不使用自动布局滚动(内容视图框架大小以编程方式更改)