更改 UIScrollView 内容大小
Change UIScrollView Content size
我有 ViewController 和 UIScrollView、一些 UIImage 和 UIButton。
在情节提要中,我将 UIScrollView 的大小设置为:宽度:320,高度:570
我想在加载 ViewController 时更改我的 UIScrollView 的内容大小。
我在 viewDidLoad 中添加了 side:
scrlMain.contentSize = CGSize(width: 320,height: 790)
而且我还在 viewDidLayoutSubviews 中添加了代码:
self.scrlMain.translatesAutoresizingMaskIntoConstraints = true
但是我的UIScrollView还是上次size = 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));
}
嘿@Dim 你可以试试这个-
yourScrollView.contentSize = CGSizeMake(320, 568)
并且您可以将尺寸 568 更改为您想要的任何尺寸。
试试这个:
yourScrollView.userInteractionEnabled = YES
请保持屏幕尺寸和滚动视图内容尺寸之间的差异...以便它可以正常显示
假设你的 ScrollViewSize 大于你的 ScreenSize
这个函数有一个错误:
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));
一切顺利
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
}
}
也可以在页面内更改内容大小而无需再次 运行 ViewDidLoad。
只需添加
scrollView.layoutIfNeeded()
设置新的内容大小后
在 UIscrollView (scrollViewImages)
中更改内容大小 (viewImages) 的示例
viewImages.frame.size = CGSize(width: width, height: 128)
viewImages.translatesAutoresizingMaskIntoConstraints = true
viewImages.setNeedsLayout()
scrollViewImages.setNeedsLayout()
scrollViewImages.layoutIfNeeded()
我有 ViewController 和 UIScrollView、一些 UIImage 和 UIButton。 在情节提要中,我将 UIScrollView 的大小设置为:宽度:320,高度:570
我想在加载 ViewController 时更改我的 UIScrollView 的内容大小。
我在 viewDidLoad 中添加了 side:
scrlMain.contentSize = CGSize(width: 320,height: 790)
而且我还在 viewDidLayoutSubviews 中添加了代码:
self.scrlMain.translatesAutoresizingMaskIntoConstraints = true
但是我的UIScrollView还是上次size = 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));
}
嘿@Dim 你可以试试这个-
yourScrollView.contentSize = CGSizeMake(320, 568)
并且您可以将尺寸 568 更改为您想要的任何尺寸。
试试这个:
yourScrollView.userInteractionEnabled = YES
请保持屏幕尺寸和滚动视图内容尺寸之间的差异...以便它可以正常显示
假设你的 ScrollViewSize 大于你的 ScreenSize
这个函数有一个错误:
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));
一切顺利
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
}
}
也可以在页面内更改内容大小而无需再次 运行 ViewDidLoad。
只需添加
scrollView.layoutIfNeeded()
设置新的内容大小后
在 UIscrollView (scrollViewImages)
中更改内容大小 (viewImages) 的示例viewImages.frame.size = CGSize(width: width, height: 128)
viewImages.translatesAutoresizingMaskIntoConstraints = true
viewImages.setNeedsLayout()
scrollViewImages.setNeedsLayout()
scrollViewImages.layoutIfNeeded()