Wii*_*ard 14 view subview uiscrollview ios swift
我正在使用Xcode 6在swift中构建一个iOS应用程序.我正在尝试在滚动视图中嵌入一个带有表视图的视图控制器.当用户拖动表视图时,假设移动表,而不是它所嵌入的滚动视图.我已经做了这个插图,以清除我的视图并查看控制器层次结构:

红色区域是滚动视图的内容大小区域.
绿色和蓝色区域是嵌入在滚动视图中的不同视图控制器.
黄色区域是蓝色视图控制器中的文本字段.
橙色区域是蓝色视图控制器中的表格视图.
我已经在scrollview中启用了分页,因此它可以捕捉到绿色或蓝色视图控制器.如何将表格视图弹出到视图层次结构的顶部,以便滚动滚动视图的唯一方法是在文本字段中拖动.
import UIKit
class RootViewController: UIViewController, UIScrollViewDelegate {
var scrollView: UIScrollView!
var greenViewController: GreenViewController!
var blueViewController: BlueViewController!
override func viewDidLoad() {
super.viewDidLoad()
scrollView = UIScrollView(frame: CGRectMake(0, 0, self.view.frame.width, self.view.frame.height))
scrollView.delegate = self
scrollView.pagingEnabled = true
self.greenViewController = self.storyboard?.instantiateViewControllerWithIdentifier("Green View Controller") as! GreenViewController
self.blueViewController = self.storyboard?.instantiateViewControllerWithIdentifier("Blue View Controller") as! BlueViewController
greenViewController.view.frame = CGRectMake(0, 0, view.bounds.width, view.bounds.height)
blueViewController = CGRectMake(0, view.bounds.height, view.bounds.width, view.bounds.height)
scrollView.addSubview(greenViewController.view)
scrollView.addSubview(blueViewController.view)
scrollView.contentSize = CGSizeMake(view.bounds.width, view.bounds.height*2)
self.view.addSubview(scrollView)
}
Run Code Online (Sandbox Code Playgroud)
我希望我已经表达了清楚.
我滚动时尝试更改滚动视图的大小.我们的想法是改变框架的高度,使其在完全向下滚动时与文本字段的高度相匹配.但它似乎也改变了滚动视图中嵌入的可见部分:
func scrollViewDidScroll(scrollView: UIScrollView) {
if self.scrollView.contentOffset.y > textField.View.bounds.height {
self.scrollView.frame.size.height = view.bounds.height - scrollView.contentOffset.y - textField.View.bounds.height
println(self.scrollView.frame)
}
}
Run Code Online (Sandbox Code Playgroud)
我嘲笑了这一点。我的视图层次结构如下所示
ViewController's UIView
...UIView (to act as a container view for all the scrollable content)
.......UIView (for the top content) - green
.......UIView (for the bottom content) - blue
............UILabel
............UITableView (with scrollable content - more rows than visible)
Run Code Online (Sandbox Code Playgroud)
我连接@IBOutlets到UIScrollView(scrollView) 和UIView(containerView) 作为可滚动区域。
我补充道viewDidLoad:
scrollView.contentSize = containerView.frame.size
Run Code Online (Sandbox Code Playgroud)
如果我单击 tableView 之外的任何位置(顶部区域、文本区域等...),我就会滚动滚动视图。如果我尝试在表视图中滚动,则 tableView 会滚动(scrollView 不会)。
这就是你想要实现的目标吗?
| 归档时间: |
|
| 查看次数: |
6173 次 |
| 最近记录: |