2017-06-26 82 views
0

我喜欢从我的UIScrollView中设置一个比其他页面更大的页面。最后一页应该与整个UIView一样大小,这是可能的吗?不同尺寸的滚动页面

这是我未完成的代码:

self.scrollView.frame = CGRect(x: 0, y: 0, width: self.scrollView.frame.width, height: self.scrollView.frame.height) 
    let scrollviewHeight = self.scrollView.frame.height 
    let scrollviewWidth = self.scrollView.frame.width 

    let viewHeight = self.view.frame.height 
    let viewWidth = self.view.frame.width 

    let imgOne = UIImageView(frame: CGRect(x: 0, y: 0, width: scrollviewWidth, height: scrollviewHeight)) 
    let imgTwo = UIImageView(frame: CGRect(x: scrollviewWidth, y: 0, width: scrollviewWidth, height: scrollviewHeight)) 
    let imgTree = UIImageView(frame: CGRect(x: scrollviewWidth*2, y: 0, width: scrollviewWidth, height: scrollviewHeight)) 
    let feedbackView = UIView(frame: CGRect(x: scrollviewWidth*3, y: 0, width: viewWidth, height: viewHeight)) 

    imgOne.image = UIImage(named: "preview1") 
    imgTwo.image = UIImage(named: "preview2") 
    imgTree.image = UIImage(named: "preview3") 

    self.scrollView.addSubview(imgOne) 
    self.scrollView.addSubview(imgTwo) 
    self.scrollView.addSubview(imgTree) 
    self.scrollView.addSubview(feedbackView) 

    self.addChildFeedBack(feedbackView: feedbackView) 

    self.scrollView.contentSize = CGSize(width: self.scrollView.frame.width * 4, height: self.scrollView.frame.height) 
    self.scrollView.isPagingEnabled = true 

feedbackView是一个,这应该是最大的。

+0

真不明白你问...你*试过*呢?如果是这样,它工作吗?如果是这样,你在问什么?如果它没有**工作,那是什么错误?如果你甚至没有尝试过它,那么...试试看看会发生什么。 – DonMag

+0

我试过它像上面的代码,它没有工作。像那样,feedbackView(应该和视图一样大小)具有完整视图的大小,但是在ScrollView中。所以它不适合。 – j10

+0

确定 - 您正在启用scrollView的“分页”功能。这意味着它会自动使用大小自身的“页面”。如果你希望第四个视图更大,它将需要“可滚动”。一种选择是观察'scrollViewDidScroll',检测何时到达'feedbackView',然后禁用分页。当然,这将允许用户“滑回”到第三个视图...因此,您希望*结果的功能如何?你想要什么用户体验? – DonMag

回答

1

我不知道这是否会给你你想要的结果的类型,但一些尝试......

而不是增加feedbackViewscrollView,加入另一UIScrollView作为第4子视图,然后添加feedbackView滚动视图的子视图:

// your original setup code 
    self.scrollView.frame = CGRect(x: 0, y: 0, width: self.scrollView.frame.width, height: self.scrollView.frame.height) 
    let scrollviewHeight = self.scrollView.frame.height 
    let scrollviewWidth = self.scrollView.frame.width 

    let viewHeight = self.view.frame.height 
    let viewWidth = self.view.frame.width 

    let imgOne = UIImageView(frame: CGRect(x: 0, y: 0, width: scrollviewWidth, height: scrollviewHeight)) 
    let imgTwo = UIImageView(frame: CGRect(x: scrollviewWidth, y: 0, width: scrollviewWidth, height: scrollviewHeight)) 
    let imgTree = UIImageView(frame: CGRect(x: scrollviewWidth*2, y: 0, width: scrollviewWidth, height: scrollviewHeight)) 
    let feedbackView = UIView(frame: CGRect(x: scrollviewWidth*3, y: 0, width: viewWidth, height: viewHeight)) 

    imgOne.image = UIImage(named: "preview1") 
    imgTwo.image = UIImage(named: "preview2") 
    imgTree.image = UIImage(named: "preview3") 

    self.scrollView.addSubview(imgOne) 
    self.scrollView.addSubview(imgTwo) 
    self.scrollView.addSubview(imgTree) 

    // don't add feedbackView to scrollView 
    // self.scrollView.addSubview(feedbackView) 

    // instead, create another scroll view, 
    // add feedbackView to that scroll view, 
    // and add that scroll view as the 4th "page" in scrollView 

    let fbScrollView = UIScrollView(frame: CGRect(x: scrollviewWidth*3, y: 0, width: scrollviewWidth, height: scrollviewHeight)) 

    // just so we can see where it is during development 
    fbScrollView.backgroundColor = .purple 

    // feedbackView will now be in its own scroll view, so 
    // set its origin to 0,0 
    feedbackView.frame.origin = CGPoint.zero 

    fbScrollView.addSubview(feedbackView) 
    fbScrollView.contentSize = feedbackView.frame.size 

    // add the new scroll view to the "paging" scrollView 
    self.scrollView.addSubview(fbScrollView) 

    // and the rest of your setup 
    self.addChildFeedBack(feedbackView: feedbackView) 

    self.scrollView.contentSize = CGSize(width: self.scrollView.frame.width * 4, height: self.scrollView.frame.height) 
    self.scrollView.isPagingEnabled = true