Swift超级简单基础总结

本人会在此不定时更新, 现在废话不哆嗦, 直接来个简单的基础回顾吧 !!

NSRange :用于表示范围的结构体,有两个属性:起始点location和长度length swift新增了Range,NSRange相识;但不可通用

        let nsstring : Nsstring = "my name is cjh"
        let  nsrange : NSRange = nsstring.range(of: "cjh")
        print("\(nsrange.length),\(nsrange.location)") // 打印 3,11

数组 :集合类型,用来按顺序存储相同类型的数据

        // 数组的声明形式很广泛
        var list : [Int] = [23,24]
        var emptyArray = [Int]()
        var intList = Array<Int>()
        
        var stringArr = ["kobe","james"]
        print("\(stringArr[0]),\(stringArr[1])") // 输出kobe james; 数组的数据是有顺序的, 通过位置下标访问修改元素

视图的透明属性

        let view =  UIView()
        view.backgroundColor = UIColor.red
        view.frame = CGRect(x:10,y:19,width:19,height:19)
        view.alpha = 0.5 // 半透明
        view.alpha = 1.0 // 不透明
        view.alpha = 0.0 // 透明
        self.view.addSubview(view)


as1.用于类型转换和判断, 2.as?用于可为空转换

 let astext : AnyObject? = "my  name is cjh"
        let asstring =  astext as! String // 强制转换, 如果无法转换,程序出错
        
        let length =  (asstring as Nsstring).length // 把String类型转成Nsstring

bundle用于获取和使用文件的类 Bundle内含有:info.plist,可执行文件,图像,图标,音频等资源文件

        let mainBundle =  Bundle.main
        let fileParh = mainBundle.path(forResource: "cjh",ofType: "jpg") // 获取cjh图片的路径
        
        let info =  mainBundle.infoDictionary // 获得配置项字典实例
        let bundleId =  mainBundle.object(forInfoDictionaryKey: "CFBundleName") // 获得应用程序的Bundle名
        

bounds 视图在自身坐标系中的位置和大小,该视图bounds的坐标认是(00通过修改viewbounds属性可以修改本地坐标系统的原点位置,影响的是它子view的位置和大小


        let view1 = UIView(frame: CGRect(x: 20,y : 20,width: 300,height: 300))
        view1.backgroundColor = UIColor.yellow
        view1.bounds = CGRect(x: -100,y: -20,width: 280,height: 250)
        
        let view2 = UIView(frame: CGRect(x: 0,y : 0,width: 100,height: 100))
        view2.backgroundColor = UIColor.blue
        view1.addSubview(view2)
        self.view.addSubview(view1)


break 在循环语句中,终止并跳出循环

let numbers = [1,2,3]
        for number in numbers {
            if number == 2 {
                break // 当循环到2就终止循环
            } else {
                print(number)
            }
        }
        
        switch numbers[1] {
        case 1:
            break; // 当numbers的第0个是1的时候 终止switch
        default:
            print("不是1的情况")
        }


CoreAnimation一个合成引擎,工作是尽可能快的将不同的可视化的内容合成到屏幕上。这个可视化内容是不同的层layer,构成一个叫做层树(layer tree)的层次结构

        let view =  JHView(frame: CGRect(x: 40,y: 40,width: 40,height: 40)) // UIView的属性layer是CALayer类,常见作用是加阴影、圆角、动画等
        view.backgroundColor = UIColor.orange
        view.layer.shadowRadius = 4
        view.layer.shadowOpacity = 0.8
        view.layer.shadowColor = UIColor.lightGray.cgColor
        view.layer.shadowOffset = CGSize(width: 15,height: 15)
        self.view.addSubview(view)

CoreGraphics为系统提供的矢量绘制框架UIKit包含了这个框架.一般CG开头的类或结构体(CGPoint)属于CoreGraphics框架

        var rect = CGRect(x: 20,y: 20,width: 20,height: 20)
        rect.origin = CGPoint(x: 20,y: 20)
        rect.size = CGSize(width: 20,height: 20)
        


CGAffineTransform字面意思仿射转换,包含控件的缩放,旋转、平移等转换信息的结构体


        let transformView = JHView(frame: CGRect(x: 140,y: 140,height: 100))
        UIView.animate(withDuration: 2.0) {
            transformView.backgroundColor = UIColor.blue
            transformView.transform =  CGAffineTransform(scaleX: 1,y: 1)
            transformView.transform = CGAffineTransform(rotationAngle: CGFloat(180 * M_PI / 180))
            transformView.transform = CGAffineTransform(translationX: 100,y: 200)
            self.view.addSubview(transformView)
        }


switchcase语句的组成部分,表示一种情况

        let age = arc4random() % 101 // age为0~100之间的随机数
        switch age {
        case 0..<18:
            print("未成年")
        case 18..<100:
            print("成年人")
        default:
            break
        }



class 用来定义和声明一个类;定义类属性或类方法:不依赖于具体对象的属性方法

        class ColorOfNature { // 1.定义类
            class func skyBlue() -> UIColor { // 2.定义类方法
                return UIColor.blue
            }
        }
        let skyColor =  ColorOfNature.skyBlue() // 3.使用类名 + 点语法调用方法,不需要创建对象
        

continue 用在循环结构中,结束本次循环,忽略continue后的代码,开始下一次循环

        let numbers = [1,3,4]
        for number in numbers {
            if number == 2 || number == 3 {
                continue
            }
            print("== \(number)") // 输出1,4, 不会输出2,3
        }


Data 二进制数据流类型,创建后不可修改(NSMutableData修改),在文件操作、网络使用较广泛

        let string = "梅西c罗科比詹姆斯"
        let data : Data =  string.data(using: String.Encoding.utf8)!
        let newString = String.init(data: data,encoding: String.Encoding.utf8)!
        print(newString)
        print(string)


Date 提供和处理日期和时间的

        let today = Date()
        let yesterday = Date(timeIntervalSinceNow: -86400)
        print(today)
        print(yesterday) // Date的认是UTC全球时间
        
        let formatter = DateFormatter() // 想要输入本地时间,要用到Dateformatter
        formatter.dateFormat = "yyy/MM/dd"
        let currentDate = formatter.string(from: today)
        print(currentDate)


fallthrough作用:switch-case语句中,一个case执行结束后,继续执行下一个case

        var ageNumber = 6
        switch ageNumber {
        case 0...7:
            print("儿童")
            fallthrough
        case 7...18:
            print("小孩")
        default:
            break
        }

guard 判断语句关键词,判断一段代码是否该被执行

        let x : AnyObject = -4 as AnyObject
        test(x: x)
       
             func test(x : AnyObject) -> Void {
        guard let y = x as? Int else {
            return
        }
        print(y)
        
        guard let z = x as? Int,z < 0 else {
            return
        }
        print(z)
        
    }

for-in 循环关键词

        let names = ["ios","swift","xcode"]
        for (index,name) in names.enumerated() {
            print(String(index) + " " + name)
        }


init 构造方法关键词, 用于对象初始化的方法,初始化是类,结构体和枚举类型实例化的准备阶段

        class Car {
            var speed :Double
            init() {
                speed = 70.0
            }
        }
        let car = Car()
        print(car.speed) // 输出70.0  // 当对象初始化时,构造方法自动调用,该方法可以带参数也可以不带

lazy 懒加载关键词,被标识的存储属性只有在被用到时加载,不在对象初始化时加载

        class BigData {
            var title = "small title"
            lazy var content = "small content"
        }
        let data = BigData() // 注意 data的content属性还没有加载
        let content =  data.content // 在被调用时才加载, 懒加载的作用是提高内存的使用效率


let 声明常量的关键词,常量一旦被赋值,不可修改 与声明变量var对应

        let homeLand = "ios" // 用let给不需要改变的属性赋值
        let score = 88
        score += 1 // 上面的运算会出现系统报错

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...