Swift开发在UIView上绘制矩形(直角,圆角,带边框)

当系统要显示一个视图(UIView)时,它会向视图发送drawRect(rect:)消息。所以,如果我们需要在视图上进行绘制,则可以在drawRect方法内部实现。

 

1,用纯色填充的矩形

下面创建一个长宽都为100的矩形UIView,坐标(50,50)。其内部使用绿色填充。

开发在UIView上绘制矩形(直角,圆角,带边框)-swift uiview 圆角">

 

 代码如下 复制代码
import UIKit
 
class ViewController: UIViewController {
 
    override func viewDidLoad() {
        super.viewDidLoad()
         
        let viewRect = CGRect(x: 50, y: 50, width: 100, height: 100)
        let view1 = MyCanvas(frame: viewRect)
        self.view.addSubview(view1)
    }
 
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}
 
class MyCanvas: UIView {
    override func drawRect(rect: CGRect) {
        UIColor.greenColor().setFill()
        let path = UIBezierPath(rect: self.bounds)
        path.fill()
    }
}

2,绘制圆角矩形,同时添加外部边框轮廓

(1)在对一个路径描边时,轮廓线是在路径上绘制的。由于设置轮廓线宽度为3,为了让轮廓线不会被边缘裁去一部分,使用 CGRectInset函数保持中心点不变的情况下矩形内缩一个点。

(2)重写init(frame: CGRect) 方法,将背景色设为透明,否则背景是黑色的(四个圆角透明部分会显示黑色)

 

 代码如下 复制代码

import UIKit
 
class ViewController: UIViewController {
 
    override func viewDidLoad() {
        super.viewDidLoad()
         
        let viewRect = CGRect(x: 50, y: 50, width: 100, height: 100)
        let view1 = MyCanvas(frame: viewRect)
        self.view.addSubview(view1)
    }
 
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}
 
class MyCanvas: UIView {
    override init(frame: CGRect) {
        super.init(frame: frame)
        //把背景色设为透明
        self.backgroundColor = UIColor.clearColor()
    }
 
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
     
    override func drawRect(rect: CGRect) {
        let pathRect = CGRectInset(self.bounds, 1, 1)
        let path = UIBezierPath(roundedRect: pathRect, cornerRadius: 10)
        path.lineWidth = 3
        UIColor.greenColor().setFill()
        UIColor.blueColor().setStroke()
        path.fill()
        path.stroke()
    }
}

时间: 2024-07-31 03:42:03

Swift开发在UIView上绘制矩形(直角,圆角,带边框)的相关文章

ios-iPhone-两个UIView最小的矩形

问题描述 iPhone-两个UIView最小的矩形 有两个UIView,需要绘制一个矩形,或获取两个UIView框架最小的矩形. 应该怎么实现? 解决方案 问题描述不明确.如果在UIView中绘制矩形,在-(void)drawRect 中来画. -(void)drawRect { CGRect rect=self.bounds; CGContextRef context=UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(c

iOS中 切圆角,任意几个角(带边框,不带边框)__OC和Swift版本 韩俊强的博客

需求: 1.日常我们在切控件圆角时会遇到想切任意圆角? 2.切过圆角带边框和不带边框的选择? 那么今天我们就用Objective-C和Swift都给它实现了: OC代码: UILabel *myLabel = [[UILabel alloc]initWithFrame:CGRectMake(100, 100, 200, 70)]; myLabel.text = @"Hi,小韩哥!"; myLabel.font = [UIFont systemFontOfSize:20.0]; myLa

《iOS 6核心开发手册(第4版)》——1.8节秘诀:在屏幕上绘制触摸

1.8 秘诀:在屏幕上绘制触摸 iOS 6核心开发手册(第4版) UIView提供了在屏幕上直接绘图的功能.它的drawRect:方法提供了一种直接绘制内容的低级方式,允许使用Quartz 2D调用创建和显示任意的元素.结合使用触摸和绘图可以构建具体的.可操作的界面. 秘诀1-7把姿势与drawRect相结合,引入了基于触摸的绘画.当用户触摸屏幕时,TouchTrackerView类将沿着用户的手指构建一条贝塞尔曲线路径.为了在触摸时画出前进的路径,touchesMoved:withEvent:

ios开发之在UIView上使用自定义曲线绘制复杂图形(贝塞尔曲线)

有时我们需要绘制一个不规则路径的图形,里面可能包含直线或者曲线,这时就可以使用 UIBezierPath 来实现.   UIBezierPath类可以表示任何能够用Bezier曲线定义的形状,我们可以创建自己的自定义曲线.完成操作后,可以像其他路径一样,使用所得到的UIBezierPath对象进行填充和描边.   1,下面演示使用UIBezierPath绘制一个不规则图形: (1)画笔移动到矩形区域左上角 (2)从笔的当前位置向右上角的点画一条直线 (3)从笔的当前位置向左下角的点画一条直线 (

HTML5 2D游戏开发:将事物绘制到画布上并让其运动起来

您还将学习利用http://www.aliyun.com/zixun/aggregation/79228.html"> HTML5 实现动画的最佳方式,如何滚动背景,以及如何实现视差,从而模拟三维效果. 图形和动画是任何视频游戏最根本的方面,所以在本文中,我将从 Canvas2D API 的简要介绍开始,对 Snail Bait 的中央动画的实现进行讨论.在本文中,您将学习如何: 将图像和图形基元绘制到画布上 创建流畅的.无闪烁的动画 实现游戏循环 以帧数每秒为单位监视动画的速度 滚动游戏

疑问-IOS开发,cell中的UIView上添加的按钮不能响应事件

问题描述 IOS开发,cell中的UIView上添加的按钮不能响应事件 cell 里添加UIView,UIView上添加按钮,但是按钮不能响应点击时间,交互都打开了,怎么回事,求解.. 解决方案 可能是线程卡死,也可能是所有事件全部都集中在了UIView上无法分发时间,这里给你推荐一个博客http://blog.csdn.net/u013243469/article/details/41284027

《OpenGL ES应用开发实践指南:Android卷》—— 3.5 在屏幕上绘制

3.5 在屏幕上绘制 随着完成这些最后的连接,我们现在就准备好开始在屏幕上绘制了!我们将先画桌子,然后画分隔线和木槌. 3.5.1 绘制桌子 在onDrawFrame()结尾处,让我们在glClear()调用之后加入如下代码: 我们首先通过调用glUniform4f()更新着色器代码中的u_Color的值.与属性不同,uniform的分量没有默认值,因此,如果一个uniform在着色器中被定义为vec4类型,我们需要提供所有四个分量的值.我们想要以画一张白桌子作为开始,因此,我们把红色.绿色和蓝

Swift开发iOS应用过程中的问题和解决记录

Swift开发iOS应用过程中的问题和解决记录 虚拟机里安装OSX+XCode开发环境 用真机的请直接跳过这个部分. 主要是在VitrualBox里安装mac系统和xcode,参考这篇教程,VirtualBox的版本是4.3.18 r96156,OSX版本是10.11 El Capitan,XCode版本是7.1 (7B91b). 经过几天的初步使用,感觉用虚拟机开发iOS基本能够满足要求,i5/8g/ssd的配置目测能达到真机70%的开发效率.主要存在的问题是:1)在宽屏上无法满屏,两边会留有

关于《Swift开发指南》背后的那些事

时间轴(倒叙)2014年8月底在图灵出版社的大力支持下,全球第一本全面.系统.科学的,包含本人多年经验的呕心沥血之作<Swift开发指南>(配有同步视频课程和同步练习)全线重磅推出2014年7月5日苹果宣布Swift语言二十天后,<Swift开发指南>第一稿交予图灵出版社2014年6月9日苹果宣布Swift语言三天后,启动<Swift开发指南>撰写2014年6月2日凌晨1点(北京时间:)在苹果开发者大会WWDC 2014上,苹果宣布了全新的iOS及OS X平台开发语言S