draw_rect,按需绘制
来源:互联网 发布:无线键盘鼠标 知乎 编辑:程序博客网 时间:2024/04/27 14:19
改变控件的样子
添加了一个button,默认的样子太单一,希望换种样式,可以给它指定一个image。
不过这里还有另外一种很简单的方法,就是自定义一个class,继承自UIButton,然后覆盖默认的draw_rect,就可以在里面改变样式了。
Core Graphics是专门用来进行图形绘制的。apple封装了一个UIKit,简化了core graphics的操作。
如何使用UIkit绘制呢?这里有一段简单的代码, 其中UIBezierPath是用来定义路径的。
var path = UIBezierPath(ovalInRect: rect)//以rect为外切矩形,绘制椭圆fillColor.setFill()// 填充色path.fill() //填充
让自定义的显示在stroyboard中动起来
draw_rect中虽然添加了一些新的绘制,但是不能从storyboard中看到,每次都要build才能知道自己的绘制结果,这样真是麻烦。
不过apple给我们提供了下面的方法,让我们的draw_rect能够从storyboard直接看到,太给力了
@IBDesignable – Interactive Drawing
- just before the class declaration
@IBInspectable – Custom Storyboard Properties
- @IBInspectable is an attribute you can add to a property that makes it readable by Interface Builder.
CoreGraphic
在前面的代码中,我们使用了UIBezierPath绘制路径,UIBezierPath是UIKit封装的方法,调用的是更底层的Core Graphics,它们之间的关系可以在前面的图片中看出。
Core Graphics函数具有这些特点:
- 以CG开头
- 都是C函数
绘制一个如下所示的图形
代码如下:
override func drawRect(rect: CGRect) { let path = UIBezierPath(roundedRect: rect, byRoundingCorners: UIRectCorner.AllCorners, cornerRadii: CGSizeMake(8.0, 8.0)) path.addClip() //圆角 let context = UIGraphicsGetCurrentContext()//获取context let colors = [startColor.CGColor, endColor.CGColor] let colorSpace = CGColorSpaceCreateDeviceRGB() let colorLocation: [CGFloat] = [0.0, 1.0] let gradient = CGGradientCreateWithColors(colorSpace, colors, colorLocation) let startPoint = CGPoint.zero let endPoint = CGPoint(x: 0, y: bounds.height) CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, CGGradientDrawingOptions.DrawsAfterEndLocation)}
0 0
- draw_rect,按需绘制
- 绘制
- Android开发:绘制按纽
- 按下鼠标绘制连续的线
- html5 canvas绘制文字按规则换行
- [dx] 启用dx 和 基本绘制所需的步骤
- 利用matlab绘制类似拟合、残差图(需手工合并)
- 绘制频谱图所需数据精简算法
- 只需7步让你快速绘制甘特图
- 自定义button 的 字体绘制,按下状态图片变换
- 用qwt绘制按秒采集数据波形图
- IOS按坐标逐点绘制灰度图片
- 绘制一棵树
- 绘制直方图
- 绘制平行线
- 绘制曲线
- 绘制边框
- 绘制图形
- USACO Section 1.3 wormhole (暴力+模拟)
- 无题(四)续:分割字符串(在堆空间分配内存)
- JUnit报错java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
- 基于角色的访问控制(RBAC)介绍
- cf#309-B. Ohana Cleans Up-排序水题
- draw_rect,按需绘制
- XML 基础知识
- 聪明无用
- void main()误区
- jaxp解析xml 对xml文件进行增删改查
- 自己动手编译的openjdk7u6(在ubuntu14.04)
- CF#309-A. Kyoya and Photobooks-水题
- Socket学习:模拟FTP软件
- uva1329 Corporative Network