无法正确配置UIScrollView(顶部偏移)

时间:2016-10-21 19:27:25

标签: ios swift uiscrollview uiimageview

我整个上午一直在与这个斗争,似乎无法找到解决方案。我创建了一个UIImageView,用红色填充,然后将其添加到UIScrollView并将contentSize设置为UIImageView的大小。如果我打印contentOffset我看到(0, 0),如果我打印contentSizeUIImageView.frame.size它们是相同的,但红色“图像”总是小于scrollView {1}}认为contentSize是。

如果我一直滚动到顶部,我会在红色图像上方看到一个高约100像素的青色条纹,滚动条不会一直到我认为滚动视图顶部的顶部是。虽然滚动条的顶部与我的红色窗口的顶部对齐,但看起来滚动视图似乎与它实际存在的位置相混淆。或者更可能的是,我很困惑

IMG http://i64.tinypic.com/33mwewj.png

这是我看似非常简单的代码...

    imgHorizon = UIImage.init(named:"horizon")!
    imgBezel = UIImage.init(named:"bezel_transparent")!
    imgWings = UIImage.init(named:"wings_transparent")!

    imgViewHorizon = UIImageView.init()
    imgViewBezel = UIImageView.init()
    imgViewWings = UIImageView.init()

    svHorizon = UIScrollView.init()

    super.init(coder: aDecoder)

    imgViewHorizon = UIImageView(frame: CGRect(x: 0, y: 0, width: imgBezel.size.width, height: imgHorizon.size.height))
    imgViewHorizon.backgroundColor = UIColor.red

    imgViewBezel = UIImageView(frame: CGRect(x: 0, y: 0, width: imgBezel.size.width, height: imgBezel.size.height))
    imgViewBezel.contentMode = UIViewContentMode.center
    imgViewBezel.clipsToBounds = true
    imgViewBezel.image = imgBezel

    imgViewWings = UIImageView(frame: CGRect(x: 0, y: 0, width: imgBezel.size.width, height: imgBezel.size.height))
    imgViewWings.contentMode = UIViewContentMode.center
    imgViewWings.clipsToBounds = true
    imgViewWings.image = imgWings

    svHorizon = UIScrollView(frame: CGRect(x: 0, y: 0, width: imgBezel.size.width, height: imgBezel.size.width))
    svHorizon.contentSize = CGSize(width: imgBezel.size.width, height: imgHorizon.size.height)
    svHorizon.contentMode = UIViewContentMode.scaleToFill
    svHorizon.bounces = false
    svHorizon.backgroundColor = UIColor.cyan
    svHorizon.contentOffset = CGPoint(x: 0, y: 0)

    svHorizon.addSubview(imgViewHorizon)
    addSubview(svHorizon)
    addSubview(imgViewBezel)
    addSubview(imgViewWings)

1 个答案:

答案 0 :(得分:1)

根据评论中的讨论,我们发现在Adjust Scroll View Insets的属性检查器中检查了ViewController选项。取消选中它可以解决问题。看看下面的图片。您需要取消选中突出显示的选项。

Attributes of the View Controller