Swift的一些高级技巧

本文介绍了Swift的一些高级技巧,包括生命周期的实现、闭包、扩展、协议、委托和ScrollView的使用。通过示例详细讲解了如何在实际开发中应用这些特性,如使用闭包保护内部变量,通过扩展增加类的功能,利用协议进行协作,以及实现ScrollView的滚动和缩放功能。
摘要由CSDN通过智能技术生成

Swift的一些高级技巧

life cycle的代码实现

我们会发现,新建一个UIViewController以后,xcode会默认提供一个函数给你。

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
}

这个函数就是当此ViewController生成了一个新的实例的时候,就会被调用。

与之相对应的是一个叫做deinit的函数。

deinit {
    num = num + 2
    inputBox.text = String(num)
}

closure

swift中的闭包类似c++中的块。它可以捕捉和保存任何常数或者变量的引用。

闭包,其实就是指程序语言中能让代码调用已运行的函数中所定义的局部变量。

简单来说可以把闭包理解成保护内部变量的一种手段,也就是为函数建立一个私有的变量的。

Extension

extension这一个关键字可以帮助扩充一些类的方法。但是不可以override。

但是需要注意的是,这一功能有可能会被滥用。但是也可以帮助我们组织我们的代码。

Protocols

protocols有点像一个api,他是一群方法的集合。他是一种类型。

protocols本身不可以自己实现自身,它只能够在方法相应的类里面实现。

一般来说是先定义好protocols,然后需要有一个相应的类/struct来说我会来接手。最后这个类/struct必须把protocols的所有方法实现。

典型的定义如下:

protocol SomeProtocol: clsss, InheritedProtocol{
        var property: Int
        func aMethor()->{}
        mutating func changeColor()
}

protocol的作用在于协作。在一般的公司里面,都会使用protocol来去定义需要的东西,告诉别人要实现什么。

Delegation

假如view需要和controller通讯,那么可以使用delegation的方式来达到。具体的操作如下:

这里写图片描述

ScrollView

定义scrollview的方式是首先定义contentSize。

scrollView.contentSize = CGSize(width: 3000, height: 2000)
aerial.frame = CGRect(x: 150, y: 200, width: 2500, height: 1600)
scrollView.addSubview(aerial)

这样一来,效果就是scrollview可以四处浏览这个大画布的各个角落。

scrollview也可以zooming,以下两个参数可以定义最大最小的限制。

scrollView.minimumZoomScale = 0.5
scrollView.maximumZoomScale = 2.0

Demo

首先新建一个viewcontroller,用来装载图像。

这次我们的model将会是一个url,用来指示图像的位置。

这一次我们尝试使用代码添加subview,代码如下:

private var imageView = UIImageView()

override func viewDidLoad(){
    super.viewDidLoad()
    view.addSubview(imageView)
}

我们设置一个变量给图片,然后每次导入以后要设置为适配。

func fetchImage(){
  if let url =  imageURL{
          let imageData = try! Data(contentsOf: url)
      if imageData != nil
      {
          image = UIImage(data: imageData)
      }
   }
}

private var image: UIImage?{
  set{
      imageView.image = newValue
      imageView.sizeToFit()
  }
}

这个时候运行会报错,原因是图片来源是不安全的http链接。要解决这个问题,只需要进入info.plist里面增加一个App Transport Security Setting,然后下拉选择字典中的Allow Arbitrary Loads,值设置为YES就可以了。

Boom!成功了!

这里写图片描述

然后我们给应用增加一个ScrollView。

在storyBoard里面添加一个scrollview,然后拖拽到controller里面。然后把UIImage添加成为ScrollView的Subview。

ScrollView.addSubview(imageView)

最后一定要记得设置contentsize!

ScrollView?.contentSize = imageView.frame.size
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值