www.2527.com_澳门新葡8455手机版_新京葡娱乐场网址_
做最好的网站

Swift开源项目,启动引导页

2019-09-17 02:13 来源:未知

图片 1Simulator Screen Shot 2016年3月23日 下午5.39.15.png图片 2搬砖累,心更累

单糖——良品生活指南:家居零食、礼物美妆、海淘购物

版本记录

使用:注意逻辑关系,有些视图存在依赖关系

感兴趣的朋友可以去 app store 下载

版本号 时间
V1.0 2017.08.01
SwiftIntroView.swift
import UIKit// 代理protocol SwiftIntroViewDelegate:AnyObject { func doneButtonClick()}class SwiftIntroView: UIView, UIScrollViewDelegate { var scrollView: UIScrollView! var pageControl: UIPageControl! var doneButton: UIButton! var view1: UIImageView! var view2: UIImageView! var view3: UIImageView! var view4: UIImageView! var delegate: SwiftIntroViewDelegate? override init(frame: CGRect) { super.init(frame: frame) //注意逻辑关系,有些视图依赖前一个视图而存在 self.initScrollView() self.initPageViews() self.initPageControl() self.initDoneButton() } //初始化 scrollView func initScrollView() { scrollView = UIScrollView(frame: self.frame) scrollView.delegate = self scrollView.pagingEnabled = true scrollView.contentSize = CGSize(width: self.frame.size.width * 4, height: scrollView.frame.size.height) scrollView.contentOffset = CGPoint(x: 0, y: 0) self.addSubview(scrollView) } //初始化页面视图 - 可根据需要自己增加控件 func initPageViews() { let originW = self.frame.size.width view1 = UIImageView(frame: self.frame) view1.frame.origin.x = originW * 0 view2 = UIImageView(frame: self.frame) view2.frame.origin.x = originW * 1 view3 = UIImageView(frame: self.frame) view3.frame.origin.x = originW * 2 view4 = UIImageView(frame: self.frame) view4.frame.origin.x = originW * 3 view1.image = UIImage(named: "imageName1") view2.image = UIImage(named: "imageName2") view3.image = UIImage(named: "imageName3") view4.image = UIImage(named: "imageName4") self.scrollView.addSubview self.scrollView.addSubview self.scrollView.addSubview self.scrollView.addSubview } //初始化 pageControl func initPageControl() { pageControl = UIPageControl(frame: CGRect(x: 0, y: self.frame.size.height - 80, width: self.frame.size.width, height: 10)) pageControl.currentPageIndicatorTintColor = UIColor(red: 33/255, green: 150/255, blue: 243/255, alpha: 0.8) pageControl.numberOfPages = 4 self.addSubview(pageControl) } //初始化 DoneButton func initDoneButton() { doneButton = UIButton(frame: CGRect(x: 0, y: self.frame.size.height - 60, width: self.frame.size.width, height: 60)) doneButton.setTitle("跳过", forState: .Normal) doneButton.titleLabel?.font = UIFont.systemFontOfSize doneButton.backgroundColor = UIColor(red: 33/255, green: 150/255, blue: 243/255, alpha: 0.5) //增加点击事件并交给代理去完成 doneButton.addTarget(self.delegate, action: "doneButtonClick", forControlEvents: .TouchUpInside) self.addSubview(doneButton) } //实现 UIScrollViewDelegate 方法 func scrollViewDidScroll(scrollView: UIScrollView) { let pageWidth = self.frame.width let pageFraction = self.scrollView.contentOffset.x / pageWidth self.pageControl.currentPage = Int(roundf(Float(pageFraction))) } required init?(coder aDecoder: NSCoder) { fatalError("init has not been implemented") }}

iOS 版下载地址


说明
本程序仅供学习交流,不可用于任何商业用途。

前言

我是swift2.0的时候开始接触的,记得那时候还不是很稳定,公司的项目也都是用oc做的,并不对swift很重视,我自己学了一段时间,到现在swift3.0 已经出来了,自己平时也不写,忘记的也差不多了,正好项目这段时间已经上线了,不是很忙,我就可以每天总结一点了,希望对自己对大家有所帮助。在总结的时候我会对比oc进行说明,有代码的我会给出相关比对代码。
1. swift简单总结(一)—— 数据简单值和类型转换
2. swift简单总结(二)—— 简单值和控制流
3. swift简单总结(三)—— 循环控制和函数
4. swift简单总结(四)—— 函数和类
5. swift简单总结(五)—— 枚举和结构体
6. swift简单总结(六)—— 协议扩展与泛型
7. swift简单总结(七)—— 数据类型
8. swift简单总结(八)—— 别名、布尔值与元组
9. swift简单总结(九)—— 可选值和断言
10. swift简单总结(十)—— 运算符
11. swift简单总结(十一)—— 字符串和字符
12. swift简单总结(十二)—— 集合类型之数组
13. swift简单总结(十三)—— 集合类型之字典
14. swift简单总结(十四)—— 控制流
15. swift简单总结(十五)—— 控制转移语句
16. swift简单总结(十六)—— 函数
17. swift简单总结(十七)—— 闭包(Closures)
18. swift简单总结(十八)—— 枚举
19. swift简单总结(十九)—— 类和结构体
20. swift简单总结(二十)—— 属性
21. swift简单总结(二十一)—— 方法
22. swift简单总结(二十二)—— 下标脚本
23. swift简单总结(二十三)—— 继承
24. swift简单总结(二十四)—— 构造过程
25. swift简单总结(二十五)—— 构造过程
26. swift简单总结(二十六)—— 析构过程
27. swift简单总结(二十七)—— 自动引用计数
28. swift简单总结(二十八)—— 可选链
29. swift简单总结(二十九)—— 类型转换

ViewController.swift
import UIKitclass ViewController: UIViewController, SwiftIntroViewDelegate { var introView: SwiftIntroView! override func viewDidLoad() { super.viewDidLoad() introView = SwiftIntroView(frame: self.view.frame) introView.delegate = self introView.backgroundColor = UIColor(red: 33/255, green: 150/255, blue: 243/255, alpha: 1) self.view.addSubview(introView) } // SwiftIntroViewDelegate 方法 func doneButtonClick() { UIView.animateWithDuration(1, delay: 0, options: .CurveEaseInOut, animations: { () -> Void in self.introView.alpha = 0 }) {  -> Void in self.introView.removeFromSuperview() self.createdMainView() } } func createdMainView () { let dragView = UIImageView(frame: self.view.frame) dragView.image = UIImage(named: "imageName") dragView.alpha = 0 view.addSubview UIView.animateWithDuration(2, delay: 0, options: .CurveEaseInOut, animations: { () -> Void in dragView.alpha = 1 }) {  -> Void in } }}

如果想加入只在用户第一次启动时候显示,可更改上面 viewDidLoad 里面的代码为:

 let userDefaults = NSUserDefaults.standardUserDefaults() if userDefaults.valueForKey("showIntroView") == nil { userDefaults.setValue("showView", forKey: "showIntroView") introView = SwiftIntroView(frame: self.view.frame) introView.delegate = self introView.backgroundColor = UIColor(red: 33/255, green: 150/255, blue: 243/255, alpha: 1) self.view.addSubview(introView) } else { createdDragView() }

说明

因为公司使用的是 Objective-C 开发 app,没有使用 swift 来开发,所以决定自己研究 Swift,研究 Swift 的时间不长,对于 Swift 的基本语法有了大致的了解,但是对有些概念和语法还是理解的不深,所以决定模仿一些已经发布的 app,一方面可以让自己更好地理解和使用 Swift,另一方面可以和志同道合的人一起交流,共同进步。

使用 Swift 模仿的第一个 app 是单糖,总体来说界面搭建还算简单,而且结构不是很复杂,本次项目完成了大部分界面,对于项目中的数据接口都是通过 Charles 抓包获得,基本每个界面都是有数据请求,不会抓包的朋友可以看我 这一篇文章。

项目中有的地方代码写的不是很简洁,毕竟自己能力有限,对 Swift 使用不是很熟练,还请各位朋友不喜勿喷。在本文的最后,有项目的完整源码,喜欢的朋友可以下载下来,如果您感觉我写的代码对您有所帮助,还请在 github 给个 star,非常感谢您的支持!~

嵌套类型

枚举类型常被用于实现特定类或结构体的功能,也能够在多种变量类型的环境中,方便地定义通用类或结构体来使用,为了实现这种功能,swift允许你定义嵌套类型,可以在枚举类型、类和结构体中定义支持嵌套的类型。

将从下面几个方面进行说明。

  • 嵌套类型实例
  • 嵌套类型的引用

项目截图

图片 3

单糖

图片 4

首页

图片 5

单品

图片 6

单品详情

图片 7

攻略详情

图片 8

图文介绍

图片 9

评论

图片 10

分享

图片 11

分类

图片 12

搜索

图片 13

图片 14

设置

嵌套类型实例

struct BlackjackCard {

    //嵌套定义枚举型Suit
    enum Suit : Character {
        case Spades = "♠", Hearts = "♥", Diamonds = "□", Clubs = "♣"
    }

    //嵌套定义枚举型Rank
    enum Rank : Int {
        case Two = 2, Three, Four, Five, Six, Seven, Eight, Nine, Ten
        case Jack, Queen, King, Ace
        struct Values {
            let first : Int, second : Int?
        }
        var values : Values{
            switch self {
            case .Ace:
                return Values(first: 1, second: 11)
            case .Jack, .Queen, .King:
                return Values(first: 10, second: nil)
            default:
                return Values(first: self.rawValue, second: nil)
            }
        }
    }
}

枚举型的Suit用来描述扑克牌的四种花色,枚举值Rank用来描述扑克牌啥的13张牌,并且分别用一个Int类型的值表示牌的面值。

我们在别的类中调用就可以实现实例。


项目环境

项目使用 cocoapods 来管理第三方库,所以需要安装 cocoapods,安装方式网上有很多教程,这里不在详述。运行项目的前,请确保安装了 cocoapods,否则可能会出现错误。

  • Xcode 8.2.1
  • Swift 3.0
  • iOS 8.0

使用到的第三方库:

  • SwiftyJSON - 解析 JSON 数据
  • SnapKit - 设置约束
  • Kingfisher - 缓存图片
  • SVProgressHUD - 提示框
  • FDFullscreenPopGesture - 侧滑手势
  • Alamofire - 网络请求

嵌套类型的引用

在外部对嵌套类型的引用,以被嵌套类型的名字为前缀,加上所要引用的属性名,下面看一下代码。

let heartsSymbol = BlackjackCard.Suit.Hearts.rawValue
print(heartsSymbol)

下面看输出结果

这个应该还算好理解吧。

项目结构

图片 15

项目结构

由于刚接触 Swift,以及对 MVVM 的理解的不深,所以没有使用 MVVM 设计模式,项目使用传统的 MVC 设计模式。

项目中只在首页加入了下拉刷新功能,其他界面未加入上拉和下拉刷新功能,后面有时间会完善。

下面是项目的完整结构

  • 首页(单糖)
    • Model
      • YMChannel.swift
      • YMHomeItem.swift
      • YMSearchResult.swift
    • View
      • YMHomeCell.swift
      • YMHomeCell.xib
      • YMRefreshControl.swift
      • YMRefreshView.swift
      • YMRefreshView.xib
      • YMSearchRecordView.swift
      • YMSortCell.swift
      • YMSortCell.xib
      • YMSortTableView.swift
    • Controller
      • YMDanTangViewController.swift
      • YMTopicViewController.swift
      • YMDetailViewController.swift
      • YMSearchViewController.swift
  • Product(单品)
    • Model
      • YMProduct.swift
      • YMProductDetail.swift
      • YMComment.swift
    • View
      • YMActionSheet.swift
      • YMCollectionViewCell.swift
      • YMCollectionViewCell.xib
      • YMDetailChoiceButtonView.swift
      • YMDetailChoiceButtonView.xib
      • YMDetailCollectionViewCell.swift
      • YMDetailCollectionViewCell.xib
      • YMProductDetailBottomView.swift
      • YMProductDetailToolBar.swift
      • YMProductDetailToolBar.xib
      • YMProductDetailTopView.swift
      • YMShareButtonView.swift
      • YMDetailScrollView.swift
      • YMCommentCell.swift
      • YMCommentCell.xib
    • Controller
      • YMProductViewController.swift
      • YMProductDetailViewController.swift
      • YMTMALLViewController.swift
      • YMTMALLViewController.xib
  • Classify(分类)
    • Model
      • YMCollection.swift
      • YMCollectionPost.swift
      • YMGroup.swift
    • View
      • YMCategoryBottomView.swift
      • YMCategoryCollectionViewCell.swift
      • YMCategoryCollectionViewCell.xib
      • YMCollectionTableViewCell.swift
      • YMCollectionTableViewCell.xib
      • YMSeeAllTopicCell.swift
      • YMSeeAllTopicCell.xib
      • YMTopHeaderView.swift
      • YMTopHeaderView.xib
      • YMVerticalButton.swift
    • Controller
      • YMCategoryHeaderViewController.swift
      • YMCategoryViewController.swift
      • YMCollectionDetailController.swift
      • YMCollectionDetailController.xib
      • YMPostDetailViewController.swift
      • YMPostDetailViewController.xib
      • YMSeeAllController.swift
      • YMSeeAllController.xib
  • Me(我)
    • Model
      • YMSetting.swift
    • View
      • YMMeChoiceView.swift
      • YMMeFooterView.swift
      • YMMineHeaderView.swift
      • YMSettingCell.swift
      • YMSettingCell.xib
    • Controller
      • YMMessageViewController.swift
      • YMMeViewController.swift
      • YMSettingViewController.swift
  • Login&Register(登录和注册)
    • Controller
      • YMLoginViewController.swift
      • YMLoginViewController.xib
      • YMRegisterViewController.swift
      • YMRegisterViewController.xib
      • YMNewfeatureViewController.swift
  • Main(主要)
    • Category
      • String Extension.swift
      • UITableView EmptyData.swift
      • UIView Extension.swift
    • Controller
      • YMBaseViewController.swift
      • YMNavigationController.swift
      • YMTabBarController.swift
    • Tools
      • YMConst.swift
      • YMNetworkTool.swift

后记

未完,待续~~~

图片 16

红似火

项目文档和数据接口

抓取的数据接口请看 单糖数据接口 和 单糖数据接口详细数据。

下载项目之后,点击此处,查看项目文档 项目文档 或者直接打开文件目录 『docs/index.html』。

运行项目出现的问题都可以给我留言或者直接加我的 QQ 联系,我会尽快回复。

github下载地址

喜欢的朋友希望可以给个 Star,十分感谢您的支持!~

TAG标签:
版权声明:本文由澳门新葡8455手机版发布于计算机编程,转载请注明出处:Swift开源项目,启动引导页