【问题标题】:Hide Labe at specific page on a scrollView swift 3在scrollView swift 3上的特定页面隐藏Labe
【发布时间】:2017-11-29 01:53:15
【问题描述】:

我在 ViewController 上有一个 UIScrollView 和一个 UILabel。如果用户到达滚动视图的最后一页,则应隐藏标签。我怎样才能做到这一点?这是我未完成的代码:

    swipeLabel.center.x = self.view.frame.width + 30

    self.comingSoonLabel.isHidden = false

    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 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 feedbackView = UIView(frame: CGRect(x: scrollviewWidth*4, y: 0, width: scrollviewWidth, height: scrollviewHeight))

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

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

    self.addChildFeedBack(feedbackView: feedbackView)

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

}

func addChildFeedBack(feedbackView: UIView){
    let contestStoryboard = UIStoryboard(name: "feedback", bundle: nil)
    let testVC = contestStoryboard.instantiateViewController(withIdentifier: "FeedbackViewController") as! FeedbackViewController
    testVC.view.frame = feedbackView.bounds
    feedbackView.addSubview(testVC.view)
    self.addChildViewController(testVC)
    testVC.didMove(toParentViewController: self)

    self.comingSoonLabel.isHidden = true
}

【问题讨论】:

    标签: ios swift3 uiscrollview uilabel


    【解决方案1】:

    您可以使用滚动视图的委托方法获取 pageNumber。

    注意 - 您需要指定滚动视图的委托并同时遵守该委托。

    scrollview.delegate = self //assign
    
    class testClass: UIViewController, UIScrollViewDelegate // conform
    

    委托

    func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
    
            let pageNumber = round(scrollView.contentOffset.x / scrollView.frame.size.width)
             if pageNumber == 3{
              // hide your label here 
             }
            // do you logic related to last page
        }
    

    【讨论】:

    • 我不太明白。 func scrollViewDidEndDecelerating如何访问最后一页?
    • 这不是您需要为此添加逻辑的最后一个数字。它只是滚动停止时的当前页码。
    • 那么我只需要那个函数,我可以添加self.comingSoonLabel.isHidden = true 还是需要额外的东西?
    • 现在,标签在第一次触摸/滚动后隐藏。我需要在最后一页执行此操作。但我还需要,当我返回上一页时会显示标签。
    • 它还不能很好地工作。当我滚动时,标签消失了 1 秒,但在那之后,它不再隐藏了
    猜你喜欢
    • 2017-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多