码迷,mamicode.com
首页 > 编程语言 > 详细

Swift学习第三天之零散知识点

时间:2016-06-26 00:29:33      阅读:363      评论:0      收藏:0      [点我收藏+]

标签:

 

Swiftx学习03

1.创建对象仅仅是类名()

2.添加导航栏let nav = UINavigationController(rootViewController: home)

3.为UITabBarController添加子控制器addChildViewController或者是viewcontrollers

4. tabBar在Swift里面是UITabBarController私有的属性,所以赋值采用kvc的方式

setValue(czTabBar, forKey: "tabBar")

5. 修改系统渲染色 -- 建议大家 在程序刚启动的时候就修改

修改UITabBar的渲染色

UITabBar.appearance().tintColor = UIColor.orangeColor()

6.修改整个UITabBar的颜色UITabBar.appearance().barTintColor = UIColor.orangeColor()

7.修改navbar的选染色

UINavigationBar.appearance()tintColor = UIColor.orangeColor()

8.为 UITabBarController的子控制器添加tabbar上面的图片,以及选中图片

子控制器.tabBarItem.image

子控制器.tabBarItem.selectedImage

设置UITabBarController的tabbar以及tabbar按钮的文字仅仅是同一句代码就ok  控制器.title

9. UITabBarButton是UITabBar类里面的私有属性,并不能拿到,所以我们可以通过遍历子控件来获取

1)for subview in subviews

2) subview.isKindOfClass(NSClassFromString("UITabBarButton")!)获取到的subview即为UITabBarButton控件

10.懒加载按钮的两种写法

1>lazy var compose1Button: UIButton = UIButton(type: UIButtonType.Custom)

2>lazy var compose2Button: UIButton = {

   

        return UIButton(type: UIButtonType.Custom)

       

    }()

11.*在swift里面我们可以直接修改结构体frame的属性,而不用像oc那样

 

12.我们在写override init(frame: CGRect)方法是,通过纯代码的方式写代码,系统会自动生成

required init?(coder aDecoder: NSCoder) {

        // 人为的产生一个崩溃来提醒

        fatalError("init(coder:) has not been implemented")

    }

如果你要采用 Storboard 才创建视图的话, 需要在 初始化里填下 逻辑代码,并将上面的警告删除掉

13*创建一个新的项目时,可以删除Landacape Left以及Landacape Right默认支持的iphone手机的竖屏,添加类前缀,向下兼容两个版本,添加启动页自己appicon

14.典型的pod 文件,可以直接复制

use_frameworks!

platform :ios, ‘8.0‘

pod ‘AFNetworking‘

pod ‘SDWebImage‘

pod ‘SVProgressHUD‘

pod ‘SnapKit‘

pod ‘FMDB‘

14.创建UIWindow的典型几步

1> window = UIWindow(frame: UIScreen.mainScreen().bounds)

2> window?.rootViewController = CZTabBarViewController()

3>window?.makeKeyAndVisible()

 

15.线程休眠直接sleep(5)

16.git管理的几步

1>在服务器上创建 远程仓库     oschina里面(码云)

2> git clone 下载到本地

3>添加 忽略文件

17. pod install -- 这个安装比较慢 -> 建议大家采用  pod install --no-repo-update

18.自定义视图的三部曲:

1. 重写构造方法

2. 添加子视图和设置约束

3. 懒加载

19. 当我们切换页面的时候,动画会停止,所以为了避免基本动画不停止baseAnimation.removedOnCompletion = false

20.swift类文件是不用导入的,但是pod得三方框架是要手动导入的

21.*项目经验.图片的常态,高亮以及选中名字相同,后缀不同,方便简化代码

22.单例的三种创建方式

//单例的创建方式1

    static let sharePerson:Person = Person()

        //单例的创建的方式2(本质也是一个闭包)

        static let sharePerson1:Person = {

                let p = Person()

                return p

            }()

        //单例的创建方式3

    static let sharePerson2 = { ()->Person in

                let p = Person()

                return p

}()

23.swift支持方法的嵌套(实现部分)

24. ageLab.text = "\( p?.age ?? 0)"  后面加??的原因,p是可选可能不存在,p不存在,age肯定也不存在,但是前面是个必选的属性,所以加??保证值一定存在

25,textField监听的方法

textField.addTarget(self, action: "change", forControlEvents: UIControlEvents.EditingChanged)

26.判断textField里面是否存在文字 nameTextF.hasText()

27.swift里面只有true和false无yes  和no

28.重写模型的miao描述方法

override

    var description: String{

    let keys = ["name","age"]

return dictionaryWithValuesForKeys(keys).description}

29.代理方法在extension的里面进行实现

30. as!强转()?以及!根据前面判断

31. let indexPath = self.tableView.indexPathForSelectedRow!获取选中cell的indexPath

32.点击cell通过sb连接的,通过prepareForSegue获取目的控制器let desVc = segue.destinationViewController as!...

33.获取随机数random()%25

34.数据的赋值, 重写didSet,相当于set方法重写

var p:Person?{

             didSet{

           //自身的属性赋值

        }

    }

   35. 在闭包里面的self必须要写,因为要指明是哪个控制器

36. tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) 这句代码里返回的对象一定是一个PersonTableViewCell类型的,我们才可以使用as!,因为“cell”这个id标识的肯定是PersonTableViewCell类型的cell。但是如果这里不确定这个对象是否一定是PersonTableViewCell类型的,就得是用as?来尝试着转一下。?表示不确定,如果转不成功也不报错。但是as!如果转不成功可就崩了

Swift学习第三天之零散知识点

标签:

原文地址:http://www.cnblogs.com/chaoyueME/p/5617127.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!