Swift UI开发初探 (转)
原文地址:http://www.tairan.com/archives/6600
关于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(,)))//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(,)))
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
classViewController: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开发初探 (转)的更多相关文章
- Swift UI开发初探
今天凌晨Apple刚刚发布了Swift编程语言,Swift是供iOS和OS X应用编程的新编程语言.相信很多开发者都在学习这门新语言. 废话不多说,下面我就来学习使用Swift创建一个简单的UI应用程 ...
- Swift学习之UI开发初探
Swift是供iOS和OS X应用编程的新编程语言.相信很多开发者都在学习这门新语言.废话不多说,下面我就来学习使用Swift创建一个简单的UI应用程序. AD: 概述 Apple近日发布了Swift ...
- Swift UI
概述 Apple近日发布了Swift编程语言,Swift是供iOS和OS X应用编程的新编程语言.相信很多开发者都在学习这门新语言. 废话不多说,下面我就来学习使用Swift创建一个简单的UI应用 ...
- Android与Swift iOS开发:语言与框架对比
Swift是现在Apple主推的语言,2014年新推出的语言,比Scala等“新”语言还要年轻10岁.2015年秋已经开源.目前在linux上可用,最近已经支持Android NDK:在树莓派上有Sw ...
- Android &Swift iOS开发:语言与框架对比
转载自:http://www.infoq.com/cn/articles/from-android-to-swift-ios?utm_campaign=rightbar_v2&utm_sour ...
- 漫谈GUI开发—各种平台UI开发概况
前言: 在看这边文章前,可以建议看下:图形界面操作系统发展史——计算机界面发展历史回顾 从CS到BS,现在的前端开发,其实也是GUI开发范畴.现今 各平台的UI开发概况 HTML&CSS,Wi ...
- Unity3D游戏开发初探—2.初步了解3D模型基础
一.什么是3D模型? 1.1 3D模型概述 简而言之,3D模型就是三维的.立体的模型,D是英文Dimensions的缩写. 3D模型也可以说是用3Ds MAX建造的立体模型,包括各种建筑.人物.植被. ...
- Android UI开发【开篇导航】
如今移动互联网正处于飞速发展的时期,正式看中这个行业的发展势头,本人在2011年从.NET转行做了移动应用开发这块,接触了android和ios开发,到今已快3个年头,先前忙于学习各种基础知识和语法方 ...
- Android UI开发第四十一篇——墨迹天气3.0引导界面及动画实现
周末升级了墨迹天气,看着引导界面做的不错,模仿一下,可能与原作者的代码实现不一样,但是实现的效果还是差不多的.先分享一篇以前的文章,android动画的基础知识,<Android UI开发第十二 ...
随机推荐
- 用户、组或角色 'zgb' 在当前数据库中已存在。 (Microsoft SQL Server,错误: 15023)
在使用SQL Server 时,我们经常会遇到一个情况:需要把一台服务器上的数据库转移到另外一台服务器上.而转移完成后,需要给一个"登录"关联一个"用户"时,往 ...
- vue.js路由学习笔记二
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- js常用代码收集
1. PC - js 返回指定范围的随机数(m-n之间)的公式 Math.random()*(n-m)+m return false return false // event.preventDefa ...
- javascript的最重要的特性之一:闭包的解决方案
初始代码: for (var j = 0; j < lnglats.length; j++) { AMap.event.addListener(markers[j], 'mouseover', ...
- Luogu P1471 方差 线段树
那是上上周...也是重构了四遍...后来GG了...今天又拾起,搞了搞终于过了... 好吧就是个线段树,公式懒得推了https://www.cnblogs.com/Jackpei/p/10693561 ...
- hdu6397 Character Encoding 隔板法+容斥原理+线性逆元方程
题目传送门 题意:给出n,m,k,用m个0到n-1的数字凑出k,问方案数,mod一个值. 题目思路: 首先如果去掉数字范围的限制,那么就是隔板法,先复习一下隔板法. ①k个相同的小球放入m个不同的盒子 ...
- POJ2828 Buy Tickets(线段树之插队问题)
飞翔 问题是这样的:现在有n个人要买票,但是天黑可以随便插队.依次给出将要买票的n个人的数据信息.包含两项:pos,当前第i号人来了之后他肯定要插入到pos这个位置,如果当前pos无人,那最好了,直接 ...
- 微软原版SQL Helper
代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-- ...
- 4.centos7 docker 安装
参考这个文档进行安装docker: http://www.runoob.com/docker/centos-docker-install.html 开机启动 systemctl enable dock ...
- 2019.03.21 读书笔记 枚举ENUM
其实没必要为枚举显式赋值,如果赋值了,就一定要全部赋值,否则默认在上一个元素的基础上+1,如果不给枚举变量赋值,就算枚举中没有0元素,也会显示为0,而超出枚举范围的整型数据,也会显示值本身,而不是异常 ...