源码地址:github地址下载,欢迎star~
1、App应用程序在第一次打开的时候,都会出现一个可以滚动的导航页。这些导航页面一般是关于App版本的一些新特性新功能的介绍,是每个App应用程序必不可少的一个部分。
而这种导航页就是通过控件UIScrollView来实现的,下面通过一个Demo(参考了Swiftv课堂视频)让我们熟悉如何使用UIScrollView做一个App的导航页面。
2、步骤如下:
1)加载scrollView视图,同时进行基本的属性设置(详细信息见代码注释)
func loadScrollView() { self.scrollView = UIScrollView(frame: CGRectMake(0,0,self.width,self.height)) self.scrollView.contentSize = CGSize(width: CGFloat(4) * self.width, height: self.height) self.scrollView.pagingEnabled = true //bounces默认为true,如果为true在第一页和最后一页还是可以滑动的 self.scrollView.bounces = false //scrollView的水平显示器 self.scrollView.showsHorizontalScrollIndicator = false //设置代理 self.scrollView.delegate = self self.view.addSubview(self.scrollView) for i in 1...4{ let imageView = UIImageView(image: UIImage(named: "\(i + 1).png")) //图片的起点从原点(0,0)开始 imageView.frame = CGRectMake(CGFloat(i - 1)*self.width, 0, self.width, self.height) self.scrollView.addSubview(imageView) } }
2)增加pageControl小圆点,配合scrollView滚动视图移动
func loadPageControl(){ self.pageControl.center = CGPoint(x: self.width / 2, y: self.height - 30) self.pageControl.numberOfPages = 4 self.pageControl.currentPageIndicatorTintColor = UIColor.redColor() self.pageControl.pageIndicatorTintColor = UIColor.yellowColor() self.view.addSubview(self.pageControl) }
3)最后一个动态button,点击进入主页面
//#MARK: --UIScrollViewDelegate的代理方法 func scrollViewDidEndDecelerating(scrollView: UIScrollView) { let index = Int(scrollView.contentOffset.x / self.width) self.pageControl.currentPage = index if index == 3{ self.button.frame = CGRectMake(CGFloat(3) * self.width, self.height, self.width, 50) self.button.setTitle("走进Swift", forState: UIControlState.Normal) self.button.backgroundColor = UIColor.orangeColor() //不显示 self.button.alpha = 0 self.scrollView.addSubview(self.button) //UIView的动画效果 UIView.animateWithDuration(1.5, delay: 0.5, options: UIViewAnimationOptions.CurveEaseInOut, animations: { () -> Void in self.button.alpha = 1 self.button.frame = CGRectMake(CGFloat(3) * self.width, self.height - 100, self.width, 50) }, completion: nil) self.button.addTarget(self, action: "toMainViewController", forControlEvents: UIControlEvents.TouchUpInside) } }
4)判断是不是第一次登陆,如果是则出现导航页。否则,直接进入主页面。
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { self.window = UIWindow(frame: UIScreen.mainScreen().bounds) if !NSUserDefaults.standardUserDefaults().boolForKey("firstLaunch"){ NSUserDefaults.standardUserDefaults().setBool(true, forKey: "firstLaunch") NSUserDefaults.standardUserDefaults().synchronize() self.window?.rootViewController = LeadingViewController() }else{ self.window?.rootViewController = MainViewController() } self.window?.backgroundColor = UIColor.whiteColor() self.window?.makeKeyAndVisible() return true }