2016-08-18 58 views
0

我很难得到这个工作,最好的解释了我想用我的故事板的这个图像做什么。UIScrollView在主UIView内部的一个较小的UIView

Storyboard

主要目标是使该容器可滚动的,与它的尺寸依赖该被经由代码加入到它的视图控制器上。

这是我如何展示我的观点。

Layout of Views

显然,我的约束是什么是搞乱了我,但不完全知道如何让他们像预期的那样,我已经试过钉扎容器滚动视图,然后滚动视图到主视图。屏幕出现我想要的,但它只是不滚动。

任何帮助非常感谢!

回答

0

所以对于任何人想知道如何做到这一点,我终于想出了如何做了很多反复试验后。 基本上我所做的就是从故事板取出容器视图,设定我的滚动视图的约束,因为我通常会:

Constraints

,然后添加一个容器视图在代码中滚动视图的子视图:

var containerView : UIView! 
var currentViewController: UIViewController 

override func viewDidLoad() { 
     super.viewDidLoad() 

     self.containerView = UIView() 
     self.scrollView.addSubview(self.containerView) 
} 

为了不同视图控制器之间使用我UISegmentControl和交换具有滚动内容的滚动视图不管新的视图控制器多大添加以下代码在我UISegmentControl功能

@IBAction func segControlValueChanged(sender: AnyObject) { 
    if let vc = viewControllerForSelectedSegmentIndex(sender.selectedSegmentIndex) { 
     self.currentViewController!.view.removeFromSuperview() 
     self.currentViewController!.removeFromParentViewController()  
     displayCurrentTab(sender.selectedSegmentIndex) 
    } 
} 

func displayCurrentTab(tabIndex: Int){ 
    if let vc = viewControllerForSelectedSegmentIndex(tabIndex) { 
     self.addChildViewController(vc) 
     self.containerView.addSubview(vc.view) 
     vc.didMoveToParentViewController(self) 
     vc.view.frame.size = CGSize(width: self.view.frame.width, height: vc.view.frame.height) //had to add this because otherwise for some reason my new vc width would not increase or decrease to its parent view 
     self.currentViewController = vc 
     self.scrollView.contentSize = vc.view.frame.size 
    } 
} 

func viewControllerForSelectedSegmentIndex(index: Int) -> UIViewController { 
    //instantiate and return your view controller here 
} 

其他一些注意事项:

  • 我在故事板禁用“从NIB调整视图”为我所有的视图控制器我打算加入到容器
0

这是不可能的从您的问题&截图来确定你实际设置了什么限制。你的问题甚至没有特别说明你的约束是否正常运行(除了滚动视图不滚动,这可能与约束有关)。

首先,我们需要确保我们的约束正确地连接起来。您要为其放置滚动视图的容器视图应该有四个约束。每边一个,左侧&右侧,将其固定到那些边缘。一个用于将底部固定到工具栏,另一个用于顶部将其固定到顶部视图。它不需要任何更多的限制。现在,底部的工具栏和顶部的视图需要设置约束条件,以便每个设备/方向的高度不变,并且不关心容器视图的大小。如果您的约束设置正确,那么在界面构建器文件中调整此视图的大小应该改变容器视图的大小。如果没有发生这种情况,请回到绘图板,因为有些东西不太正确。

如果你确信你的约束设置正确,还有一些关于scrollview本身的事情可能会阻止滚动。

首先检查最明显的。滚动视图上的滚动启用属性是否设置为true?如果没有......当然它不会滚动。

可能发生的另一件事是您的内容视图不会比滚动视图大。确保您已经为滚动视图的内容正确设置了自动布局,否则内容视图将不会大于滚动视图,并且不会发生滚动。

+0

好吧,我只是后一般提示为在这种情况下需要制约,我照片中的那些可能是错误的,所以我没有看到显示它们的一点。 因此,滚动视图应该在容器内,而不是像我在我的照片中那样绕过其他方式?,好吧,生病了,看看这是怎么回事,让你知道 – beerye