Swift3.0学习笔记-第一个app

来源:互联网 发布:粤贵银交易软件 编辑:程序博客网 时间:2024/05/16 08:52

https://developer.apple.com/library/content/referencelibrary/GettingStarted/DevelopiOSAppsSwift/index.html#//apple_ref/doc/uid/TP40015214-CH2-SW1

      按照苹果官方文档的介绍一句句看下来了, 也实际用Xcode逐句编码练习过了, 先赞一下作者写的非常详细, 但吐槽一下FoodTracker不是用Swift3.0写的,打开示例代码时要转换为3.0。 说说感受,  Swift3.0画界面比Android要麻烦, 难点在于布局和代码要用Ctrl+鼠标拖动的方式建立关联(包括点击事件Action、控件引用Outlet)。 对于初学者, 即使给你一个Swift项目代码, 让你照搬着写也不一定能弄出相同功能;而Android app工程更容易理解和抄,门槛较低。

      苹果的FoodTracker示例代码在打开相册时崩溃, 暂时不知道如何解决。

      Swift按照MVC模式设计UI框架。

Swift布局文件: 文件名后缀是storyboard, 功能类似于OC的xib, 实际上也是xml;一个storyboard文件可以包含多个界面,之间用箭头表示显示层级关系, UIViewController之间使用segue交互数据。

UIView:控件,都继承于UIView;

UIViewController: 都继承于UIView Controller; 有点像Android的Activity/Fragment。

stack:storyboard里stack的作用将一些控件组合到一起, 类似于Android的ViewGroup。

constraint:storyboard里的constraint作用是设置控件的位置, 类似于Android的layout_margin。


控件和Controller之间通过outlet和action关联, 按照Ctrl并拖动鼠标从storyboard控件到controller代码里,  outlet是控件的引用,类似于Android的findViewById;action是点击事件,类似于Android的OnClickListener。

     下面是关联控件到代码的demo, 注意前缀@IBOutlet是Xcode自动生成的,表示当前参数指向storyboard的控件, weak关键字表示弱引用,当iOS资源不足时可能会释放该控件。

    @IBOutlet weak var nameTextField: UITextField!    //类似于Android的TextView,并执行了findViewById    @IBOutlet weak var mealNameLabel: UILabel!    @IBOutlet weak var photoImageView: UIImageView!


下面是添加点击事件的示例代码, 这是按住control键并用鼠标拖动后生成的。
  @IBAction func setDefaultLabelText(_ sender: UIButton) {        mealNameLabel.text = "Default Text"    }


       上图是UIViewController的生命周期, 类似于Android的Activity, 在Swift中每个界面都是用UIViewController的子类控制的。

  • viewDidLoad()— 执行的第一个函数(类似于Android Activit的onCreate,区别是viewDidLoad可以执行多次), 当View对应的storyboard文件被加载并作为视图根节点显示时调用。

  • viewWillAppear()— 顾名思义,View显示出来前肯定要执行的函数,类似于Swift观察属性变化的willSet。英语语法里的将来时大笑

    viewDidAppear() - view显示完成后执行的函数, 类似于Swift观察属性变化的didSet, 英语语法的完成时。


在Android的界面里经常使用列表控件ListView或者RecyclerView, Swift使用UITableViewController作为列表控件管理类, 注意在storyboard文件里时UITableViewController,而不是UITableView。

       我们在考察一个Android工程师功底时,经常问到ListView的优化;同理,要学好Swift必须搞明白UITablerViewController的所有细节, 还是看一遍API并执行看看效果吧!


storyboard里的标题栏是用Xcode的Editor菜单里的Navigation Controller选项添加的, 而不是用右下角的Object library拖出来的。

      Swift3.0 APP官方开发资料较少,毕竟Swift3.0刚发布2个月, 国内的相关视频都是培训班的。  要学好Swift,建议看完所有的苹果官方WWDC视频和介绍。

 

0 0