如何修改UIScrollView大小?

问题描述 投票:0回答:2

我正在努力建立这个:

example

但相反,我有这个:example2

我还没有开始处理背景颜色或更改幻灯片的背景颜色。

我现在的错误是我无法正确调整大小(你可以告诉我,当我滚动到最后,它停在幻灯片2)。

如何使框架和滑块正确配合? (每个幻灯片宽188和高153)。

这是我的代码:

func setupSlideScrollView(slides : [Slide]) {
        scrollView.frame = CGRect(x: 0, y: 0, width: 200, height: 160)
        scrollView.contentSize = CGSize(width: 188 * CGFloat(slides.count), height: 153)
        scrollView.isPagingEnabled = true

        for i in 0 ..< 3 {
            slides[i].frame = CGRect(x: view.frame.width * CGFloat(i), y: 0, width: 188, height: 153)
            slides[i].backgroundColor = UIColor.red
            scrollView.addSubview(slides[i])
        }
    }

对于所有代码,我正在学习本教程(除了步骤10+,因为我不需要动画):https://medium.com/@anitaa_1990/create-a-horizontal-paging-uiscrollview-with-uipagecontrol-swift-4-xcode-9-a3dddc845e92

ios swift xcode uiscrollview
2个回答
1
投票

您没有为scrollview中的单元格或票证提供正确的框架。

var lastCellMaxX: CGFloat = 0
    var constantSpacingBetweenCell: CGFloat = 10

    for i in 0 ..< 3 {
        slides[i].frame = CGRect(x: lastCellMaxX, y: 0, width: 188, height: 153)
        slides[i].backgroundColor = UIColor.red
        scrollView.addSubview(slides[i])
        lastCellMaxX += 188 + constantSpacingBetweenCell
    }

我没有得到view.frame的内容,我认为在你的情况下也没用。存储lastcellMaxX,即cell.origin.x + cellwidth + spacingBetweenCell,这将是x,同时为下一个视图提供帧


0
投票

您必须在scrollview的width参数中添加两个幻灯片之间的空格。

在scrollview中,内容大小是您要添加的内容的总大小。因此,如果两个幻灯片之间有空格,或者如果您有前导和尾随空格,则必须在scrollview的内容大小中添加该总空间。

例如,如果两个幻灯片之间的空间为10,则scrollView的修改内容大小如下所示。

scrollView.contentSize = CGSize(width: 188 * CGFloat(slides.count) + CGFloat((slides.count - 1) * 10), height: 153)
© www.soinside.com 2019 - 2024. All rights reserved.