首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在swift中为矩形uiview提供虚线边框

在Swift中为矩形UIView提供虚线边框,可以通过以下步骤实现:

  1. 创建一个自定义的UIView子类,命名为DashedBorderView,继承自UIView。
代码语言:txt
复制
class DashedBorderView: UIView {
    
}
  1. 在DashedBorderView类中添加一个CAShapeLayer属性,用于绘制虚线边框。
代码语言:txt
复制
class DashedBorderView: UIView {
    private let dashedBorderLayer = CAShapeLayer()
    
    // ...
}
  1. 在DashedBorderView类的初始化方法中,设置CAShapeLayer的虚线样式。
代码语言:txt
复制
class DashedBorderView: UIView {
    private let dashedBorderLayer = CAShapeLayer()
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        setupDashedBorder()
    }
    
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        setupDashedBorder()
    }
    
    private func setupDashedBorder() {
        dashedBorderLayer.strokeColor = UIColor.black.cgColor
        dashedBorderLayer.lineWidth = 1
        dashedBorderLayer.lineDashPattern = [4, 4] // 设置虚线样式,4为线段长度,4为间隔长度
        dashedBorderLayer.fillColor = nil
        layer.addSublayer(dashedBorderLayer)
    }
}
  1. 在DashedBorderView类中重写layoutSubviews方法,更新虚线边框的路径。
代码语言:txt
复制
class DashedBorderView: UIView {
    private let dashedBorderLayer = CAShapeLayer()
    
    // ...
    
    override func layoutSubviews() {
        super.layoutSubviews()
        dashedBorderLayer.path = UIBezierPath(rect: bounds).cgPath
    }
}
  1. 在需要使用虚线边框的UIView中,使用DashedBorderView替代原有的UIView,并设置其frame。
代码语言:txt
复制
let dashedBorderView = DashedBorderView(frame: CGRect(x: 0, y: 0, width: 200, height: 100))
view.addSubview(dashedBorderView)

通过以上步骤,我们可以在Swift中为矩形UIView提供虚线边框。这种方法可以用于各种需要虚线边框的场景,比如表单输入框、图片边框等。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Xib、Nib、Storyboard下修改控件边框颜色、大小、圆角

问题: 今天有一个页面有很多uibutton,所以就用xib搭了界面,然后问题来了,如何在xib下修改控件的边框颜色和大小、圆角?...我之前知道利用IB面板下的“UserDefined Runtime Attributes”(如下图),然后问题来了,设置圆角可以成功设置,但是设置uibutton的边框颜色不行。...colorWithCGColor:self.borderColor]; } @end 自定义的时候要注意borderIBColor属性的setter和getter方法的内容不要错了,然后可以完美运行 扩展:在swift...2.0可以用一下方法(我没有试) import Foundation extension CALayer{ //解决IBruntime attributelayer.borderColor不能转换...{ returnUIColor(CGColor:self.borderColor) } } } 最后感谢大神们:Is it possible to set UIView border properties

2.1K20

Core Animation Programming

What's UIView在iOS开发,这个使用频率非常高的控件,同时在iOS 所有原生的视图都是由UIView派生而来....视图在屏幕上可以是一个矩形块,它能够拦截类似鼠标点击或者触摸手势等用户交互方式. 并且在层级关系上可以互相嵌套,一个视图可以管理它所有的子视图的位置等.在开发项目过程,这是非常常见的一个使用场景....一个我们最常用的控件,我们是否真正了解它What's CALayer CALayer 类是一个与UIView 非常类似的类. 同样也是被层级关系树管理的矩形块....为何开发者要使用CALayer 根据刚刚的描述,既然CALayer 只是UIView 的内部实现细节,那为何在要来使用或者学习它?...图层不能处理触摸事件,同样也要视图不能做的事情: 阴影,圆角,颜色边框 3D变换 非矩形范围 透明遮罩 多级非线性动画 CALayer's function 除了CALayer 类,CoreAnimation

1.1K10

图层树和寄宿图 -- iOS Core Animation 系列一

视图在层级关系可以互相嵌套,一个视图可以管理它的所有子视图的位置。 在iOS,所有的视图都是从UIView这个基类派生出来的。...CALayer类在概念上和UIView类似,也是一些被层级关系树管理的矩形块,也可以包含一些内容,并且管理子视图的位置。...但是有时候我们只使用UIView还是会有些捉襟见肘的,CALayer暴露了一些UIView没有提供的功能: 阴影、圆角、边框 3D变换 非矩形范围 透明遮罩 非线性动画 ---- 2.寄宿图 2.1...这是因为我们在CALayerDelegate方法,没有对超出边界歪的内容提供绘制支持。 除非创建一个单独的图层,我们平时基本不会用到CALayerDelegate。...因为UIView在创建时,会自动的吧图层的代理设置自己,然后提供了一个-displayLayer:方法实现。 ---- - 系列一完 -

1.2K20

动画分析步骤“三步曲”

在iOS视图中,左上角视图的原点(0,0),水平向右x轴递增方向,竖直向下为y轴递增方向,只有当View视图位于手机屏幕展示坐标系之内,大家才能看到(虚线区域内控件不可见),否则登录按钮是不可见的。...要想弄清楚这个问题先搞清楚ViewController.swift 几个方法的执行顺序。需要关注以下3个方法。...: TimeInterval, animations: @escaping () -> Swift.Void) 该方法属于类方法,类名可以直接调用,表明为当前的UIView添加一个动画效果,它的每个参数的含义如下...通过对frame数据类型的追本溯源,可以得到以下结论:CGRect分别对应x坐标、y坐标、width、height四个属性。这四个属性表明当前UI在它的父控件上的位置,self.view上。...3.Layer属性:圆角渐变、边框颜色、阴影、3D等高级动画效果 UIView是视图显示的容器,负责内容显示和事件响应。

86010

UIView不可不知的秘密

前言: 1、在Mac OSNSWindow的父类是NSResponder,而在iOSUIWindow的父类是UIView。程序一般只有一个窗口但是会又很多视图。...2、UIView的作用:描画和动画,视图负责对其所属的矩形区域描画、布局和子视图管理、事件处理、可以接收触摸事件、事件信息的载体等等。...我们用swift版的代码来验证下。...创建实例,添加到控制器的view,设背景色紫色,并将001赋给tag值 override func viewDidLoad() { super.viewDidLoad() let...toSuperview:)和didMoveToSuperview(),验证了当视图即将加入父视图时和当试图加入父视图时调用 之后在viewDidLoad添加一个带有延迟的添加红色view代码,值得一提的是,这是最新swift3.1

1.6K90

tkinter -- Canvas(1)

提供可以用来进行绘图的 Container,支持基本的几何元素,使用 Canvas 进行绘图时,所有的操作都是通过 Canvas,不是通过它的元素 元素的表示可以使用 handle 或 tag 第一个Canvas...指定 item 的边框颜色 创建一个矩形,指定画布的背景色白色 使用属性 outline 设置它的边框颜色 代码: import tkinter as tk root = tk.Tk() # 创建一个...指定矩形边框颜色红色,设置线宽5,注意与 Canvas 的 width 是不同的 画虚线 指定画布的背景色白色 使用属性 dash,这个值只能为奇数 代码: import tkinter as...指定矩形边框颜色红色,画虚线 使用画刷填充 指定画布的背景色白色 使用属性 stipple 代码: import tkinter as tk root = tk.Tk() # 创建一个 Canvas...指定矩形边框颜色红色,自定义画刷 修改 item 的坐标 指定画布的背景色白色 使用 Canvas 的方法来重新设置 item 的坐标 代码: import tkinter as tk root

71230

iOS动画-CALayer基础知识

CGRectMake(30, 30, kDeviceWidth -60, 200); [self.view.layer addSublayer:colorLayer]; } 3.图层的能力 苹果我们提供了简洁方便的...下面是一些UIView没有暴露出来的CALayer的功能: 设置阴影、圆角、带颜色边框 3D变换 非矩形范围 透明遮罩 多级非线性动画 二、CALyer寄宿图与contents属性 CALayer具有和...UIView一样的层级关系树,可用于显示一个矩形块。...masksToBounds属性,但示例绘制的视图依然被裁剪了,这是因为通过CALayer绘制寄宿图并没有对超出边界外的内容提供绘制支持; 3.设置代理 CALayerDelegate不能是UIView...(或视图)坐标系下的点或者矩形转换为另一个图层(或视图)坐标系下的点或者矩形;开发过程我们通常操作的对象都是视图,所以下面以视图为例简单演示其用法:首先创建添加两个宽高都是100*100的橙色、紫色视图在控制器的

1.8K50

软件测试|超好用超简单的Python GUI库——tkinter(十五)

"active" 的时候,指定填充的位图activewidth当画布对象状态 "active" 的时候,指定边框的宽度arrow默认线段是不带箭头的,通过设置该选项添加箭头到线段2....,该选项值是一个整数元组,元组的元素分别代表短线的长度和间隔,比如 (3, 5) 代表 3 个像素的短线和 5 个像素的间隔dashoffset指定虚线开始的偏移位置,比如 dash=(5, 1, 2..., 1),dashoffset=3,则从 2 开始画虚线disableddash当画布对象状态 "disabled" 的时候,绘制虚线disabledfill当画布对象状态 "disabled" 的时候..."(隐藏)三种状态stipple指定一个位图进行填充,默认值空字符串,表示实心tags创建的画布对象添加标签width指定边框的宽度对于扇形、矩形、三角形、圆形等,这些封闭式图形,它们由轮廓线和填充颜色两部分组成...dash指定绘制虚线轮廓,与绘制线段的含义相同dashoffset指定虚线轮廓开始的偏移位置disableddash当画布对象状态 "disabled" 的时候,绘制虚线disabledfill当画布对象状态

58710

CALayer 图层概念二、CALayer属性二、方法

UIView负责监听和相应事件.UIView是更高层的封装 在 iOS ,你能看得见,摸得着的东西基本上都是UIView.比如一个按钮,一个文本标签,一个文本输入框, 一个图标等.这些都是UIView... : bounds : 用于设置CALayer的宽度和高度,修改这个属性会产生缩放动画. background : 用户设置CALayer的背景色, 修改这个属性会产生背景色的渐变动画. position...@property CGPoint position; 称为 "定位点" / "锚点", 它的取值范围是0 ~ 1, 默认值0.5....此处可以和UIView的clipToBounds来比较记忆(clipToBoundsyes会使其上的内容包括子视图不能超出边界) 控件截图裁剪的三种方法: 给layer设置圆角半径layer.cornerRadius...= YES ; 设置两边多余地方不裁剪 button.imageView.clipsToBounds = NO; 路径绘制,绘图剪裁 矩形图片剪裁成圆并且外面设置圆环并存储 给layer设置背景图片

1.4K70

视觉效果 -- iOS Core Animation 系列三

然后在代码写入如下代码: @interface ViewController () @property (weak, nonatomic) IBOutlet UIView *leftView; @property...如果想要截取这个视图的图片和子视图,需要设置masksToBoundsYES。 图层边框 border CALayer另外两个非常有用的属性borderWidth和borderColor。...borderWidth是以点单位定义边框粗细的浮点数,默认为0。borderColor定义了边框的颜色,默认为黑色。 borderColor是CGColorRef类型。...如上面的示例的结果一样,边框并不会把寄宿图或子图层的相撞计算出来。而且绘制边框会显示在最上层。 阴影 shadow 阴影属性 控制图层阴影的属性会比前面的边框多一些。...我们可以在info.plist文件添加UIViewGroupOpacity并设置成YES来打到这个效果。还有一种方法就是对CALayer进行设置。

1.1K30

【CSS】盒子边框 ① ( 网页布局本质 | 盒子模型 | 盒子边框 Border | border-width 宽度 | border-style 边框样式 | 边框颜色 | 边框设置综合写法 )

, 设置盒子的大小和摆放位置 , 下图中红色矩形框就是盒子模型 ; 然后 , 将 文本 , 图片 , 链接 , 表单 等网页元素 , 按照一定的样式 , 填充进盒子 , 就形成了我们看到的网页 ;...盒子 还可以嵌套 若干盒子 ; 二、盒子模型 ---- HTML 的 一个布局 可以看做一个 矩形的 盒子模型 , 该 盒子模型 是一个用于 容纳 标签元素 的容器 ; 盒子模型 组成 : 由内到外顺序如下...: 内容 Content : 下图中 内容 100 x 100 像素的元素 ; 内边距 Padding : 内边距 Padding 位于 边框 与 内容 之间 ; 边框 Border : 边框 包裹...在 CSS 2.0 手册 , 搜索 border , 可以查询到 盒子边框 相关的文档 , 文档可以查询到边框的详细细节 : 2、边框设置语法 边框设置语法 : 设置边框宽度 : border-width...属性值 像素值 ; border-width: 10px; 设置边框样式 : border-style 属性值 设置边框样式 , 可设置的值由如下选择 : none : 默认选项 , 忽略边框宽度

3.1K20
领券