swift语言基础:UIView视图,CGRect,UIColor
CGRect,CGPoint和CGSize都是结构体,它们的定义如下: <span style="font-size:14px;">public struct CGRect { public var origin: CGPoint public var size: CGSize } </span> <span style="font-size:14px;">public struct CGPoint { public var x: CGFloat public var y: CGFloat } </span> <span style="font-size:14px;">public struct CGSize { public var width: CGFloat public var height: CGFloat } </span> CGRectMake(x:CGFloat,_ y:CGFloat,_ width:CGFloat,_ height:CGFloat) -> CGRect 上述方法可以生成一个CGRect类型的对象,该函数有4个参数:分别是,创建视图的左上角距离屏幕左边界像素值,创建视图的左上角距离屏幕上边界像素值,视图宽度,视图高度。这些都是结构体,下面来说点比较高大上的~ UIView是所有iOS中控件的父类。例如按钮,标签,输入框等。也就是说,界面上显示的所有控件都是UIView。 可以利用UIView类的构造方法创建一个新的UIView,代码写在func viewDidLoad中,该方法是当前的视图控制器加载完成时系统自动调用的方法,一般将UI布局和数据加载的代码写在viewDidLoad方法中。 于是,创建UIView的方法为: <span style="font-size:14px;"> override func viewDidLoad() { super.viewDidLoad() let firstView = UIView(frame: CGRectMake(100,200,110,150)) firstView.backgroundColor = UIColor.redColor() self.view.addSubview(firstView) } </span>上文中出现了新的类UIColor,颜色的使用一般有如下几种方式: 1、使用系统自带的颜色创建法 2、使用三原色进行创建 3、使用图片 栗子: <span style="font-size:14px;">override func viewDidLoad() { super.viewDidLoad() // 系统自带的快速创建颜色方法 let firstView = UIView(frame: CGRectMake(10,60,50,50)) firstView.backgroundColor = UIColor.redColor() self.view.addSubview(firstView) // 指定颜色 let secondView = UIView(frame: CGRectMake(100,50)) secondView.backgroundColor = UIColor(red: 0.5,green: 0.5,blue: 1,alpha: 0.5) self.view.addSubview(secondView) // 使用图片 let thirdView = UIView(frame: CGRectMake(100,140,121,121)) thirdView.backgroundColor = UIColor(patternImage: UIImage(named:"swift.png")!) self.view.addSubview(thirdView) }</span> 在使用图片创建颜色并使用这个颜色的时候,该图片时平铺的,不会根据view的大小进行缩放。 <span style="font-size:14px;">self.view.addSubview(firstView)</span> 这是,我们称:self.view是firstView的父视图,而firstView则是self.view的子视图。任何一个视图的frame参数设置都是相对于父视图而言的,也就是说 <span style="font-size:14px;">let thirdView = UIView(frame: CGRectMake(100,121))</span> 100,140这两个参数是指从父视图边界开始算起的像素值。 另外,一个父视图,可以有好几个子视图。新添加的子视图,是覆盖在旧的视图的下面的,swift提供了一些方法来安排子视图的顺序~ <span style="font-size:14px;"><span style="white-space:pre"> </span>self.view.insertSubview(view: UIView,aboveSubview: UIView) <span style="white-space:pre"> </span>self.view.insertSubview(view: UIView,atIndex: Int) self.view.insertSubview(view: UIView,belowSubview: UIView)</span> 如此便可以在添加子视图的时候随心意安排子视图的顺序~真真是极好的~~ 另外,已经添加的子视图也可以调整层次顺序: <span style="font-size:14px;"> thirdView.bringSubviewToFront(view: UIView)// 将该view移动到所有子视图上面</span> <span style="font-size:14px;"><span style="white-space: pre;"> </span>thirdView.sendSubviewToBack(view: UIView)// 将该view移动到最下面</span> <span style="font-size:14px;"> thirdView.exchangeSubviewAtIndex(index1: Int,withSubviewAtIndex: Int)// 将下标为index1和index2的子视图交换位置</span> 此外,UIView类中也提供了一些简单的动画: 在软件开发过程中,一些动画是必不可少的,有了这些动画,可以让人觉得,咱们的app软软的,像个小动物一样在手里,于是评分暴增~哈哈哈~ 言归正传咯,动画动画:<span style="font-size:14px;"> UIView.animateWithDuration(duration: NSTimeInterval,delay: NSTimeInterval,options: UIViewAnimationOptions,animations: { <span style="white-space:pre"> </span>() -> Void in code }) { (Bool) -> Void in code }</span> 几个参数含义: 动画持续时间 延迟,即在某时间后开始动画 相关的动画运行参数,例如设置为repeat,则动画就会一直重复执行 闭包,在这个闭包内,所有的参数都是动画的最终状态 另一个闭包,表示整个动画发生完成后会执行这个动画
需要注意的是,在动画的闭包体内所有的状态都应该可以是连续改变的,因此,如果讲view的颜色设置为图片颜色,那么不能实现从一个图片渐变到另一张图片,因为图片的转变不连续。 为了方便管理所有的view,可以为每一个view设置tag属性: view.tag = 100 这一篇的最后,来说一下view的移除: <span style="font-size:14px;"> <span style="white-space:pre"> </span>var view = self.view.viewWithTag(100) view?.removeFromSuperview()</span>锵锵锵,这一篇就到这里啦~作为一只兔子要去蹦跶一会儿了~ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |