swift 启动页面

本文展示了如何在Swift中创建启动过渡页,包括隐藏状态栏、设置启动页窗口、添加滚动视图、页面控制器以及响应按钮点击事件。通过自定义UIWindow和UIScrollView,实现了滑动切换启动图片,并在用户点击'立即体验'按钮后淡出消失。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1/ 

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

        

        // 启动过渡页

        let allowShowStartPages = !NSUserDefaults.standardUserDefaults().boolForKey(kKeyIsFirstStartApp)

        if allowShowStartPages {

            UIApplication.sharedApplication().statusBarHidden = true // 隐藏状态栏

            let startPagesWindow = TTStartPagesWindow()

            startPagesWindow.finished = { () -> Void in

                NSUserDefaults.standardUserDefaults().setBool(true, forKey: kKeyIsFirstStartApp)

            }

        }

        return true

    }


2/

import UIKit


class TTStartPagesWindow: UIWindow ,UIScrollViewDelegate{


    var finished: (() -> Void)? // 完成的回掉

    var strongSelf: TTStartPagesWindow?


    private(set) var  pictureScrollView:UIScrollView?

    private(set) var  pageContrlolerView:UIPageControl?

    private(set) var  advertisementCurrent:NSInteger = 0


    private(set) var  enterButton:UIButton?


    private(set) var oneImageView:UIImageView!

    private(set) var twoImageView:UIImageView!

    private(set) var threeImageView:UIImageView!

    

    convenience init(){

       self.init(frame: UIScreen.mainScreen().bounds)

    }


    override init(frame: CGRect) {

        super.init(frame: frame)

        self.windowLevel = UIWindowLevelAlert + 1

        self.hidden = false


        self.buildDataAndUI()


        self.enterButton = UIButton(frame: CGRectMake(self.bounds.size.width/2 - 100, self.bounds.size.height - 84, 200, 44))

        self.enterButton!.setTitle("立即体验", forState: .Normal)

        self.enterButton?.setTitleColor(UIColor.greenColor(), forState: UIControlState.Normal)

        self.enterButton?.layer.masksToBounds = true

        self.enterButton?.layer.cornerRadius = 3

        self.enterButton?.layer.borderWidth = 1

        self.enterButton?.layer.borderColor = UIColor.orangeColor().CGColor

        self.enterButton!.backgroundColor = UIColor.whiteColor()

        self.enterButton!.addTarget(self, action: "enter", forControlEvents: .TouchUpInside)

        self.addSubview(self.enterButton!)

        

        self.strongSelf = self


    }

    required init(coder aDecoder: NSCoder) {

        fatalError("init(coder:) has not been implemented")

    }

    

    //MARK:- Delegate or DataSource

    func scrollViewDidEndDecelerating(scrollView: UIScrollView) {

        self.advertisementCurrent = NSInteger(scrollView.contentOffset.x / scrollView.bounds.size.width)

        self.pageContrlolerView?.currentPage = self.advertisementCurrent

    }

    //MARK:- NSNotification Method

    

    //MARK:- Action Method

    //MARK: 登录

    func enter() {

        UIView.animateWithDuration(0.5, animations: { () -> Void in

            self.transform = CGAffineTransformMakeScale(3.0, 3.0)

            self.alpha = 0

            }, completion: { (finished) -> Void in

                self.finished?()

                self.finished = nil

                self.strongSelf = nil

        })

    }

    //MARK:- Private Method

    private func buildDataAndUI(){

        //数据

        

        //UIScrollView

        self.pictureScrollView = UIScrollView(frame: self.bounds)

        self.pictureScrollView!.bounces = false

        self.pictureScrollView!.pagingEnabled = true

        self.pictureScrollView!.delegate = self

        self.pictureScrollView!.showsVerticalScrollIndicator = false

        self.pictureScrollView!.showsHorizontalScrollIndicator = false

        self.pictureScrollView!.userInteractionEnabled = true

        self.addSubview(self.pictureScrollView!)

        self.pictureScrollView?.backgroundColor = UIColor.whiteColor()

        self.pictureScrollView?.contentSize = CGSizeMake(self.bounds.size.width * 3, 0)

        

        var  i:NSInteger = 1

        for  i in 0...3 {

            if i == 1 {

                self.oneImageView = UIImageView(frame: CGRectMake(0, 0, self.bounds.size.width, self.bounds.size.height))

                self.oneImageView.backgroundColor = UIColor.yellowColor()

                self.pictureScrollView?.addSubview(self.oneImageView)

            }else if i == 2{

                self.twoImageView = UIImageView(frame: CGRectMake(self.bounds.size.width * CGFloat(i-1), 0, self.bounds.size.width, self.bounds.size.height))

                self.twoImageView.backgroundColor = UIColor.greenColor()

                self.pictureScrollView?.addSubview(self.twoImageView)

            } else if i == 3{

                //闪烁的星星

                self.threeImageView = UIImageView(frame: CGRectMake(self.bounds.size.width * CGFloat(i-1), 0, self.bounds.size.width, self.bounds.size.height))

                self.threeImageView.backgroundColor = UIColor.grayColor()

                self.pictureScrollView?.addSubview(self.threeImageView)

            }

            

        }

        

        //UIPageControl

        self.pageContrlolerView = UIPageControl(frame: CGRectMake(0, self.bounds.size.height - 40, self.bounds.size.width, 40))

        self.pageContrlolerView!.numberOfPages = 3

        self.pageContrlolerView!.currentPage = 0

        self.pageContrlolerView!.pageIndicatorTintColor = UIColor.grayColor()

        self.addSubview(self.pageContrlolerView!)

    }


}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值