Swift - 绘制背景线条
Swift - 绘制背景线条

效果

源码
//
// BackgroundLineView.swift
// LineBackgroundView
//
// Created by YouXianMing on 16/8/14.
// Copyright © 2016年 YouXianMing. All rights reserved.
// import UIKit // MARK: Public class : BackgroundLineView class BackgroundLineView: UIView { // MARK: Properties. /// Line width, default is 5.
var lineWidth : CGFloat { get {return backgroundView.lineWidth} set(newVal) { backgroundView.lineWidth = newVal
backgroundView.setNeedsDisplay()
}
} /// Line gap, default is 3.
var lineGap : CGFloat { get {return backgroundView.lineGap} set(newVal) { backgroundView.lineGap = newVal
backgroundView.setNeedsDisplay()
}
} /// Line color, default is grayColor.
var lineColor : UIColor { get {return backgroundView.lineColor} set(newVal) { backgroundView.lineColor = newVal
backgroundView.setNeedsDisplay()
}
} /// Rotate value, default is 0.
var rotate : CGFloat { get {return backgroundView.rotate} set(newVal) { backgroundView.rotate = newVal
backgroundView.setNeedsDisplay()
}
} convenience init(frame: CGRect, lineWidth : CGFloat, lineGap : CGFloat, lineColor : UIColor, rotate : CGFloat) { self.init(frame : frame)
self.lineWidth = lineWidth
self.lineGap = lineGap
self.lineColor = lineColor
self.rotate = rotate
} // MARK: Override system method. override func layoutSubviews() { super.layoutSubviews()
setupBackgroundView()
} override init(frame: CGRect) { super.init(frame: frame) self.layer.masksToBounds = true
self.addSubview(backgroundView)
} required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented")
} // MARK: Private value & func. private let backgroundView = LineBackground(length: ) private func setupBackgroundView() { let drawLength = sqrt(self.bounds.size.width * self.bounds.size.width + self.bounds.size.height * self.bounds.size.height)
backgroundView.frame = CGRectMake(, , drawLength, drawLength)
backgroundView.center = CGPointMake(self.bounds.size.width / 2.0, self.bounds.size.height / 2.0)
backgroundView.setNeedsDisplay()
}
} // MARK: Private class : LineBackground private class LineBackground : UIView { private var rotate : CGFloat =
private var lineWidth : CGFloat =
private var lineGap : CGFloat =
private var lineColor : UIColor = UIColor.grayColor() override init(frame: CGRect) { super.init(frame: frame)
self.backgroundColor = UIColor.clearColor()
} required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented")
} convenience init(length : CGFloat) { self.init(frame : CGRectMake(, , length, length))
} override func drawRect(rect: CGRect) { super.drawRect(rect) if self.bounds.size.width <= || self.bounds.size.height <= { return
} let context = UIGraphicsGetCurrentContext()
let width = self.bounds.size.width
let height = self.bounds.size.width
let drawLength = sqrt(width * width + height * height)
let outerX = (drawLength - width) / 2.0
let outerY = (drawLength - height) / 2.0
let tmpLineWidth = lineWidth <= ? : lineWidth
let tmpLineGap = lineGap <= ? : lineGap var red : CGFloat =
var green : CGFloat =
var blue : CGFloat =
var alpha : CGFloat = CGContextTranslateCTM(context, 0.5 * drawLength, 0.5 * drawLength)
CGContextRotateCTM(context, rotate)
CGContextTranslateCTM(context, -0.5 * drawLength, -0.5 * drawLength) lineColor.getRed(&red, green: &green, blue: &blue, alpha: &alpha)
CGContextSetRGBFillColor(context, red, green, blue, alpha) var currentX = -outerX while currentX < drawLength { CGContextAddRect(context, CGRectMake(currentX, -outerY, tmpLineWidth, drawLength))
currentX += tmpLineWidth + tmpLineGap
} CGContextFillPath(context)
}
}
使用
//
// ViewController.swift
// LineBackgroundView
//
// Created by YouXianMing on 16/8/14.
// Copyright © 2016年 YouXianMing. All rights reserved.
// import UIKit class ViewController: UIViewController { let tmpView = BackgroundLineView(frame: CGRectMake(, , , ), lineWidth: , lineGap: ,
lineColor: UIColor.blackColor().colorWithAlphaComponent(0.045), rotate: CGFloat(M_PI_4)) override func viewDidLoad() { super.viewDidLoad() tmpView.center = self.view.center
self.view.addSubview(tmpView)
}
}
Swift - 绘制背景线条的更多相关文章
- 代码SketchPaintCode绘制
作者:codeGlider 在我的上一篇文章中 swift10分钟实现炫酷的导航控制器跳转动画,有一个swift logo的形状 上一篇文章的动画 我说的就是中间用来做遮罩的形状. 它不是图片是用一段 ...
- 用Sketch和PaintCode快速得到绘制代码
http://www.cocoachina.com/ios/20150901/13155.html 作者:codeGlider 授权本站转载. 在我的上一篇文章中 swift10分钟实现炫酷的导航控制 ...
- ASP.NET图形验证码的生成
效果: 调用方法: int[] r = QAPI.VerifImage.RandomList();//取得随机数种子列 );//产生验证码字符 pictureBox1.Image = QAPI.Ver ...
- Swift - LineChart绘制折线图
LineChart,就使用Core Graphics和QuartzCore框架中的CAShapeLayer绘制.这样执行效率明显比堆砌UIView的方法效率高--占用资源少,执行快. 看看CALaye ...
- iOS swift使用xib绘制UIView
目标:用xib绘制一个UIView,在某个ViewController中调用. 三个文件:ViewController.Swift DemoView.swift DemoView.xib ...
- iOS绘制坐标图,折线图-Swift
坐标图,经常会在各种各样的App中使用,最常用的一种坐标图就是折线图,根据给定的点绘制出对应的坐标图是最基本的需求.由于本人的项目需要使用折线图,第一反应就是搜索已经存在的解决方案,因为这种需求应该很 ...
- Swift - EasingAnimation绘制圆环动画
Swift - EasingAnimation绘制圆环动画 效果 源码 https://github.com/YouXianMing/Swift-Animations // // CircleView ...
- iOS圆角view的Swift实现(利用Core Graphics绘制)
iOS圆角view的Swift实现(利用Core Graphics绘制) 因为app的列表用用到了圆形图片的头像,所以去探究并思考了一下这个问题.首先这个问题有两个方向的解决方案: 把图片弄成圆形的. ...
- [Swift通天遁地]八、媒体与动画-(5)使用开源类库绘制文字、图形、图像、图表、SVG(可缩放矢量图形)
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
随机推荐
- python3.6连接oracle数据库
下载cx_Oracle模块模块: https://pypi.python.org/pypi/cx_Oracle/5.2.1#downloads 这里下载的是源码进行安装 [root@oracle or ...
- Java编程的逻辑 (10) - 强大的循环
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...
- NET Core中使用Angular2的Token base身份认证
下载本文提到的完整代码示例请访问:How to authorization Angular 2 app with asp.net core web api 在ASP.NET Core中使用Angula ...
- JTree 添加 , 删除, 修改
package com.swing.demo; import java.awt.BorderLayout; import java.awt.Container; import java.awt.eve ...
- ubuntu18.04初始化配置
目录 ubuntu18.04初始化配置 ifconfig sshd smb other vim 配置 最后 ubuntu18.04初始化配置 虚拟机挂了, 又得重新安装配置一遍, 这里记录了我几乎每次 ...
- [转]c++优先队列(priority_queue)用法详解
既然是队列那么先要包含头文件#include <queue>, 他和queue不同的就在于我们可以自定义其中数据的优先级, 让优先级高的排在队列前面,优先出队 优先队列具有队列的所有特性, ...
- 51nod 1584加权约数和
学到了好多东西啊这题... https://blog.csdn.net/sdfzyhx/article/details/72968468 #include<bits/stdc++.h> u ...
- CodeForces700E Cool Slogans
感谢dalaoWJZ的讲解. 我们对于每一个串a[i]相当于在他parent的right集合里找一个出现位置在id-len[x]+len[parent]到id[x]-1区间的 用主席树判存在性即可. ...
- bzoj 4036 集合幂级数
集合幂级数其实就是一种集合到数的映射,并且我们针对集合的一些操作(or xor and specil or )为这种映射定义运算.其中一些东西可以通过某些手段将其复杂度降低. orz vfk /** ...
- 喵哈哈村的魔法考试 Round #2 (Div.2) 题解
喵哈哈村的魔法考试 Round #2 (Div.2) 题解 A.喵哈哈村的战争 题解: 这道题就是for一遍,统计每个村子的战斗力的和,然后统计哪个村子的战斗力和大一点就好了. 唯一的坑点,就是这道题 ...