Lir*_*ivo 4 constraints ios autolayout swift
我有UIScrollView覆盖整个屏幕,在里面我有3个UIView并排的对象,通过分页管理.我想做出正确的约束,因此它也适合iPhone 6.
拖动时看起来像这样:

这些约束条件UIScrollView运作良好,但我如何安排内部视图的约束UIScrollView?
提前致谢!!
滚动视图的子视图需要两组约束.
第一组是滚动视图及其子视图的前导/尾随和上/下约束之间的约束.请注意,与大多数约束不同,这并不表示子视图的大小,而只是它们与滚动视图之间的关系contentSize.
第二组是子视图的宽度/高度与滚动视图的超视图之间的约束.这将使每个子视图成为显示的完整大小.
因此,以编程方式说明:
let scrollView = UIScrollView()
scrollView.setTranslatesAutoresizingMaskIntoConstraints(false)
scrollView.pagingEnabled = true
view.addSubview(scrollView)
let redView = UIView()
redView.backgroundColor = UIColor.redColor()
redView.setTranslatesAutoresizingMaskIntoConstraints(false)
scrollView.addSubview(redView)
let greenView = UIView()
greenView.backgroundColor = UIColor.greenColor()
greenView.setTranslatesAutoresizingMaskIntoConstraints(false)
scrollView.addSubview(greenView)
let blueView = UIView()
blueView.backgroundColor = UIColor.blueColor()
blueView.setTranslatesAutoresizingMaskIntoConstraints(false)
scrollView.addSubview(blueView)
let views = [
"scrollView" : scrollView,
"blueView" : blueView,
"greenView" : greenView,
"redView" : redView,
"view" : view
]
view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[scrollView]|", options: nil, metrics: nil, views: views))
view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[scrollView]|", options: nil, metrics: nil, views: views))
view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[redView(==view)]|", options: nil, metrics: nil, views: views))
view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[greenView(==view)]|", options: nil, metrics: nil, views: views))
view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[blueView(==view)]|", options: nil, metrics: nil, views: views))
view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[redView(==view)][greenView(==view)][blueView(==view)]|", options: nil, metrics: nil, views: views))
Run Code Online (Sandbox Code Playgroud)
这里的显着细节是(==view)可视格式语言(VFL)中的引用,它告诉子视图与视图控制器的主视图的大小相同.注意,您不必使用VFL执行此操作(您也可以在IB中执行此操作),但这只是表达约束的便捷方式.
顺便说一下,Apple在技术说明TN 2154中讨论了这种行为.
| 归档时间: |
|
| 查看次数: |
3213 次 |
| 最近记录: |