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 } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?