Swift纯代码构建项目框架

Swift纯代码构建项目框架 (简单的一个搭建项目的框架结构)

AppDelegate.swift中代码 (主要是设置根控制器)

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?

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

    // 设置全局颜色
    UITabBar.appearance().tintColor = UIColor.orangeColor()

    // 创建window
    window = UIWindow(frame: UIScreen.mainScreen().bounds)
    //  设置根控制器
    window?.rootViewController = MainViewController()
    window?.makeKeyAndVisible()

    return true
}
}

MainViewController.swift 代码(设置Tabbar)类似微博 HomeViewController()都是控制器

import UIKit

class MainViewController: UITabBarController {

override func viewDidLoad() {
    super.viewDidLoad()

    addChildViewController(HomeViewController(), title: "首页", imageName: "tabbar_home")
    addChildViewController(MessageViewController(), title: "消息", imageName: "tabbar_message_center")
    addChildViewController(DiscoverViewController(), title: "发现", imageName: "tabbar_discover")
    addChildViewController(ProfileViewController(), title: "我", imageName: "tabbar_profile")
}

// swift支持方法的重载
// 方法的重载:方法名称相同,但是参数不同. --> 1.参数的类型不同 2.参数的个数不同
// private在当前文件中可以访问,但是其他文件不能访问
private func addChildViewController(childVc: UIViewController, title : String, imageName : String) {

    // 1.设置子控制器的属性
    childVc.title = title
    childVc.tabBarItem.image = UIImage(named: imageName)
    childVc.tabBarItem.selectedImage = UIImage(named: imageName + "_highlighted")

    // 2.包装导航栏控制器
    let childNav = UINavigationController(rootViewController: childVc)

    // 3.添加控制器
    addChildViewController(childNav)
}
}

MainViewController.swift 另一种方法 使用json格式的文件 MainViewController.swift

这样的好处是可以在服务器动态生成Tabbar的样式 我现在用的是本地的json文件 主要是要有这样的思想
json格式的文件里面的样式:
[
{
"vcName": "HomeViewController",
"title": "首页",
"imageName": "tabbar_home"
},
{
 "vcName": "MessageViewController",
 "title": "消息",
 "imageName": "tabbar_message_center"
},
{
 "vcName": "DiscoverViewController",
 "title": "广场",
 "imageName": "tabbar_discover"
},
{
 "vcName": "ProfileViewController",
 "title": "我",
 "imageName": "tabbar_profile"
}
]


 //MainViewController.swift 代码
 import UIKit

class MainViewController: UITabBarController {

override func viewDidLoad() {
    super.viewDidLoad()

    // 1.获取json文件路径
    guard let jsonPath = NSBundle.mainBundle().pathForResource("MainVCSettings.json", ofType: nil) else {
        print("没有获取到对应的文件路径")
        return
    }

    // 2.读取json文件中的内容
    guard let jsonData = NSData(contentsOfFile: jsonPath) else {
        print("没有获取到json文件中数据")
        return
    }

    // 3.将Data转成数组
    // 如果在调用系统某一个方法时,该方法最后有一个throws.说明该方法会抛出异常.如果一个方法会抛出异常,那么需要对该异常进行处理
    /*
     在swift中提供三种处理异常的方式
        方式一:try方式 程序员手动捕捉异常
            do {
                try NSJSONSerialization.JSONObjectWithData(jsonData, options: .MutableContainers)
            } catch {
                // error异常的对象
                print(error)
            }

        方式二:try?方式(常用方式) 系统帮助我们处理异常,如果该方法出现了异常,则该方法返回nil.如果没有异常,则返回对应的对象
            guard let anyObject = try? NSJSONSerialization.JSONObjectWithData(jsonData, options: .MutableContainers) else {
                return
            }

        方式三:try!方法(不建议,非常危险) 直接告诉系统,该方法没有异常.注意:如果该方法出现了异常,那么程序会报错(崩溃)
            let anyObject = try! NSJSONSerialization.JSONObjectWithData(jsonData, options: .MutableContainers)
     */

    guard let anyObject = try? NSJSONSerialization.JSONObjectWithData(jsonData, options: .MutableContainers) else {
        return
    }

    guard let dictArray = anyObject as? [[String : AnyObject]] else {
        return
    }

    // 4.遍历字典,获取对应的信息
    for dict in dictArray {
        // 4.1.获取控制器的对应的字符串
        guard let vcName = dict["vcName"] as? String else {
            continue
        }

        // 4.2.获取控制器显示的title
        guard let title = dict["title"] as? String else {
            continue
        }

        // 4.3.获取控制器显示的图标名称
        guard let imageName = dict["imageName"] as? String else {
            continue
        }

        // 4.4.添加子控制器
        addChildViewController(vcName, title: title, imageName: imageName)
    }
}

private func addChildViewController(childVcName: String, title : String, imageName : String) {

    // 0.获取命名空间
    guard let nameSpace = NSBundle.mainBundle().infoDictionary!["CFBundleExecutable"] as? String else {
        print("没有获取命名空间")
        return
    }

    // 1.根据字符串获取对应的Class
    guard let ChildVcClass = NSClassFromString(nameSpace + "." + childVcName) else {
        print("没有获取到字符串对应的Class")
        return
    }

    // 2.将对应的AnyObject转成控制器的类型
    guard let childVcType = ChildVcClass as? UIViewController.Type else {
        print("没有获取对应控制器的类型")
        return
    }

    // 3.创建对应的控制器对象
    let childVc = childVcType.init()

    // 4.设置子控制器的属性
    childVc.title = title
    childVc.tabBarItem.image = UIImage(named: imageName)
    childVc.tabBarItem.selectedImage = UIImage(named: imageName + "_highlighted")

    // 5.包装导航栏控制器
    let childNav = UINavigationController(rootViewController: childVc)

    // 6.添加控制器
    addChildViewController(childNav)
}

}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Swift项目底层框架可以被称为"万能",是因为它提供了广泛且强大的功能,适用于各种不同类型的应用程序开发。以下是一些Swift项目底层框架的特点和功能: 1. Foundation框架:Foundation框架Swift项目底层框架的核心,提供了许多基本的数据类型、集合和操作,还包括日期和时间处理、文件操作、网络通信等功能。这些功能使得开发者能够更轻松地处理常见的编程任务。 2. UIKit框架UIKit框架构建iOS应用程序界面的核心框架,提供了丰富的视图控件、图形绘制、动画效果等。使用UIKit框架,开发者可以快速创建用户友好的界面,并与用户进行交互。 3. Core Data框架:Core Data框架是苹果提供的对象图管理和持久化框架,用于管理应用程序的数据模型。它通过对象关系映射(ORM)技术将数据存储到数据库中,并提供了查询、排序、过滤等功能。开发者可以使用Core Data框架轻松地处理数据的创建、读取、更新和删除操作。 4. Core Animation框架:Core Animation框架是处理动画效果的底层框架,提供了高性能的动画渲染引擎。通过Core Animation框架,开发者可以实现平滑的动画效果,并对视图进行缩放、旋转、渐变等变换操作。 5. XCTest框架:XCTest框架是苹果提供的用于编写和执行单元测试的框架。开发者可以使用XCTest框架测试代码的正确性和可靠性,确保应用程序的质量和稳定性。 总结起来,Swift项目底层框架提供了丰富的功能和工具,使开发者能够更轻松地构建高性能、用户友好的应用程序。无论是处理数据、绘制界面、实现动画还是进行单元测试,Swift项目底层框架都能满足开发者的需求,并帮助他们快速有效地完成项目开发。 ### 回答2: Swift 是一种适用于开发 iOS、macOS、watchOS 和 tvOS 应用程序的多用途编程语言。它具有基于安全性和可靠性的设计,同时也是一门高效、现代化和易于学习的语言。在 Swift 的底层,有许多重要的框架和库,以帮助开发人员构建强大和功能丰富的应用程序。 其中最重要和常用的一个底层框架UIKit。它是一个用户界面框架,为开发 iOS 和 tvOS 应用程序提供了一套丰富的界面组件和工具。UIKit 提供了诸如按钮、标签、图像视图和表视图等各种界面元素,以及用于布局、动画和用户交互的功能。它还提供了许多管理应用程序生命周期、处理用户输入和响应系统事件的类和方法。 另一个重要的底层框架是 Foundation。它是一个原生的、跨平台的框架,为开发 macOS、iOS、watchOS 和 tvOS 应用程序提供了核心功能和服务。Foundation 包含了一系列核心类,用于处理基本数据类型、日期和时间、文件和目录操作、网络通信等任务。此外,Foundation 还提供了国际化和本地化支持,包括字符串本地化、货币和日期格式化等。 除了 UIKit 和 Foundation,Swift 还支持许多其他底层框架,如 Core Data、Core Animation、Core Graphics 等。这些框架提供了底层的图形处理、动画、数据库和计算功能,以及其他与应用程序开发相关的功能和服务。 总之,Swift 项目的底层框架在许多方面扮演着重要的角色,提供了丰富的工具和功能,帮助开发人员构建出高效、现代化和可靠的应用程序。这些底层框架涵盖了用户界面、数据处理、网络通信、图形处理等方面,为开发人员提供了丰富的选择和灵活性。 ### 回答3: Swift是一种高级、安全和易读的编程语言,可以用于开发iOS、macOS、watchOS和tvOS应用程序。它的底层框架包括以下几个方面: 1. Objective-C 运行时框架Swift利用Objective-C运行时框架来实现与Objective-C语言的互操作性。这包括使用Objective-C的类、方法和属性等,以便在Swift代码中调用和使用。 2. Foundation框架:Foundation是一个核心框架,提供了许多基本类和功能,可以用于开发各种应用程序。它包括字符串处理、集合和数据结构、文件操作、网络通信、日期和时间处理等功能。Foundation框架Swift项目中常用的框架之一。 3. UIKit框架UIKit是一个用户界面框架,用于开发iOS应用程序。它提供了一系列视图、控制器、布局和动画等功能,可以创建各种用户界面元素。UIKit框架Swift项目中创建用户界面的主要框架之一。 4. Core Data框架:Core Data是一个持久化框架,用于管理应用程序的对象模型和存储。它提供了高效的数据管理和查询功能,并支持数据模型的版本控制和迁移。Core Data框架可以帮助Swift项目实现数据持久化的需求。 5. AVFoundation框架:AVFoundation是一个多媒体框架,用于处理音频、视频和图像等媒体数据。它提供了音频和视频播放、录制和编辑等功能,支持多种媒体格式。AVFoundation框架可以在Swift项目中实现丰富的多媒体功能。 以上几个底层框架Swift项目中常用和重要的框架之一。通过利用这些框架,开发人员可以更方便地实现各种功能,提高开发效率,并提供更好的用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值