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

关于Swift语法,可以参考《Apple Swift编程语言入门教程

效果如下:

开发环境

  • Xcode6-beta
  • iOS8

创建工程

  • Choose File > New > Project > (iOS or OS X) > Application > your template of choice.

    此处选择 Single view Application。

  • 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上。

代码如下:

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

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

  • UIButton

UIButton 控件常用于按钮。

下面我们来创建一个button按钮,并设置它的UIControlEvents.TouchUpInside事件的处理,查看UIButton类发现其继承于UIControl, NSCoding。

可以通过类似创建view的方法,指定位置和大小创建一个按钮,然后设置按钮的titile,设置按钮的背景色,并设置按钮的touch事件。

最后通过addSubview方法将其加到当前view上。

代码如下:

        let btn = UIButton(frame:CGRect(origin: CGPointMake(10.0, 110.0), size: CGSizeMake(150,50)))
btn.setTitle("button", forState: UIControlState.Normal)
btn.backgroundColor = UIColor.redColor()
btn.addTarget(self, action: "buttonClick:", forControlEvents: UIControlEvents.TouchUpInside)
self.view.addSubview(btn)

buttonClick方法实现如下:

    func buttonClick(sender: UIButton!){

    }

UIButton后面的! 意味着,sender可以是由UIButton继承来的任意子类。

  • UIAlertView

UIAlertView 常用于弹出对话框,下面我们来创建一个alert。

UIAlertView类继承于UIView,我们先创建了一个alert,然后设置alert的title、message、button、delegate。

然后调用UIAlertView的show方法,显示alert。

我们是在button的touch回调事件中处理alert的创建和显示的。在buttonClick方法中添加如下代码:

        var alert = UIAlertView()

        //直接这样创建有bug
//var alert = UIAlertView(title: "alert", message: "this is an alert", delegate: self, cancelButtonTitle: "cancel")
alert.title = "alert"
alert.delegate = self
alert.addButtonWithTitle("cancel")
alert.message = "this is an alert" alert.show()

delegate和self,依然有Object-C的影子。

修改ViewController的声明,加入UIAlertViewDelegate

class ViewController: UIViewController, UIAlertViewDelegate

实现alert的delegate方法,处理button的click事件。

    //处理alert 的button click
func alertView(alertView: UIAlertView!, clickedButtonAtIndex buttonIndex: Int){
println("buttonIndex:\(buttonIndex)")
}

总结

Swift 的UIKit API接口和 Objective-C的API接口总体上保持一致,熟悉原来的UIKit接口的话,上手Swift UI开发应该很快。

可以通过文档和API手册查看各Objective-C的API 如何使用Swift 的API进行编程。

你可以在这里获取本文的Demo。

Swift UI开发初探的更多相关文章

  1. Swift UI开发初探 (转)

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

  2. Swift学习之UI开发初探

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

  3. Swift UI

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

  4. Android与Swift iOS开发:语言与框架对比

    Swift是现在Apple主推的语言,2014年新推出的语言,比Scala等“新”语言还要年轻10岁.2015年秋已经开源.目前在linux上可用,最近已经支持Android NDK:在树莓派上有Sw ...

  5. Android &Swift iOS开发:语言与框架对比

    转载自:http://www.infoq.com/cn/articles/from-android-to-swift-ios?utm_campaign=rightbar_v2&utm_sour ...

  6. 漫谈GUI开发—各种平台UI开发概况

    前言: 在看这边文章前,可以建议看下:图形界面操作系统发展史——计算机界面发展历史回顾 从CS到BS,现在的前端开发,其实也是GUI开发范畴.现今 各平台的UI开发概况 HTML&CSS,Wi ...

  7. Unity3D游戏开发初探—2.初步了解3D模型基础

    一.什么是3D模型? 1.1 3D模型概述 简而言之,3D模型就是三维的.立体的模型,D是英文Dimensions的缩写. 3D模型也可以说是用3Ds MAX建造的立体模型,包括各种建筑.人物.植被. ...

  8. Android UI开发【开篇导航】

    如今移动互联网正处于飞速发展的时期,正式看中这个行业的发展势头,本人在2011年从.NET转行做了移动应用开发这块,接触了android和ios开发,到今已快3个年头,先前忙于学习各种基础知识和语法方 ...

  9. Android UI开发第四十一篇——墨迹天气3.0引导界面及动画实现

    周末升级了墨迹天气,看着引导界面做的不错,模仿一下,可能与原作者的代码实现不一样,但是实现的效果还是差不多的.先分享一篇以前的文章,android动画的基础知识,<Android UI开发第十二 ...

随机推荐

  1. spring mvc项目【转载】

    用了好几年的ssh2.最近打算研究下spring的mvc,看看如何,可以的话后期的项目将都是用springmvc+spring jdbc的形式,这样就少了其他框架的继承.由于以前没用过springmv ...

  2. Cygwin ssh

    http://www.evalumation.com/blog/86-cygwin-windows7-sshd

  3. Linux下Qt应用程序的发布(使用LDD命令查看所有依赖的库文件)

    最近一直在学习Qt,用Qt写了一个程序,但是不知道怎么发布,网上说的都是在windows下怎么发布Qt应用程序,但是,在windows下Qt应用程序依赖的库文件与linux下的名字不同.于是,我就想到 ...

  4. 基于visual Studio2013解决C语言竞赛题之0302字符数出

     题目 解决代码及点评 根据题目要求,只要根据用户输入的字母,判断字母之后,给出相应的输出即可 在以下代码中,f32函数实现了该功能,通过if条件判断语句 #include <stdio.h ...

  5. 警告:‘xxxx’ 将随后被初始化

    关于编译报警告.本次是接手一个新手的代码,总共不到1K行的代码.两个类.编译的时候报的警告,本来也不打算管理这个事情的.要求也不会有那么严格.但上午看完代码后,觉得毕竟是新手写的代码,还是有很多需要修 ...

  6. android错误之android.content.res.Resources$NotFoundException:

    错误:android.content.res.Resources$NotFoundException: String resource ID #0x1 原因:一般发生在参数 int resId 错误, ...

  7. Swift编程语言学习2.1——基础运营商(在)

    操作员正在检查,更改.归并值特殊符号或短语.例如,加+这两个数字相加(例如let i = 1 + 2). 算如更复杂的逻辑和操作的实施&&(例如if enteredDoorCode & ...

  8. Ceph之数据分布:CRUSH算法与一致性Hash

    转自于:http://www.cnblogs.com/shanno/p/3958298.html?utm_source=tuicool 数据分布是分布式存储系统的一个重要部分,数据分布算法至少要考虑以 ...

  9. ELK 之二:ElasticSearch 和Logstash高级使用

    一:文档 官方文档地址:1.x版本和2.x版本 https://www.elastic.co/guide/en/elasticsearch/guide/index.html 硬件要求: 1.内存,官方 ...

  10. django-model-utils

    一个普通例子: todos = Todo.objects.filter(owner=request.user).filter(is_done=False).filter(priority=1) 弊端: ...