概述

Apple近日发布了Swift编程语言,Swift是供iOS和OS X应用编程的新编程语言。相信很多开发者都在学习这门新语言。
 
废话不多说,下面我就来学习使用Swift创建一个简单的UI应用程序。
 
 
效果如下:
 
开发环境
Xcode6-beta 
 
iOS 8
 
创建工程
1. Choose File > New > Project > (iOS or OS X) > Application > your template of choice.
 
此处选择 Single view Application。
 
2. Click the Language pop-up menu and choose Swift. 
 
添加基本控件
在ViewController.swift文件中进行编码,该文件类似Objective-C的ViewController.m。
 
UILabel
UILabel 控件常用于显示文本标签。
 
下面我们来创建一个label, 查看UILabel类发现其继承于UIView, NSCoding。
 
可以通过类似创建view的方法,设置大小和lebel的text,通过addSubview方法将其加到当前view上。
 

代码如下:

  1. let label = UILabel(frame:CGRect(origin: CGPointMake(10.0, 50.0), size: CGSizeMake(150,50)))//let 是Swift 表示常量的关键字
  2. label.text = "This is a Label"
  3. self.view.addSubview(label)

UILabel创建参数使用了别名,这点像Object-C。

 
UIButton
UIButton 控件常用于按钮。
 
下面我们来创建一个button按钮,并设置它的UIControlEvents.TouchUpInside事件的处理,查看UIButton类发现其继承于UIControl, NSCoding。
 
可以通过类似创建view的方法,指定位置和大小创建一个按钮,然后设置按钮的titile,设置按钮的背景色,并设置按钮的touch事件。
 
最后通过addSubview方法将其加到当前view上。
 
代码如下:
  1. let btn = UIButton(frame:CGRect(origin: CGPointMake(10.0, 110.0), size: CGSizeMake(150,50)))
  2. btn.setTitle("button", forState: UIControlState.Normal)
  3. btn.backgroundColor = UIColor.redColor()
  4. btn.addTarget(self, action: "buttonClick:", forControlEvents: UIControlEvents.TouchUpInside)
  5. self.view.addSubview(btn)
 
buttonClick方法实现如下:
  1. func buttonClick(sender: UIButton!){
  2. }
UIButton后面的 ”!“ 意味着,sender可以是由UIButton继承来的任意子类。
 
UIAlertView
UIAlertView 常用于弹出对话框,下面我们来创建一个alert。
 
UIAlertView类继承于UIView,我们先创建了一个alert,然后设置alert的title、message、button、delegate。
 
然后调用UIAlertView的show方法,显示alert。
 
我们是在button的touch回调事件中处理alert的创建和显示的。在buttonClick方法中添加如下代码:
  1. var alert = UIAlertView()
  2. //直接这样创建有bug
  3. //var alert = UIAlertView(title: "alert", message: "this is an alert", delegate: self, cancelButtonTitle: "cancel")
  4. alert.title = "alert"
  5. alert.delegate = self
  6. alert.addButtonWithTitle("cancel")
  7. alert.message = "this is an alert"
  8. alert.show()
delegate和self,依然有Object-C的影子。
 
修改ViewController的声明,加入UIAlertViewDelegate
  1. class ViewController: UIViewController, UIAlertViewDelegate
 
实现alert的delegate方法,处理button的click事件。
  1. //处理alert 的button click
  2. func alertView(alertView: UIAlertView!, clickedButtonAtIndex buttonIndex: Int){
  3. println("buttonIndex:\(buttonIndex)")
  4. }
 
总结
Swift 的UIKit API接口和 Objective-C的API接口总体上保持一致,熟悉原来的UIKit接口的话,上手Swift UI开发应该很快。
 
可以通过文档和API手册查看各Objective-C的API 如何使用Swift 的API进行编程。
 
感谢分享

Swift UI的更多相关文章

  1. 小波说雨燕 第三季 构建 swift UI 之 UI组件集-视图集(六)Picker View视图 学习笔记

    想对PickerView进行操作,只能在代码中操作. 下面 ,再添加三个label组件,然后将所有组件配置到代码中(看代码),然后要实现对PickerView的操作,就要实现它的DataSource协 ...

  2. Swift UI开发初探

    今天凌晨Apple刚刚发布了Swift编程语言,Swift是供iOS和OS X应用编程的新编程语言.相信很多开发者都在学习这门新语言. 废话不多说,下面我就来学习使用Swift创建一个简单的UI应用程 ...

  3. Swift UI开发初探 (转)

    原文地址:http://www.tairan.com/archives/6600 关于Swift语法,可以参考<Apple Swift编程语言入门教程> 效果如下: 开发环境 Xcode6 ...

  4. 小波说雨燕 第三季 构建 swift UI 之 度假清单 学习笔记

    最终的效果: <1>第一个场景: 1.本地化 界面简体中文化 Supporting Files - info.plist Localization native development r ...

  5. Swift UI控件详细介绍(上)

    UI控件 首先介绍一下AppDelegate.swift@UIApplicationMain 调用了OC中的UIApplicationMain函数:UIApplicationMain是iOS应用程序的 ...

  6. Swift UI学习UITableView and protocol use

    Models: UserModel.swift Views: UserInfoCell.swift Controllers: RootViewController.swift, DetailViewC ...

  7. swift学习:第一个swift ui程序

    最近swift有点火,赶紧跟上学习.于是,个人第一个swift程序诞生了... 新建项目

  8. swift UI专项训练39 用Swift实现摇一摇功能

    微信的摇一摇功能想必大家都用过,过春节的时候抢红包也没少摇吧,那么用swift语言怎样实现这么酷炫的功能呢.摇动属于IOS内置可识别的一种动作,在你须要实现摇动功能的viewcontroller中.在 ...

  9. 小波说雨燕 第三季 构建 swift UI 之 UI组件集-视图集(五)Image View视图 学习笔记

    留下两个问题:1.后面涉及到的异常不知道原因.2.动态图片到了程序里面就不动了.       然后:   上面是有问题的,下面是没有问题的了.    代码(另外简单写的代码,纠正了那个错误): imp ...

随机推荐

  1. KEIL 伪指令

    //为了大家查找方便,命令按字母排序:0.ALTNAME 功能: 这一伪指令用来自定义名字,以替换源程序中原来的保留字,替换的保留字均可等效地用于子程序中. 格式: ALTNAME 保留字 自定义名 ...

  2. 64位调试器花费的时间比预期的要长(A 64-bit debugging operation is taking longer than expected)

    在stackoverflow上找到解决方案的: http://stackoverflow.com/questions/21329899/vs2013-professional-local-64-bit ...

  3. [转]RegOpenKeyEx函数失败的问题

    在使用这个函数RegOpenKeyEx的时候,老是执行不成功,函数本身返回2,GetLastError返回0.在CSDN上查阅资料说是返回2的原因是注册表中对应路径不存在,可是我电脑中注册表那个键值明 ...

  4. 转:linux shell 数组建立及使用技巧

    linux shell在编程方面比windows 批处理强大太多,无论是在循环.运算.已经数据类型方面都是不能比较的. 下面是个人在使用时候,对它在数组方面一些操作进行的总结. 1.数组定义 [che ...

  5. js深入研究之无法理解的js类代码,extend扩展

    <script type="text/javascript"> function Person(name) { this.name = name; } Person.p ...

  6. dos判断系统版本的语句,

    是我在单位批量安装软件使用的批处理,判断方法如下,仅供参考,本人不懂任何编程,大家凑合着看: winxp和win7判断: net config workstation |(find /i " ...

  7. phpmyadmin导入大量数据比较快的做法

    在一次项目在其他机器上配置的时候,将数据库以.sql的形式导出后,在新的机器上想将数据重新导入phpmyadmin的时候.按照以前的在数据库中将所有数据复制过来然后点击sql运行给卡住了(数据量过大) ...

  8. hdu1023:卡特兰数

    火车进站问题 卡特兰数引入的例子. 卡特兰数递推公式:h(n)=h(n-1)*(4*n-2)/(n+1) 通项公式:h(n)=c(2n,n)/(n+1)... 这题需要高精度,刚好学了一下java.. ...

  9. ZOJ3765---Lights (Splay伸展树)

    Lights Time Limit: 8 Seconds      Memory Limit: 131072 KB Now you have N lights in a line. Don't wor ...

  10. x2engine

    x2engine 各版本下载 https://bitnami.com/stack/x2crm/installer https://bitnami.com/redirect/to/36211/bitna ...