第一周实训

大三上半年实训

第一周实训基础知识,以及UIview控件的使用

  • 基础知识
  • 1.自动类型推断
//自动类型推断  var定义变量
var str = "Hello, playground"

// 定义一个常量(不能修改的量)
let name = "Hello, playground"
//数据类型字符串
let name1:String = "Lanou"
//字符
let gender:Character = "M"
//整形
let age1:Int = 12
//单精度浮点型
let height:Float = 12.2
//双精度浮点型
let height1:Double = 22.22
//字符串//长度
let length = name.characters.count
//拼接  let name3 = name+"pin\(123)jie"
var name3 = name+"pinjie"
//打印
print("name=\(name3)")
  • 字符串插入第几个位置的偏移量

var index = name3.index(name3.startindex,offsetBy:2)
name3.insert(contentOf:"charu".character,at:index)

2.遍历

for item in name3.characters{

} 

3.切割

let school1 = "jiningshifan"
let index1 = school.index(school.startIndex,offsetBy:2)
let newschool = school.subString(to:index1)

4.定义一个数组

var arr = [1,2,3]
var arr1 : [Int] = [Int]()

5.遍历一个数组

for(index,item)in arr.enumerated(){
}

6.添加,删除 ,更新,输出 数组元素

arr1.append(2)
let element = arr1.remove(at:0)
arr[1] = 22
print(arr)

7.字典初始化,定义一个空字典.添加,更新,移除

var dic:[Int:Int] = [1:1,2:2]
var dic:[Int:Int] = [Int:Int]()
//添加
dic[3] = 3
//更新
dic[1] = 1
//移除
dic1.removeValue(forkey:1)

8.字符串的范围rang

let student = "zhauangzhiying"
let startindex = student.index(student.startIndex,offsetBy:2)
let endIndex = student.index(student.endindex,offsetBy:-2)
let rang = startIndex..<endIndex;student.subString(with:rang)

9.字典遍历

for item in dic.keys{
}

第二天

  • 1 结构体 ,字符串,析构函数,初始化方法
class Student:NSObject{
    var name:String?
    var age:Int?
    var gender:Bool?
    //override重写父类
    override init(){//初始化方法
        print("创建一个学生对象")
    }
    init(age:Int ,gender:Bool,name:String){
    super.init()
    self.age = age
    self.gender = gender
    self.name = name
    }
    //析构函数
    deinit {
        
        print("对象释放")
        
    }

   }
//初始化构造方法
var stu:Student = Student(age:123,gender:false,name: "123")
print("stu.name = \(stu.name) stu.gender = \(stu.gender) stu.age = \(stu.age)")


2.类,计算属性,lazy属性,用的时候创建

//类
class Person:NSObject
{
    var age:Int?//存储属性
    var name:String?//存储属性
   //计算属性
    var fatherAge : Int {
        set {//newValue是默认的
            self.age = newValue-20
        }
        get {
            return self.age! + 20
            
        }
        
    }
    
    //lazy 属性,用的时候创建
    lazy var st:Student = Student()
   //函数
    //方法的调用
    func eat(){
        print("吃饭")
    }
    //类名调用
    class func happy(){
        print("happy")
    }
    //静态不可继承
    static func study(){
        print("学习")
    }
    //类属性
    
    static var fatherName:String?
}
    var p : Person = Person()
    print(p.st)
    

//结构体与类区别
//1⃣️结构体不可继承
//结构体是值类型,
//类是引用类型

    struct Dog {
        var name:String?
    }
    var dog :Dog = Dog()
    p.name = "张三"
    dog.name="旺财"
    var p1 = p
    var dog1 = dog
    p1.name = "李四"
    dog1.name = "大黄"
    print("p.name = \(p.name) dog.name=\(dog.name)")

3.数组遍历,数组排序冒泡

var names=["zhangsan","lisi","wangwu","zhaoliu"]
for item in names{
    print(item)
}
//数组遍历  index索引  item获取得值
for(index,item) in names.enumerated(){
    print("index = \\(index),item=\(item)")
}
for a in 1...10{
    print(a)
}
//冒泡
var arr = [2,8,4,10,32,20]
for i in 0...arr.count-1 {//循环多少轮
    for j in 0..<(arr.count - i - 1){//每伦循环比较多少次
        //换位置
        if(arr[j] > arr[j+1]){
            let t = arr[j]
            arr[j]=arr[j+1]
            arr[j+1]=t
             }
        
             }
         }
   print(arr)

4.二叉树层次遍历

class Node : NSObject {
    var data : Int!
    var leftChild:Node?
    var rightChild:Node?
}
//类里面只能写变量和方法

//创建对象
var node1:Node = Node()
node1.data = 4
var node2:Node = Node()
node2.data = 5
var node3:Node = Node()
node3.data = 6
var node4:Node = Node()
node4.data = 7
var node5:Node = Node()
node5.data = 2
node5.leftChild = node1
node5.rightChild = node2
var node6 = Node()
node6.data = 3
node6.leftChild = node3
node6.rightChild = node4
var node7 = Node()//根结点
node7.data = 1
node7.leftChild = node5
node7.rightChild = node6

func readData(node:Node){
    var arr = [Node]()//创建数组
    arr.append(node)
    while arr.count > 0 {
        let temp = arr[0]
        if let _ = temp.leftChild{//可选绑定
            arr.append(temp.leftChild!)//左孩子表进数组
            
        }
        if let _ = temp.rightChild{//可选绑定
            arr.append(temp.rightChild!)//右孩子表进数组
        }
        print(temp.data)
        arr.remove(at: 0)//读取完第一个元素的时候删除
        
    }
}
readData(node: node7)
//函数
//1.无参数没有返回值
func fun1(){
    print("无参数没有返回值")
}
//2.无参数有返回值
func fun2() -> Int {
    print("无参数有返回值")
    return 0
 }
//3 有参数有返回值
func fun3(parm:Int)->Int{
    print("有参数有返回值")
    return 0
}
//4 有参数无返回值
func fun4(parm:Int){
    print("有参数无返回值")
}
//5不定参数
func func5(parm:Int...){
    var result :Int = 0
    for i in parm {
        result += i
    }
    print(result)
}
//连加
func5(parm: 1,2,3,4,5)
func fun6( a:inout Int,b:inout Int){
    var temp = a
    a = b
    b = temp
}
var a=10
var b=20
fun6(a: &a,b: &b)
print("a = \(a),b = \(b)")

第三天

  • 1协议
//协议类似于接口,别的类遵守协议
//定义了一个协议
protocol PersonProtocol {
    func study()


}
//可选协议
@objc protocol StudentProtocol{
    @objc optional func happy()
    var name:String{get set}
}

class person:NSObject,PersonProtocol,StudentProtocol{
    var newName:String?
    var name:String
    {
        set {
            self.newName = newValue
               }
        get {
            return self.newName!
               }
    }
    func study() {
      
        
    }
}
var p:person = person()
p.study()
p.name = "zhangsan"
print("p.name = \(p.name)")
 //练习
 //面向协议编程

protocol TuxingProtocol{
    func MJ() -> Float
    func ZC()->Float
  
}
class ThreeAngle : NSObject,TuxingProtocol {
    var height : Float!
    var d : Float!
    
    func MJ()->Float{
        return height * d/2.0
        
    }
    func ZC() -> Float {//等边三角形
        return d * 3
    }
    
}

class FourAngle : NSObject,TuxingProtocol{
    
    var b:Float!
    func MJ()->Float{
        return b * b
    }
    func ZC()->Float{
        return b * 4
    }
}
class zeroAngle : NSObject,TuxingProtocol {
    
    var radio:Float!
    func MJ()->Float{
        return radio * radio * 3.14
    }
    func ZC()->Float{
        return radio * 2 * 3.14
    }
}



2枚举

//枚举
enum Season :String {
    case Spring = "春天"
    case Summer = "夏天"
    case auto = "秋天"
    case winter = "冬天"
   // case 河南,内蒙古,山东
    
    }
let season = Season.Spring
//print(Season.auto.rawValue)
//遍历
//switch case必须包含所有的情况,否则default
switch season{
case .Spring:
    print("春天")
case .Summer:
    print("夏天")
case .auto:
    print("秋天")
case .winter:
    print("冬天")
default:
    print("输出两个季节")
  }
let a:Int = 10
switch a{
case 1...20:
    print("包含10")
case 2...30:
    print("包含10")
default:
    print("")
}
//枚举不用default,switch case 用default

第四天

  • 1,类的定义
//类的定义
/* class 类名:父类*/
class Node: NSObject {
    //?可选类型(可能有值可能有值)
    //! 强制拆包(解析)
    var data:Int!
    var leftChild:Node?
    var rightChild:Node?
    
}

  • 2.泛型
//可以打印 数字,字符串,字符

func MyprintNumber(parm:Int){
    print(parm)
}
func MyprintString(parm:String){
    print(parm)
}
func MyprintCharacter(parm:Character){
    print(parm)
}
//使用泛型之后的一个就可以了
//func Myprint<T>(parm:T){
//print(parm)
//}
func Myprint<T:Collection>(parm:T){
    print(parm)
}
let a = [1,2,3]
Myprint(parm: a)

3.闭包

func sort(num:Int,num1:Int)->Bool{
    //如果num>num1返回true 否则false
    
    return num > num1 ? true:false
    
}
//,定义一个变量  把sort赋值给变量
let fun:(Int,Int)->Bool  = sort
//使用变量调用函数
let result = fun(1,2)
//print(result)

var arr = [10,2,5,9,2,5,6]
func sortArr(parm:(Int,Int)->Bool){
    for i in 0...arr.count-1 {
        for j in 0..<(arr.count-1-i) {
            if(parm(arr[j],arr[j+1])){
                let temp = arr[j]
                arr[j] = arr[j+1]
                arr[j+1] = temp
                
            }
        }
    }
    

}
sortArr(parm: sort)
print(arr)

func sort1(num:Int,num1:Int)->Bool{
    return num<num1 ? true:false
}
//调用
sortArr(parm: sort1)
print(arr)
//正式闭包
let block = {(a:Int,b:Int)->Bool in
    return a > b ? true:false
}
sortArr(parm:block)

4,代理

//协议是别人遵守的
protocol GrilProtocal {
    func MDan()
    func happy()
}
//delegate代理
class Girl : NSObject{
    //设置代理值
    var delegate : GrilProtocal?
    //shopBegin
    func shopBegin() {
        if let _ = delegate {
            delegate?.happy()
            
        }
    }
    
    //购物完毕
    func shopOver() {
        if let _ = delegate {
            self.delegate?.MDan()
        }
    }
}
class Boy : NSObject,GrilProtocal{
   
    func happy(){
        print("高兴")
    }//买单
    func MDan(){//实现协议
        print("买单")
      }
}


let boy : Boy = Boy()
let girl : Girl = Girl()
girl.delegate = boy
girl.shopOver()
girl.shopBegin()

5,自己练习的代理文件

protocol name {
    func kaishi()
    func xiazai()
    func gc()
    func jieshu()
    }
class File:NSObject{
   //设置代理值
    var delegate : name?
    //开始
    func downloadbegin(){
        if let _ = delegate{
            delegate?.kaishi()
        }
    }
    //下载
    func downloadxiazai(){
        if let _ = delegate{
            delegate?.xiazai()
        }
    }
    //下载中
    func downloadzhong(){
        if let _ = delegate{
            delegate?.gc()
        }
    }
  //结束
    func downloaderr(){
        if let _ = delegate{
            delegate?.jieshu()
        }
    }
    
    
}
class MakeFile:NSObject,name{
    func kaishi(){
      print("开始")
    }
    func xiazai(){
        print("下载")
    }
    func gc(){
        print("下载中")
    }
    func jieshu(){
        print("结束")
    }
    
}

let a :File = File()
let b:MakeFile = MakeFile()
a.delegate = b
a.downloadbegin()
a.downloadxiazai()
a.downloadzhong()
a.downloaderr()

第五天

  • UIview控件
  • 1.AppDelegate.swift
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

     //程序启动
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        //初始化window
        let frame = UIScreen.main.bounds
        self.window = UIWindow(frame:UIScreen.main.bounds)
        self.window = UIWindow(frame: frame)
        //初始化控制器
        let myVC = MyViewController()
        //设置成window的根视图控制器
        self.window?.rootViewController = myVC
        //把window设置成系统主window
        self.window?.makeKeyAndVisible()

        return true
    
    
    }
    

  • ViewController.swift
class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        //获取当前控制器的view,设置背景颜色为红色
        //self.view.backgroundColor = UIColor.red
        //初始化方法,设置大小坐标
        let rect = CGRect(x: 30, y: 30, width: 100, height: 200)
        let subview:UIView = UIView(frame:rect)
        //把子视图加载上父视图
        subview.backgroundColor = UIColor.red
        self.view.addSubview(subview)
        //frame相对于父视图
        let subview1 = UIView()
        subview1.frame = CGRect(x: 140, y: 240, width: 100, height: 100)
       subview1.backgroundColor = UIColor.yellow
        self.view.addSubview(subview1)
        
        
        //center
        let subview3 = UIView()
        self.view.addSubview(subview3)
        subview3.frame = CGRect(origin: self.view.center, size: CGSize(width: 20, height: 20))
            subview3.backgroundColor = #colorLiteral(red: 0.3411764801, green: 0.6235294342, blue: 0.1686274558, alpha: 1)
          //透明度 
        //subview3.alpha = 0.1  会影响视图
        subview3.backgroundColor = UIColor(colorLiteralRed: 0.5, green: 0.5, blue: 0.5, alpha: 0.5)
        let subview4 = UIView(frame: CGRect(x: 10, y: 10, width: 40, height: 40))
        subview4.backgroundColor = #colorLiteral(red: 0.5725490451, green: 0, blue: 0.2313725501, alpha: 1)
        subview3.addSubview(subview4)
        //tag值使用2000以上,100以下系统用
        subview4.tag = 10001
        let Tagview = subview3.viewWithTag(10001)
        print("subview4 = \(subview4),Tagview = \(Tagview)")
        
        //subview4.isHidden = true //隐藏
        //用户交互
         self.view.isUserInteractionEnabled = true
          //superview是父试图
       print("subview = \(subview4.superview),subview3 = \(subview3)")
     for item in self.view.subviews{
            //从父试图上移除
           // item.removeFromSuperview()
            print(item)
        
            
        }
        
    }

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        print("点击了当前控制器")
    }
   

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
       
    }


 }


  • MyviewController.swift
class MyViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = #colorLiteral(red: 0.8549019694, green: 0.250980407, blue: 0.4784313738, alpha: 1)

        // Do any additional setup after loading the view.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容

  • 2016年11月18日 星期五 晚 11月的集宁,相对于来大学的以往两年反倒给人一些暖意,但毕竟是晚上,天气预报的...
    无厘小阿先_阅读 780评论 0 4
  • 嗯哼嗯哼蹦擦擦~~~ 转载自:https://github.com/Tim9Liu9/TimLiu-iOS 目录 ...
    philiha阅读 4,835评论 0 6
  • 豪华的宴会厅里,同学们大部分都已到场。秦欣然坐在一个角落,和旁边的同学有一搭没一搭的聊着,眼睛却随着每一次开门而充...
    清凉阅读 580评论 0 2
  • 梦里有一段铁轨 由北而南乘着我的相思延绵 由南而北载着我的伊人归回 梦里有一条清溪 蜿蜒而去 迤逦而来 路遇,20...
    姜汤l阅读 137评论 0 0
  • 我们都受“教育”的毒很深。 提笔写文,就得由浅入深,就得政治正确,结尾一定得道德升级。 写一个故事,好像一定得从这...
    Amy_dandan阅读 288评论 0 0