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. ...
随机推荐
- DDD领域模型企业级系统Unity(五)
添加程序集: 写一个接口: public interface IPlayer { void Play(); } 两个实现类: public class NewPlay : IPlayer { publ ...
- 前端架构之路:Windows下安装Nodejs步骤
最近打算把我们的微信端用Vue.js重构,为什么选择Vue.js,一是之前使用的是传统的asp.net mvc,多页面应用用户体验比单页面要差.二是使用过Angular.js,感觉对开发人员要求较 ...
- 【LeetCode】74. Search a 2D Matrix
Difficulty:medium More:[目录]LeetCode Java实现 Description Write an efficient algorithm that searches f ...
- MySQL子查询,派生表和通用表达式
一:子查询 1.介绍 在另一个查询(外部查询)中嵌套另一个查询语句(内部查询),并使用内部查询的结果值作为外部查询条件. 2.子查询在where中 SELECT customerNumber, che ...
- ubuntu18.04 安装mysql不出现设置 root 帐户的密码问题(装)
ubuntu18.04 安装mysql不出现设置 root 帐户的密码问题 https://blog.csdn.net/NeptuneClouds/article/details/80995 ...
- P2651 添加括号III
P2651 添加括号III无论怎么添加,a2一定是分母,其他的可以是分子,所以最后看看,(a1*a3*..*an)%a2==0即可 #include<iostream> #include& ...
- 002.NTP服务端搭建
一 安装及准备 1.1 安装NTP [root@server ~]# yum -y install ntp #也可下载之后rpm安装,或者源码安装 1.2 NTP服务地址 http://www.ntp ...
- [NOIp2003提高组]神经网络
OJ题号:洛谷1038 思路:拓扑排序,注意细节.1.题目中求和运算$C_i=\displaystyle{\sum_{(j,i)\in E}W_{ji}C_j-U_i}$中$U_i$在求和运算外,只要 ...
- 邻接矩阵实现图的存储,DFS,BFS遍历
图的遍历一般由两者方式:深度优先搜索(DFS),广度优先搜索(BFS),深度优先就是先访问完最深层次的数据元素,而BFS其实就是层次遍历,每一层每一层的遍历. 1.深度优先搜索(DFS) 我一贯习惯有 ...
- python tcp 实时抓包
问题:之前我们系统上线后,因为是旧的系统,没有加统计的功能,比如用户喜欢那个页面,是哪些用户再访问,接口的负载能力等等. 解决办法:1,现有代码更改,添加功能.现有代码侵入太多,工作量比较大 2,想到 ...