带有约束的滚动视图自动布局问题 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的主要内容,如果未能解决你的问题,请参考以下文章
带有自动布局的滚动视图内的iOS 8 imageView不起作用