码迷,mamicode.com
首页 > 编程语言 > 详细

swift和OC中frame的小差异

时间:2015-12-09 11:41:33      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:

//1.0  OC中 CGRect 、CGPoint、CGSize 的结构如下:
        struct CGRect {
            CGPoint origin;
            CGSize size;
        };

        struct CGPoint {
            CGFloat x;
            CGFloat y;
        };
        struct CGSize {
            CGFloat width;
            CGFloat height;
        };


在OC环境下,我们要改变一个控件的frame(如:x 或者 y 、width 、height)时,我们得定义一个临时的frame(假设为 CGRect temp)获取出当前控件的frame,然后通过修改temp的值后再赋值,覆盖之前的frame
        /*如: UIView *view = [[UIView alloc]init];
                view.frame = CGRectMake(100,200,20,60);
            当需要只改变x值时,我们得这么做
            CGRect  tempFrame = view.frame;
            tempFrame.origin.x = 200;
            view.frame = tempFrame;
        */
这样造成我们在做动画时,就比较繁琐。


//2.0 再看Swift中 CGRect等的结构
            public struct CGRect {
                public var origin: CGPoint
                public var size: CGSize
                public init()
                public init(origin: CGPoint, size: CGSize)
            }
            public struct CGPoint {
                public var x: CGFloat
                public var y: CGFloat
                public init()
                public init(x: CGFloat, y: CGFloat)
            }

            extension CGPoint {
                public static var zero: CGPoint { get }
                public init(x: Int, y: Int)
                public init(x: Double, y: Double)
            }

从最基本的结构看, swift 和 OC中 两者都是结构体,但是相对的swift多了两个构造方法,所以我们无法像OC中这样给frame 赋值 // view.frame = {{200,100},{100,300}}
而从swift的基本语法中,我们知道 var 是用来修饰变量的,是可以改变的,那就意味着像 origin 是可以直接改变的,// 修改x值,变得这么简单  view.frame.origin.x = 1000 就可以直接修改原有的x值,这样基于frame的基础动画变得更加容易

 

swift和OC中frame的小差异

标签:

原文地址:http://www.cnblogs.com/Iceing/p/5031972.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!