Swift学习第三天之零散知识点
Posted 超越ME
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift学习第三天之零散知识点相关的知识,希望对你有一定的参考价值。
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学习第三天之零散知识点的主要内容,如果未能解决你的问题,请参考以下文章