iOS开发笔记(Swift)-通用App安装引导页的实现

之前一直做的项目都是基于OC开发的,最近开始尝试使用Swift语言来重写整个项目。

本篇文章主要是讲述如何使用Swift来实现常见的通用App安装引导界面。

 

效果预览:

 

 

实现思路:

 

主要是采用了UIScrollView作为容器,将其ContentSize的宽度设置为(引导页数量)*屏幕宽度,并将pagingEnabled设为true,隐藏滚动条。作为指示的UIPageControl与UIScrollView直接添加到self.view之上,并保存UiPageControl居于最上。

 

实现代码:

 

复制代码
import UIKit


class YSYGuideViewController: UIViewController,UIScrollViewDelegate {
    var scrollView:UIScrollView!
    var pageControl:UIPageControl!
    var startBtn:UIButton!
    

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
        loadCustomLayout()
        
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    //scrollview委托
    func scrollViewDidScroll(scrollView: UIScrollView) {
        var offset=scrollView.contentOffset
        pageControl.currentPage=Int(offset.x/Yunshouyi.SCREEN_WIDTH)
        if(pageControl.currentPage==2){
            startBtn.hidden=false
        }else{
            startBtn.hidden=true
        }
    }
    
    //载入自定义布局
    func loadCustomLayout(){
        scrollView=UIScrollView(frame: CGRectMake(0, 0, Yunshouyi.SCREEN_WIDTH, Yunshouyi.SCREEN_HEIGHT))
        scrollView.pagingEnabled=true
        scrollView.showsHorizontalScrollIndicator=false
        scrollView.showsVerticalScrollIndicator=false
        scrollView.contentSize=CGSizeMake(3*Yunshouyi.SCREEN_WIDTH, Yunshouyi.SCREEN_HEIGHT)
        for i in 1...4{
            var image=UIImage(named: "Guideline-\(i)")
            var imageView=UIImageView(image: image)
            imageView.frame=CGRectMake(CGFloat((i-1))*Yunshouyi.SCREEN_WIDTH, 0, Yunshouyi.SCREEN_WIDTH, Yunshouyi.SCREEN_HEIGHT)
            imageView.contentMode = UIViewContentMode.ScaleToFill
            scrollView.addSubview(imageView)
            
        }
        pageControl=UIPageControl(frame: CGRectMake(Yunshouyi.SCREEN_WIDTH/2-100, Yunshouyi.SCREEN_HEIGHT-100, 200, 100))
        startBtn=UIButton(frame: CGRectMake(Yunshouyi.SCREEN_WIDTH/2-60, Yunshouyi.SCREEN_HEIGHT/2+50, 120, 35))
        
        pageControl.numberOfPages=3;
        pageControl.currentPage=0
        
        startBtn.setTitle("马上体验", forState: UIControlState.Normal)
        startBtn.setBackgroundImage(UIImage(named: "StartButton"), forState: UIControlState.Normal)
        startBtn.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal)
        startBtn.addTarget(self, action: "guideOver", forControlEvents: UIControlEvents.TouchUpInside)
        startBtn.hidden=true
        
        
        scrollView.bounces=false
        scrollView.delegate=self
        self.view.addSubview(scrollView)
        self.view.addSubview(pageControl)
        self.view.addSubview(startBtn)
        
    }
    
    //开始使用app
    func guideOver(){
        var mainVC=UINavigationController(rootViewController: UITableViewController())
        self.presentViewController(mainVC, animated: true, completion: nil)
        
    }

    
    override func prefersStatusBarHidden() -> Bool {
     return true
    }
    

}
复制代码

 

 

 

posted @   msp的昌伟哥哥  阅读(2661)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示