【问题标题】:UIScrollView not scrolling - ambiguous content sizeUIScrollView 不滚动 - 内容大小不明确
【发布时间】:2019-11-23 15:08:12
【问题描述】:

我正在尝试创建一个滚动视图。视图本身是正确的 显示但它不滚动,即使我向它添加了一个视图并且 设置内容大小。

注意:我不使用情节提要,而仅使用约束(自动布局)。

代码:

let scrollView: UIScrollView = {
        let sv = UIScrollView()
        sv.isScrollEnabled = true
        sv.backgroundColor = .brown
        return sv
    }()

    override func viewDidLoad() {
        super.viewDidLoad()

        setupViews()
    }

    func setupViews() {
        self.view.addSubview(scrollView)
        scrollView.anchor(top: self.view.topAnchor, left: self.view.leftAnchor, bottom: self.view.bottomAnchor, right: self.view.rightAnchor, paddingTop: 0, paddingLeft: 0, paddingBottom: 0, paddingRight: 0, width: 0, height: 0)
        scrollView.contentSize = CGSize(width: self.view.frame.width, height: 2000)

        print(scrollView.contentSize)

        let view = UIView()
        view.backgroundColor = .blue


        scrollView.addSubview(view)

        view.anchor(top: scrollView.topAnchor, left: scrollView.leftAnchor, bottom: scrollView.bottomAnchor, right: scrollView.rightAnchor, paddingTop: 0, paddingLeft: 0, paddingBottom: 0, paddingRight: 0, width: 0, height: 0)
    }

.anchor() 是我为使约束视图更容易而制作的自定义扩展。

任何帮助将不胜感激。

【问题讨论】:

  • 你的视图是整个滚动视图的大小

标签: ios swift uiscrollview autolayout uikit


【解决方案1】:

最好不要将自动布局与框架布局混合使用

1- 评论

scrollView.contentSize = CGSize(width: self.view.frame.width, height: 2000)

2-在滚动视图内的视图与vc的视图之间设置等宽约束和2000的高度约束

为了不混淆vc的视图变化

let view = UIView()

到

let contentView = UIView()

然后添加这两个约束

contentView.widthAnchor.constraint(equalTo:self.view.widthAnchor).isActive = true
contentView.heightAnchor.constraint(equalToConstant:2000).isActive = true

【讨论】:

  • 所以我只注释掉 contentSize 行?
  • 我试着按照你提到的那样限制它,但它仍然没有滚动。
猜你喜欢
  • 1970-01-01
  • 2021-07-12
  • 2018-05-03
  • 2014-02-11
  • 2023-03-12
  • 2013-06-24
  • 1970-01-01
  • 2011-11-02
  • 2011-12-31
相关资源
最近更新 更多