自学Swift-UIKit

1 篇文章 0 订阅

UIKit提供了IOS上实现的图形,事件驱动程序的框架
UIView是视图的基类
UIViewController视图控制器的基类
UIResponder表示一个可以接受触摸屏上的触摸事件
**

UIView

**
视图,通常是UIView的一个对象,表示屏幕上的一块矩形区域,同事处理该区域的绘制和触屏事件.
IOS系统坐标
Iphone坐标以左上角为原点
Frame和Bounds

  • Frame以其父视图为起点,得出它自己的位置信息
  • Bounds即以IOS系统的坐标原点为起点,原点坐标是(0,0)
  • Center表示视图中心点所在的位置.
    自创建一个singleView,在viewDidLoad()中添加如下代码查看Frame和Bounds的区别
/// 设置一个UIVIew在x;100,y:100 长宽都为100
        var aView = UIView(frame: CGRect(x: 100, y: 100, width: 100, height: 100))
        aView.backgroundColor = UIColor.redColor()  //设置背景颜色
        self.view.addSubview(aView) //加入到view中
        println("View Frame坐标为(\(self.view.frame.origin.x),\(self.view.frame.origin.y))")
        println("View Bounds坐标为(\(self.view.bounds.origin.x),\(self.view.bounds.origin.y))")
        println("aView Frame坐标为(\(aView.frame.origin.x),\(aView.frame.origin.y))")
        println("aView Bounds坐标为(\(aView.bounds.origin.x),\(aView.bounds.origin.y))")

运行结果如下:
这里写图片描述
最后在控制台输出的结果为:
这里写图片描述
由此可以看出aView的确与主视图的原点为起点,得到自己的位置,而Bounds还是以IOS系统原点为左边.

创建UIView

通过刚刚的代码也可以看到有创建UIView的代码

var aView = UIView(frame: CGRect(x: 100, y: 100, width: 100, height: 100))
aView.backgroundColor = UIColor.redColor()  //设置背景颜色
self.view.addSubview(aView) //加入到view中

设置背景颜色只是为了能够看清楚….不然加入了也跟背景一个色,,谁分的出来啊喂…
UIView层次结构可以理解为视图树
一个视图可以嵌入多个Subview().但是只能有一个SuperView
常用的方法有:

addSubview(view:UIView) //添加子视图
insertSubview(<#view: UIView#>, atIndex: <#Int#>)//把某个视图插入到制定索引位置
exchangeSubviewAtIndex(<#index1: Int#>, withSubviewAtIndex: <#Int#>)//调换两个索引对应的视图调换位置
removeFromSuperview //把视图从父视图中移除

查找视图

UIView类中有一个tag属性,通过这个tag属性可以标识一个视图对象.
获取的方法:viewWithTag:用来检索标识过的视图

aView.tag = 10;  //设置aView的tag值
var bView = self.view.viewWithTag(10)   //获取到aView的tag 返回对象也是UIView
bView?.frame.origin = CGPoint(x: 300, y: 300)   //改变位置到300,300处
bView?.backgroundColor = UIColor.blueColor()  //改变了颜色 

再次运行一下上代码,会赫然发现.aView居然变色成蓝色了,,而且跑到屏幕边上去了..tag值只能接受int值
UIView常用属性
alpha //透明度
backgroundColor //背景色
subViews //子视图集合
hidden //是否隐藏 true or false
tag //标签值
superView //父视图
multipleTouchEnabled //是否开启多点触摸
userInteractionEnabled //是否响应触摸事件

坐标变换

坐标变换是通过transform属性来改变
CGAffineTransformScale //对视图比例缩放
CGAffineTransformRotate //对视图作变焦旋转
CGAffineTransformTranslate //对视图在原来的位置上做平移
添加代码如下:

//先见aView的transform赋值给一个对象,然后在每次使用aView的transform的时候调用该对象
var transForm = aView.transform
aView.transform = CGAffineTransformScale(transForm, 2, 2)//放大
aView.transform = CGAffineTransformRotate(transForm, 10)//旋转
aView.transform = CGAffineTransformTranslate(transForm, 100, 100)

UIView属性的动画

UIView对象中支持对象的属性有:
frame - 可以使用这个来动画的改变视图的尺寸和位置
bounds - 使用这个可以动画的改变视图的尺寸
center - 使用这个可以动画的改变视图的位置
transform - 使用这个可以旋转或缩放视图
alpha - 使用这个可以改变视图的透明度
backgroundColor - 可以改变视图的背景颜色
contentStetch - 改变视图的拉伸
添加一段动画代码:

var transform = aView.transform

UIView.animateWithDuration(3, animations: {
            aView.backgroundColor = UIColor.blueColor()
            aView.transform = CGAffineTransformScale(transform, 0.1, 1)
            aView.transform = CGAffineTransformRotate(transform, 40)
            aView.transform = CGAffineTransformTranslate(transform, 200, 150)
            aView.alpha = 0.5
})

然后添加后运行你会发现一个突然间拉伸很畸形的正方形往右边跑起来,而且还会绕圈,跑到了比之前的坐标还下去的地方,而且还慢慢变透明.
这个方法使用的是UIView的一个动画方法,方法第一个参数为一个时间,表示要几秒完成这些操作,第二个方法为一个代理传入一个参数,这应该是算使用了闭包函数来直接进行了动画的DUANG…..特效….

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值