更改 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()