带有约束的滚动视图自动布局问题 xcode 8

Posted

技术标签:

【中文标题】带有约束的滚动视图自动布局问题 xcode 8【英文标题】:scrollview autolayout issue xcode 8 with constraints 【发布时间】:2016-11-30 06:25:56 【问题描述】:

我在滚动视图中添加我的介绍屏幕。所以我只能水平滚动。我为滚动视图设置了约束(顶部、底部.前导、尾随)。我添加了如下子视图

 for i in 0..<self.arrIntro.count

                let view = IntroScreenView.instanceFromNib()
                let x = CGFloat(i) * self.scrollIntro.frame.size.width

                view.frame = CGRect(x: x, y: 0, width: self.scrollIntro.frame.size.width, height: self.scrollIntro.frame.size.height)
                print(view,self.scrollIntro)
                view.imgIntro.image = UIImage(named: "image-1")//UIImage(contentsOfFile: self.arrIntro[i]["Link"] as! String)
                print(self.arrIntro[i]["Link"] as! String)
                self.scrollIntro.addSubview(view)
            
            self.scrollIntro.contentSize = CGSize(width: (CGFloat(self.arrIntro.count) * self.scrollIntro.frame.size.width ) , height: self.scrollIntro.frame.size.height)

但我的滚动视图有点垂直滚动。我应该如何避免这种情况。任何自动布局问题?

【问题讨论】:

你为什么不使用UICollectionView 【参考方案1】:

您没有在视图中添加任何约束。为每个项目添加高度和宽度约束,视图之间的约束以及从视图到滚动视图的约束。请注意,Su 视图和滚动视图之间的约束将为您设置内容大小。

【讨论】:

【参考方案2】:

contentSize.height 大于scrollView 高度时,滚动视图垂直滚动。

请确保您的contentSize.height 不大于scrollView.frame.size.height

我可以猜到的一个原因是,您可能正在设置contentSize 一个点,之后滚动视图的框架会发生变化。您应该在 viewDidLayoutSubviews() 中设置 contentSize

示例:此代码使垂直滚动

class ViewController: UIViewController, UIScrollViewDelegate 

    @IBOutlet var scrollView: UIScrollView!

    override func viewDidLoad() 
        super.viewDidLoad()
        scrollView.contentSize = CGSize(width: self.scrollView.bounds.width*5, height: self.scrollView.frame.height)
    

这不是

class ViewController: UIViewController, UIScrollViewDelegate 

    @IBOutlet var scrollView: UIScrollView!

    override func viewDidLayoutSubviews() 
        scrollView.contentSize = CGSize(width: self.scrollView.bounds.width*5, height: self.scrollView.frame.height)
    

【讨论】:

以上是关于带有约束的滚动视图自动布局问题 xcode 8的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 6.3 故事板自动布局约束

滚动视图不在自动布局 xcode 6.4 中滚动

带有自动布局的滚动视图内的iOS 8 imageView不起作用

自动布局不会在 iOS 8-Xcode 6 中立即更新帧

我的带有自动布局约束的 Swift 4 UIScrollView 没有滚动

嵌入导航控制器时 Xcode 滚动视图自动布局问题?