swift3.0的一些知识

swift3.0的一些知识,第1张

概述相关知识点: 修改项目名称两种方式 1.Bundle name  2.Bundle display name  try 三种处理异常的方式 1 2 3 4 5 6 7 8 9 10 1 相关知识点:
修改项目名称两种方式

1.Bundle name
2.Bundle display name


try三种处理异常的方式
              1        2        3        4        5        6        7        8        9        10        11        12        13        14        15        16                    1        2        3        4        5        6        7        8        9        10        11        12        13        14        15        16      // 在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!方法(不建议,非常危险) 直接告诉系统,该方法没有异常.注意:如果该方法出现了异常,那么程序会报错(崩溃)     try!NSJsONSerialization.JsONObjectWithData(JsonData,options: .MutableContainers)

封装Tabbar创建自控制器
        1        2        3        4        5        6        7        8        9        10        11        12        13        14        15        16        17        18        19                    1        2        3        4        5        6        7        8        9        10        11        12        13        14        15        16        17        18        19      //调用封装方法    addChildVIEwController(LXRHomeVIEwController(),Title: "首页",imagename: "tabbar_home")    addChildVIEwController(LXRMessageVIEwController(),0); Box-sizing: border-Box;">"消息",0); Box-sizing: border-Box;">"tabbar_message_center")    addChildVIEwController(LXRdiscoverVIEwController(),0); Box-sizing: border-Box;">"发现",0); Box-sizing: border-Box;">"tabbar_discover")    addChildVIEwController(LXRProfileVIEwController(),0); Box-sizing: border-Box;">"我",0); Box-sizing: border-Box;">"tabbar_profile")  // Swift支持方法的重改:方法名称相同.但是参数类型和个数不同// private在当前文件中可以访问,其他文件不能访问// swift3.0 private建议修改为fileprivate    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)    }

根据Json文件,通过字符串获取数据
        1        2        3        4        5        6        7        8        9        10        11        12        13        14        15        16        17        18        19        20        21        22        23        24        25        26        27        28        29        30        31        32        33        34        35        36        37        38        39        40        41        42        43        44        45        46        47        48        49        50        51        52        53        54        55        56        57        58        59        60        61        62        63        64        65        66        67        68        69        70                    1        2        3        4        5        6        7        8        9        10        11        12        13        14        15        16        17        18        19        20        21        22        23        24        25        26        27        28        29        30        31        32        33        34        35        36        37        38        39        40        41        42        43        44        45        46        47        48        49        50        51        52        53        54        55        56        57        58        59        60        61        62        63        64        65        66        67        68        69        70      //1.获取JsON文件路径guard let JsonPath = Bundle.main.path(forResource: "MainVCSettings.Json",ofType: nil) else {    LXRLog(message: "没有获取到对应的文件路径")    return}//2.读取Json文件中的内容guard let JsonData = try? Data(contentsOf: URL(fileURLWithPath: JsonPath)) "没有获取到Json文件中数据")    //3.将Data转成数组guard  try? JsONSerialization.JsonObject(with: JsonData,options: .mutableContainers) else {    return}guard let dictArray = anyObject as? [[String : AnyObject]] else{    //4.遍历字典,获取对应的信息for dict in dictArray{    //4.1获取控制器的对应的字符串    guard let Vcname = dict["vcname"] as? String continue    }    //4.2获取控制器显示的Title    guard let Title = dict["Title"] //4.3获取控制器显示的图标名称    guard let imagename = dict["imagename"] continue    }               //4.4添加自控制器    addChildVIEwController(Vcname,Title: Title,imagename: imagename)}/**************************************************/private func addChildVIEwController(_ childVcname: String,imagename : String) {     //0.获得命名空间    guard let nameSpace = (Bundle.main.infoDictionary!["CFBundleExecutable"] as? String)  else {        LXRLog(message: "没有获取命名空间")        return    }     //1.根据字符创获取对应的Class    guard let ChildVcclass = NSClassFromString(nameSpace + "." + childVcname)  "没有获取到字符创对应的Class")        return    }        // 2.将对应的AnyObject转成控制器的类型    guard let childVcType = ChildVcclass as? UIVIEwController.Type "没有获取对应控制器的类型")        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)}

代码创建Window
        1        2        3        4                    1        2        3        4      // 1.创建Window  UIScreen.main.bounds屏幕尺寸window = UIWindow(frame: UIScreen.bounds)window?.rootVIEwController = LXRMainTabbarController()window?.makeKeyAndVisible()

便利(convenIEnce)构造函数

便利构造函数通常用在对系统的类进行构造函数的扩充时使用

便利(convenIEnce)构造函数的特点:

1.便利构造函数通常都是写在 extension 里面
2.便利构造函数init前面加上 convenIEnce
3.在便利构造函数中需要调用self.init()


Selector参数两种写法:
1.Selector(“方法名”)
2.”方法名”
3.swift3.0版本#selector(类名.方法名)
事件监听本质:
1.将方法包装成@SEL->类中查找方法列表->根据@SEL找到imp指针(函数指针)->执行函数
2.注意:swift中将一个函数声明成fileprivate,那么该函数不会被添加到方法列表中
3.如果在fileprivate前面加上@objc,那么该方法仍然会被添加到方法列表中


Swift限定作用域访问级别
swift 3.0 之前,swift 提供3种不同的访问级别
1.public(公开)
2.internal(内部)–>系统默认
3.private(私用)
swift 3.0private 将会被重新命名为 fileprivate
public(公开)
internal(内部)
fileprivate文件内私有)
4.private(私有)

设置图片拉伸
d簧动画效果
        1        2        3        4        5        6        7        8        9        10                    1        2        3        4        5        6        7        8        9        10      /** * Duration: 持续时间 * delay: 延迟 * damPing: 阻力系数(0~1),越大效果越不明显 * VeLocity: 速度 * options: 速度枚举 * animations: 动画 * completion: 完成 */ UIVIEw.animate(withDuration: TimeInterval,delay: TimeInterval,usingSpringWithdamPing: CGfloat,initialSpringVeLocity: CGfloat,options: UIVIEwAnimationoptions,animations: () -> VoID,completion: ((Bool) -> VoID)?((Bool) -> VoID)?(Bool) -> VoID)

Swift中??的作用
1.如果??前面的可选类型有值,那么将前面的可选类型进行解包并且赋值.
2.如果??前面的可选类型为nil,那么直接使用??后面的值.
        1                    1      let iconVIEwUrl = LXRAccountTool.shareInstance.account?.avatar_large ?? ""
self使用场景
注意: 两个地方需要使用self
1>如果在一个函数中出现歧义.
2>在闭包中使用当前对象的属性和方法也需要使用self

动态设置tableVIEwCell高
必须实现的两个设置!!!
1.设置自动尺寸 2.设置估算高度
        1        2        3        4        5                    1        2        3        4        5      ///5.设置行高//自动尺寸self.tableVIEw.rowHeight = UItableVIEwautomaticDimension //估算高度self.tableVIEw.estimatedRowHeight = 200

storyBoard快捷键
约束控件更新布局->快捷键
cmd+option(alt)+=
图片真实大小显示->快捷键
cmd+=

获取控件最大X.Y值
        1        2        3        4      // 获取maxX->控件+frame+maxXpicCollectionVIEw.frame.maxX// 获取maxY->控件+frame+maxYpicCollectionVIEw.maxY

监听键盘通知
1.添加通知

@H_301_1002@2.键盘通知实现方法

3.打印信息

总结

以上是内存溢出为你收集整理的swift3.0的一些知识全部内容,希望文章能够帮你解决swift3.0的一些知识所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1067731.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存