【问题标题】:Trying to code a short intro for my app尝试为我的应用编写简短介绍
【发布时间】:2016-12-07 14:47:26
【问题描述】:

我正在尝试为我的第一个应用编写简短的介绍。

这是我的代码:

import UIKit
class ViewController: UIViewController, UIScrollViewDelegate {

    var MainscrollView = UIScrollView()

    override func viewDidLoad() {
        super.viewDidLoad()
        MainscrollView.delegate = self

        //Frames
        var singleFrame : CGRect = self.view.frame;

        var scrollFrame : CGRect = singleFrame
        scrollFrame.size.width *= 3.0 //num. frames

        //Views

        //ScrollView
        MainscrollView = UIScrollView(frame: singleFrame)
        view.addSubview(MainscrollView)
        MainscrollView.isPagingEnabled = true
        MainscrollView.contentSize = scrollFrame.size

        //1 frame
        let firstView : UIView = UIView(frame: singleFrame)
        firstView.backgroundColor = UIColor.red
        MainscrollView.addSubview(firstView)

        //2 frame
        singleFrame.origin.x = firstView.frame.size.width
        let secondView : UIView = UIView(frame: singleFrame)
        secondView.backgroundColor = UIColor.yellow
        MainscrollView.addSubview(secondView)

        //3 frame
        singleFrame.origin.x = firstView.frame.size.width * 2
        let thirdView : UIView = UIView(frame: singleFrame)
        thirdView.backgroundColor = UIColor.green
        MainscrollView.addSubview(thirdView)
    }

    func scrollViewDidEndDecelerating(_ MainscrollView : UIScrollView) {
        print("in here")
    }
}

不幸的是,scrollViewDidEndDecelerating 函数从未被触发。 我有几个需求:

  1. 如何正确使用 scrollViewDidEndDecelerating? (我需要它来触发 pageController 元素的“页面已更改”事件)。

  2. 你能不能让我在正确的方向上实现一些额外的图形效果在滚动视图上方作为对象进入和退出视图的速度与滚动视图不同(如 Google Calendar Intro 或 Evernote Intro 等.)?

【问题讨论】:

  • 一些与实际问题无关的文体观察:Mainscrollview应以小写字母开头,并应为驼峰式(即mainScrollView),scrollViewDidEndDecelerating的参数名称不应为MainscrollView(例如,只需 scrollView 即可)。
  • 另外,将滚动视图作为let 常量会使问题在编译时变得明显。
  • 谢谢大家的建议,现在可以了!

标签: ios swift uiscrollviewdelegate


【解决方案1】:

另外,你已经创建了两次UIScrollView

     var MainscrollView = UIScrollView()

MainscrollView = UIScrollView(frame: singleFrame)

因此,在设置委托后,您的 MainscrollView 再次创建。您可以更改代码以设置正确的框架:

    MainscrollView.frame = singleFrame
    view.addSubview(MainscrollView)
    MainscrollView.isPagingEnabled = true
    MainscrollView.contentSize = scrollFrame.size

而且你必须用驼峰命名你的财产 - mainScrollView

【讨论】:

  • 我明白了。但在那之后你重新创建了你的mainScrollView
  • 我没有创建任何东西,因为这不是我的问题,但关键是,原始版本根本没有回答这个问题。 (现在它做得更多了,因为您发现设置委托后创建滚动视图的实际实例的真正问题,所以也许编辑答案以不打开错误的猜测。=)
  • 非常感谢!!这解决了我的问题!米歇尔
猜你喜欢
  • 1970-01-01
  • 2012-04-05
  • 1970-01-01
  • 2010-11-22
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多