在scrollView中嵌入UINavigationController

时间:2015-10-24 13:52:11

标签: ios uiscrollview uinavigationcontroller

我正在尝试使用3个启动视图执行应用程序,您可以在其间滑动。很喜欢像。

我已经很好了,但是当我尝试嵌入3个View Controller中的一个时,它会调整大小到屏幕的一小部分。 enter image description here

这是我的代码:

override func viewDidLoad() {
    super.viewDidLoad()
    let accCtrl = AccountViewController()
    let feedCtrl = UINavigationController(rootViewController: HomeViewController())
    let hashsCtrl = AccountViewController()

    self.addChildViewController(hashsCtrl)
    self.scrollView!.addSubview(hashsCtrl.view)
    hashsCtrl.didMoveToParentViewController(self)

    self.addChildViewController(feedCtrl)
    self.scrollView!.addSubview(feedCtrl.view)
    feedCtrl.didMoveToParentViewController(self)

    self.addChildViewController(accCtrl)
    self.scrollView!.addSubview(accCtrl.view)
    accCtrl.didMoveToParentViewController(self)

    accCtrl.view.frame = view.frame
    // feedCtrl.view.autoresizesSubviews = false
    feedCtrl.view.frame = CGRectMake(view.frame.width, 0, view.frame.width, view.frame.height)
    feedCtrl.setNavigationBarHidden(true, animated: false)
    feedCtrl.view.setNeedsLayout()
    hashsCtrl.view.frame = CGRectMake(view.frame.width * 2, 0, view.frame.width, view.frame.height)

    scrollView.contentSize = CGSizeMake(view.frame.width * 3, view.frame.height)
    scrollView.pagingEnabled = true
    scrollView.showsHorizontalScrollIndicator = false
    scrollView.showsVerticalScrollIndicator = false

    scrollView.contentOffset = CGPointMake(view.frame.width, 0)
}

我注意到屏幕上视图的最终宽度几乎是x - 280.如果我将feedCtrl.view.frame设置为宽度,则生成的宽度为1.0磅。实际上 - 也就是屏幕宽度 - ,它会产生40.0点的宽度。

我还注意到,如果我取消注释我将feedCtrl.view.autoresizeSubviews布尔值设置为false的行,则屏幕上的宽度是正确的,但我无法在视图上获得用户交互。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我有类似的问题。在viewDidLoad中,尝试添加(对我有用):

self.ScrollView.frame = (UIApplication.sharedApplication().delegate?.window!.frame)!