Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 滚动视图未滚动/试图将视图添加到内容底部_Swift_Uiscrollview - Fatal编程技术网

Swift 滚动视图未滚动/试图将视图添加到内容底部

Swift 滚动视图未滚动/试图将视图添加到内容底部,swift,uiscrollview,Swift,Uiscrollview,因此,我以编程方式向视图控制器添加了一个scrollview,并添加了一些视图 func setupScrollView() { view.addSubview(scrollView) scrollView.addSubview(contentView) scrollView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true scrollView.widthAnchor.co

因此,我以编程方式向视图控制器添加了一个scrollview,并添加了一些视图

func setupScrollView() {
    view.addSubview(scrollView)
    scrollView.addSubview(contentView)
    scrollView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
    scrollView.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
    scrollView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
    scrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
    contentView.centerXAnchor.constraint(equalTo: scrollView.centerXAnchor).isActive = true
    contentView.widthAnchor.constraint(equalTo: scrollView.widthAnchor).isActive = true
    contentView.topAnchor.constraint(equalTo: scrollView.topAnchor).isActive = true
    contentView.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor).isActive = true
    scrollView.contentSize = contentView.frame.size
}

func addUserAndFollowView(id: String) {
    userAndFollow = UserPfAndFollow(id: id)
    if let userAndFollow = userAndFollow {
        userAndFollow.view.isUserInteractionEnabled = true
        contentView.addSubview(userAndFollow.view)
        self.contentView.bringSubviewToFront(userAndFollow.view)
        userAndFollow.view.translatesAutoresizingMaskIntoConstraints = false
        userAndFollow.view.topAnchor.constraint(equalTo: contentView.topAnchor).isActive = true
        userAndFollow.view.widthAnchor.constraint(equalTo: contentView.widthAnchor).isActive = true
        userAndFollow.view.heightAnchor.constraint(equalToConstant: 100).isActive = true
        
    }
    
}

func setImageViewConstraints() {
    imageView.translatesAutoresizingMaskIntoConstraints = false
    imageView.heightAnchor.constraint(equalToConstant: 300).isActive = true
    imageView.widthAnchor.constraint(equalToConstant: 300).isActive = true
    imageView.centerXAnchor.constraint(equalTo: self.contentView.centerXAnchor).isActive = true
    if let userAndFollow = userAndFollow?.view {
        imageView.topAnchor.constraint(equalTo: userAndFollow.bottomAnchor, constant: 5).isActive = true
    }
}

func addLabelConstraints() {
    self.albumTitle?.translatesAutoresizingMaskIntoConstraints = false
    self.albumDescription?.translatesAutoresizingMaskIntoConstraints = false
    albumTitle?.numberOfLines = 2
    albumDescription?.numberOfLines = 3
    albumDescription?.adjustsFontSizeToFitWidth = false

    albumTitle?.topAnchor.constraint(equalTo: imageView.bottomAnchor, constant: 14).isActive = true    
    albumTitle?.leadingAnchor.constraint(equalTo: self.contentView.leadingAnchor, constant: 10).isActive = true
    albumTitle?.trailingAnchor.constraint(equalTo: self.contentView.trailingAnchor).isActive = true
    albumTitle?.leadingAnchor.constraint(equalTo: self.contentView.leadingAnchor, constant: 10).isActive = true
   
    albumDescription?.lineBreakMode = .byTruncatingTail
    albumDescription?.topAnchor.constraint(equalTo: albumTitle!.bottomAnchor, constant: 9).isActive = true
    albumDescription?.leadingAnchor.constraint(equalTo: self.contentView.leadingAnchor, constant: 10).isActive = true
    albumDescription?.trailingAnchor.constraint(equalTo: self.contentView.trailingAnchor).isActive = true
}

所有这些视图都以我希望的方式显示,滚动视图不滚动,但当我在其余视图的底部添加下一个视图(视图控制器中的tableview)时,它不会显示。可能是scrollview没有滚动的原因

func addViewController() {
        if let viewController = viewController {
            contentView.addSubview(viewController.view)
            setVCConstraints()
        }
        
    }
    
    func setVCConstraints() {
        viewController?.view.translatesAutoresizingMaskIntoConstraints = false
        viewController?.view.bottomAnchor.constraint(equalTo: self.contentView.bottomAnchor).isActive = true
        
        viewController?.view.topAnchor.constraint(equalTo: albumDescription!.bottomAnchor, constant: 7).isActive = true
        
        viewController?.view.widthAnchor.constraint(equalTo: self.contentView.widthAnchor).isActive = true
        
    }

如何使此视图显示,并使我的scrollview沿着此视图控制器及其数组内容滚动到底?

在添加视图之前,您必须

contentView.centerXAnchor.constraint(equalTo: scrollView.centerXAnchor).isActive = true
contentView.widthAnchor.constraint(equalTo: scrollView.widthAnchor).isActive = true
contentView.topAnchor.constraint(equalTo: scrollView.topAnchor).isActive = true
contentView.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor).isActive = true
scrollView.contentSize = contentView.frame.size
viewController?.view.bottomAnchor.constraint(equalTo: self.contentView.bottomAnchor).isActive = true
        
viewController?.view.topAnchor.constraint(equalTo: albumDescription!.bottomAnchor, constant: 7).isActive = true
        
viewController?.view.widthAnchor.constraint(equalTo: self.contentView.widthAnchor).isActive = true
因此,当然,
contentView
的大小是
scrollView
,因此不会滚动。大小一样

添加视图后,您将

contentView.centerXAnchor.constraint(equalTo: scrollView.centerXAnchor).isActive = true
contentView.widthAnchor.constraint(equalTo: scrollView.widthAnchor).isActive = true
contentView.topAnchor.constraint(equalTo: scrollView.topAnchor).isActive = true
contentView.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor).isActive = true
scrollView.contentSize = contentView.frame.size
viewController?.view.bottomAnchor.constraint(equalTo: self.contentView.bottomAnchor).isActive = true
        
viewController?.view.topAnchor.constraint(equalTo: albumDescription!.bottomAnchor, constant: 7).isActive = true
        
viewController?.view.widthAnchor.constraint(equalTo: self.contentView.widthAnchor).isActive = true
请注意,上面定义了上下和宽度-
viewController.view
在水平路径上的起始位置没有从左到右的指示。这可能会导致一些非常奇怪的行为

但是,您仍然不会将
contentView.contentSize
修改为大于
scrollView
大小


要使内容滚动,您需要
contentView.contentSize
大于
frame.size

我添加了
scrollView.contentSize=CGSize(宽度:self.view.frame.size.width,高度:1000)
只是为了测试使其可滚动的东西,但是在向viewController.view添加了前导和尾随锚之后,它仍然不会显示。这里有两个不同的问题。与之完全无关。第一个是contentsize=scrollview大小。接下来,您需要查看如何将viewcontroller视图添加为子视图。