最近添加了折线视图的样式,所以在这里用Swift语言重新再使用设计一下

首先设置纵坐标的数值是:体重

//体重
        let weightLabel = UILabel.init(frame: CGRectMake(0, 10, 60, 30));
        weightLabel.text = "体重(kg)";
        weightLabel.textColor = UIColor.lightGrayColor();
        weightLabel.font = UIFont.systemFontOfSize(12);
        weightLabel.textAlignment = NSTextAlignment.Center;
        weightLabel.adjustsFontSizeToFitWidth = true;
        weightV.addSubview(weightLabel);

然后设计纵向坐标设计(一定要注意设计的顺序结构,否则坐标位置容易出问题)

//纵向
        let vierArray:NSArray = ["90","80","70","60","50","0"];
        for i:Int in 0 ..< vierArray.count {
            //纵坐标值
            let vLabel = UILabel.init(frame: CGRectMake(0, 40+CGFloat(i)*30, 30, 30));
            vLabel.text = vierArray[i] as? String;
            vLabel.font = UIFont.systemFontOfSize(11);
            vLabel.textAlignment = NSTextAlignment.Center;
            vLabel.adjustsFontSizeToFitWidth = true;
            vLabel.textColor = UIColor.lightGrayColor();
            weightV.addSubview(vLabel);
            //横坐标线
            let vLineV = UIView.init(frame: CGRectMake(30, 55+30*CGFloat(i), 260, 1));
            if i==vierArray.count-1 {
                vLineV.backgroundColor = UIColor.blackColor();
            }
            else
            {
                vLineV.backgroundColor = UIColor.lightGrayColor();
            }
            weightV.addSubview(vLineV);
        }

设置横向

//横向
        let hierArray:NSArray = ["0","1","2","3","4","5","6","7","8"];
        for i:Int in 0 ..< hierArray.count {
            //横坐标值
            let hLabel = UILabel.init(frame: CGRectMake(30*CGFloat(i), 40+30*CGFloat(vierArray.count)-15, 30, 30));
            hLabel.text = hierArray[i] as? String;
            hLabel.font = UIFont.systemFontOfSize(11);
            hLabel.textAlignment = NSTextAlignment.Right;
            hLabel.adjustsFontSizeToFitWidth = true;
            hLabel.textColor = UIColor.lightGrayColor();
            weightV.addSubview(hLabel);
            //纵坐标线
            let hLineV = UIView.init(frame: CGRectMake(30+30*CGFloat(i), 40, 1, 30*CGFloat(vierArray.count)-15));
            if i==0 {
                hLineV.backgroundColor = UIColor.blackColor();
            }
            else
            {
                hLineV.backgroundColor = UIColor.lightGrayColor();
            }
            weightV.addSubview(hLineV);
        }

横坐标:年龄

//年龄
        let ageLabel = UILabel.init(frame: CGRectMake(260, 40+30*CGFloat(vierArray.count)-15, 60, 30));
        ageLabel.text = "年龄(岁)";
        ageLabel.textColor = UIColor.lightGrayColor();
        ageLabel.font = UIFont.systemFontOfSize(12);
        ageLabel.textAlignment = NSTextAlignment.Right;
        ageLabel.adjustsFontSizeToFitWidth = true;
        weightV.addSubview(ageLabel);

接下来就是折线的显示了

//创建layer设置属性
        let layerR = CAShapeLayer.init();
        //设置包围的颜色,默认为黑色
        layerR.fillColor = UIColor.clearColor().CGColor;
        //折线宽度
        layerR.lineWidth = 1.0;
        //设置折线颜色
        layerR.strokeColor = UIColor.blueColor().CGColor;
        weightV.layer.addSublayer(layerR);
        
        //创建贝塞尔路径
        let pathH = UIBezierPath.init();
        //设置起点
        pathH.moveToPoint(CGPointMake(30, 100));
        //添加坐标点
        let xArray:NSArray = [50,70,90,110,130,150,170,190,210,230,250,270];
        let yArray:NSArray = [160,180,200,200,150,120,80,100,130,130,180,110];
        for i:Int in 0 ..< xArray.count {
            pathH.addLineToPoint(CGPointMake((xArray[i] as! CGFloat), (yArray[i] as! CGFloat)));
        }
        layerR.path = pathH.CGPath;
        
        //创建基础动画,连接个点
        let animationN = CABasicAnimation.init(keyPath: "strokeEnd");
        //设置时间
        animationN.duration = 5;
        //添加动画
        layerR.addAnimation(animationN, forKey: nil);

效果图如下:

源码下载:http://download.csdn.net/detail/hbblzjy/9651941

Swift基础之设计折线坐标图的更多相关文章

  1. iOS绘制坐标图,折线图-Swift

    坐标图,经常会在各种各样的App中使用,最常用的一种坐标图就是折线图,根据给定的点绘制出对应的坐标图是最基本的需求.由于本人的项目需要使用折线图,第一反应就是搜索已经存在的解决方案,因为这种需求应该很 ...

  2. iOS Swift 模块练习/swift基础学习

    SWIFT项目练习     SWIFT项目练习2 iOS Swift基础知识代码 推荐:Swift学习使用知识代码软件 0.swift中的宏定义(使用方法代替宏) 一.视图  +控件 1.UIImag ...

  3. 【转】Swift 语言的设计错误

    Swift 语言的设计错误 在『编程的智慧』一文中,我分析和肯定了 Swift 语言的 optional type 设计,但这并不等于 Swift 语言的整体设计是完美没有问题的.其实 Swift 1 ...

  4. swift基础:第六部分:类与对象

    http://reactnative.cn/docs/0.24/getting-started.html#content(react Native 开发文档) 互联网这个时代,你松懈一天,就会有很多很 ...

  5. swift基础:第二部分:函数和闭包

    今天本来想利用上午的时间本来打算将swift基础部分学习完的,不巧的是,后台来和我讨论用户评价的接口,讨论过后,商讨出一种可行的方案,十几分钟时间过去了,我拿到将接口介入到已经完成的页面中,完美,终于 ...

  6. Swift基础语法学习总结(转)

    Swift基础语法学习总结 1.基础  1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型 ...

  7. Swift基础语法学习总结

    Swift基础语法学习总结Swift高级语法学习总结Swift语法总结补充(一) 1.基础  1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift ...

  8. swift -- 基础

    swift -- 基础 1.常量和变量 常量: let 变量: var 2.声明常量和变量 常量的声明: let let  a = 1         //末尾可以不加分号,等号两边的空格必须对应(同 ...

  9. Swift基础学习

    Swift基础学习  http://c.biancheng.net/cpp/html/2242.html 这个网站最近看了一下,对于基本语法解释概括的相对全面,如同重新练习一遍OC似的,挺全面的,谢谢 ...

随机推荐

  1. [NOIp 2014]解方程

    Description 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, m ] 内的整数解(n 和m 均为正整数) Input 输入文件名为equation .i ...

  2. TopCoder SRM 558 Div 1 - Problem 1000 SurroundingGame

    传送门:https://284914869.github.io/AEoj/558.html 题目简述  一个人在一个n * m棋盘上玩游戏,想要占领一个格子有两个方法: 在这个格子放一个棋子.  这个 ...

  3. ●POJ 1509 Glass Beads

    题链: http://poj.org/problem?id=1509 题解: 给出一个字符串,有一个操作:把首字符放到末尾,形成新的串.求任意次操作后,字典序最小的串的首字母在原串中的位置.(这就是最 ...

  4. bzoj 1880: [Sdoi2009]Elaxia的路线

    Description 最近,Elaxia和w的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间.Elaxia和w每天都要奔波于宿舍和实验室之间,他们 希 ...

  5. 【bzoj4568 scoi2016】幸运数字

    题目描述 A 国共有 n 座城市,这些城市由 n-1 条道路相连,使得任意两座城市可以互达,且路径唯一.每座城市都有一个幸运数字,以纪念碑的形式矗立在这座城市的正中心,作为城市的象征. 一些旅行者希望 ...

  6. python dataframe数据条件筛选

    一般情况下我们从一堆数据中选择我们获取想要的数据会通过一下方式: (1)创建链表或数组: (2)用for 循环遍历所有数据,将想要的存入链表或数组. 但是python中我们不需要这么做,我们可以用Pa ...

  7. Python中文件的操作

    文件的操作介绍 文件打开的方法 主要有两种: no with 格式:open(file, mode='r', buffering=-1, encoding=None, errors=None, new ...

  8. 解决$.ajax()在IE10以下失效的问题

    一.问题重现 本地的脚本请求测试环境的接口 $.ajax({ url: ***, type: GET, data: data, success: function (data) { **** } }) ...

  9. ES6(es2015)新增实用方法汇总

    Array 1.map() [1,2,3,4].map(function(item, index, array){ return  item * 2; }) 对数组中的每一项执行一次回调函数,三个参数 ...

  10. Android TextView常用属性

    [说明] TextView是用来显示文本的组件.以下介绍的是XML代码中的属性,在java代码中同样可通过 "组件名.setXXX()方法设置.如,tv.setTextColor(); [属 ...