加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift语言基础:UIView视图,CGRect,UIColor

发布时间:2020-12-14 01:47:17 所属栏目:百科 来源:网络整理
导读: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 publi

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>
锵锵锵,这一篇就到这里啦~作为一只兔子要去蹦跶一会儿了~

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读