iOS UIBezierPath类 介绍

2023-05-16

使用UIBezierPath类可以创建基于矢量的路径,这个类在UIKit中。此类是Core Graphics框架关于path的一个封装。使用此类可以定义简单的形状,如椭圆或者矩形,或者有多个直线和曲线段组成的形状。
    
1.Bezier Path 基础
   UIBezierPath对象是CGPathRef数据类型的封装。path如果是基于矢量形状的,都用直线和曲线段去创建。我们使用直线段去创建矩形和多边形,使用曲线段去创建弧(arc),圆或者其他复杂的曲线形状。每一段都包括一个或者多个点,绘图命令定义如何去诠释这些点。每一个直线段或者曲线段的结束的地方是下一个的开始的地方。每一个连接的直线或者曲线段的集合成为subpath。一个UIBezierPath对象定义一个完整的路径包括一个或者多个subpaths。
   创建和使用一个path对象的过程是分开的。创建path是第一步,包含一下步骤:
(1)创建一个Bezier path对象。
(2)使用方法moveToPoint:去设置初始线段的起点。
(3)添加line或者curve去定义一个或者多个subpaths。
(4)改变UIBezierPath对象跟绘图相关的属性。
例如,我们可以设置stroked path的属性lineWidth和lineJoinStyle。也可以设置filled path的属性usesEvenOddFillRule。
   当创建path,我们应该管理path上面的点相对于原点(0,0),这样我们在随后就可以很容易的移动path了。为了绘制path对象,我们要用到stroke和fill方法。这些方法在current graphic context下渲染path的line和curve段。
2、使用UIBezierPath创建多边形---在path下面添加直线条形成多边形
多边形是一些简单的形状,这些形状是由一些直线线条组成,我们可以用moveToPoint: 和 addLineToPoint:方法去构建。
方法moveToPoint:设置我们想要创建形状的起点。从这点开始,我们可以用方法addLineToPoint:去创建一个形状的线段。
我们可以连续的创建line,每一个line的起点都是先前的终点,终点就是指定的点。
下面的代码描述了如何用线段去创建一个五边形。第五条线通过调用closePath方法得到的,它连接了最后一个点(0,40)和第一个点(100,0)
说明:closePath方法不仅结束一个shape的subpath表述,它也在最后一个点和第一个点之间画一条线段,如果我们画多边形的话,这个一个便利的方法我们不需要去画最后一条线。
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
    UIColor *color = [UIColor redColor];
    [color set]; //设置线条颜色
    
    UIBezierPath* aPath = [UIBezierPath bezierPath];
    aPath.lineWidth = 5.0;
    
    aPath.lineCapStyle = kCGLineCapRound; //线条拐角
    aPath.lineJoinStyle = kCGLineCapRound; //终点处理
    
    // Set the starting point of the shape.
    [aPath moveToPoint:CGPointMake(100.0, 0.0)];
    
    // Draw the lines
    [aPath addLineToPoint:CGPointMake(200.0, 40.0)];
    [aPath addLineToPoint:CGPointMake(160, 140)];
    [aPath addLineToPoint:CGPointMake(40.0, 140)];
    [aPath addLineToPoint:CGPointMake(0.0, 40.0)];
    [aPath closePath];//第五条线通过调用closePath方法得到的
    
    [aPath stroke];//Draws line 根据坐标点连线
}
注:这个类要继承自UIView。
运行的结果如下图:
如果修改最后一句代码: [aPath fill ];
运行结果就如下:
这样就知道stroke  和  fill  方法的区别了吧!
3、使用UIBezierPath创建矩形
使用这个方法即可:
Creates and returns a new UIBezierPath object initialized with a rectangular path.

+ (UIBezierPath *)bezierPathWithRect:(CGRect)rect

demo代码:
- (void)drawRect:(CGRect)rect
{
    UIColor *color = [UIColor redColor];
    [color set]; //设置线条颜色
    
    UIBezierPath* aPath = [UIBezierPath bezierPathWithRect:CGRectMake(20, 20, 100, 50)];
    
    aPath.lineWidth = 5.0;
    aPath.lineCapStyle = kCGLineCapRound; //线条拐角
    aPath.lineJoinStyle = kCGLineCapRound; //终点处理
    
    [aPath stroke];
}

4、 使用 UIBezierPath创建圆形或者椭圆形
使用这个方法即可:
Creates and returns a new UIBezierPath object initialized with an oval path inscribed in the specified rectangle

+ (UIBezierPath *)bezierPathWithOvalInRect:(CGRect)rect

这个方法根据传入的rect矩形参数绘制一个内切曲线。
当传入的rect是一个正方形时,绘制的图像是一个内切圆;当传入的rect是一个长方形时,绘制的图像是一个内切椭圆。
5、使用UIBezierPath创建一段弧线
使用这个方法:
Creates and returns a new UIBezierPath object initialized with an arc of a circle.

+ (UIBezierPath *)bezierPathWithArcCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise
Parameters
center
Specifies the center point of the circle (in the current coordinate system) used to define the arc.
radius
Specifies the radius of the circle used to define the arc.
startAngle
Specifies the starting angle of the arc (measured in radians).
endAngle
Specifies the end angle of the arc (measured in radians).
clockwise
The direction in which to draw the arc.
Return Value
A new path object with the specified arc.
其中的参数分别指定:这段圆弧的中心,半径,开始角度,结束角度,是否顺时针方向。
下图为弧线的参考系。


demo代码:
#define pi 3.14159265359
#define   DEGREES_TO_RADIANS(degrees)  ((pi * degrees)/ 180)
- (void)drawRect:(CGRect)rect
{
    UIColor *color = [UIColor redColor];
    [color set]; //设置线条颜色
    
    UIBezierPath* aPath = [UIBezierPath bezierPathWithArcCenter:CGPointMake(150, 150)
                                                         radius:75
                                                     startAngle:0
                                                       endAngle:DEGREES_TO_RADIANS(135)
                                                      clockwise:YES];
    
    aPath.lineWidth = 5.0;
    aPath.lineCapStyle = kCGLineCapRound; //线条拐角
    aPath.lineJoinStyle = kCGLineCapRound; //终点处理
    
    [aPath stroke];
}
结果如下图:

6、UIBezierPath类提供了添加二次贝塞尔曲线和三次贝塞尔曲线的支持。
曲线段在当前点开始,在指定的点结束。曲线的形状有开始点,结束点,一个或者多个控制点的切线定义。下图显示了两种曲线类型的相似,以及控制点和curve形状的关系。
(1)绘制二次贝塞尔曲线
使用到这个方法:
Appends a quadratic Bézier curve to the receiver’s path.

- (void)addQuadCurveToPoint:(CGPoint)endPoint controlPoint:(CGPoint)controlPoint
Parameters
endPoint
The end point of the curve.
controlPoint
The control point of the curve.


demo代码:
- (void)drawRect:(CGRect)rect
{
    UIColor *color = [UIColor redColor];
    [color set]; //设置线条颜色
    
    UIBezierPath* aPath = [UIBezierPath bezierPath];
    
    aPath.lineWidth = 5.0;
    aPath.lineCapStyle = kCGLineCapRound; //线条拐角
    aPath.lineJoinStyle = kCGLineCapRound; //终点处理
    
    [aPath moveToPoint:CGPointMake(20, 100)];
    
    [aPath addQuadCurveToPoint:CGPointMake(120, 100) controlPoint:CGPointMake(70, 0)];
    
    [aPath stroke];
}


(2)绘制三次贝塞尔曲线
使用到这个方法:
Appends a cubic Bézier curve to the receiver’s path.

- (void)addCurveToPoint:(CGPoint)endPoint controlPoint1:(CGPoint)controlPoint1 controlPoint2:(CGPoint)controlPoint2
Parameters
endPoint
The end point of the curve.
controlPoint1
The first control point to use when computing the curve.
controlPoint2
The second control point to use when computing the curve.


demo代码:
- (void)drawRect:(CGRect)rect
{
    UIColor *color = [UIColor redColor];
    [color set]; //设置线条颜色
    
    UIBezierPath* aPath = [UIBezierPath bezierPath];
    
    aPath.lineWidth = 5.0;
    aPath.lineCapStyle = kCGLineCapRound; //线条拐角
    aPath.lineJoinStyle = kCGLineCapRound; //终点处理
    
    [aPath moveToPoint:CGPointMake(20, 50)];
    
    [aPath addCurveToPoint:CGPointMake(200, 50) controlPoint1:CGPointMake(110, 0) controlPoint2:CGPointMake(110, 100)];
    
    [aPath stroke];
}


7.使用Core Graphics函数去修改path。
    UIBezierPath类只是CGPathRef数据类型和path绘图属性的一个封装。虽然通常我们可以用UIBezierPath类的方法去添加直线段和曲线段,UIBezierPath类还提供了一个属性CGPath,我们可以用来直接修改底层的path data type。如果我们希望用Core Graphics 框架函数去创建path,则我们要用到此属性。
    有两种方法可以用来修改和UIBezierPath对象相关的path。可以完全的使用Core Graphics函数去修改path,也可以使用Core Graphics函数和UIBezierPath函数混合去修改。第一种方法在某些方面相对来说比较容易。我们可以创建一个CGPathRef数据类型,并调用我们需要修改path信息的函数。
下面的代码就是赋值一个新的CGPathRef给UIBezierPath对象。

// Create the path data
  

CGMutablePathRef cgPath = CGPathCreateMutable();
  

CGPathAddEllipseInRect(cgPath, NULL, CGRectMake(0, 0, 300, 300));
  

CGPathAddEllipseInRect(cgPath, NULL, CGRectMake(50, 50, 200, 200));
  

 
  

// Now create the UIBezierPath object
  

UIBezierPath* aPath = [UIBezierPath bezierPath];
  

aPath.CGPath = cgPath;
  

aPath.usesEvenOddFillRule = YES;
  

 
  

// After assigning it to the UIBezierPath object, you can release
  

// your CGPathRef data type safely.
  

CGPathRelease(cgPath);
  
       如果我们使用Core Graphics函数和UIBezierPath函数混合方法,我们必须小心的移动path 信息在两者之间。因为UIBezierPath类拥有自己底层的CGPathRef data type,我们不能简单的检索该类型并直接的修改它。相反,我们应该生成一个副本,然后修改此副本,然后赋值此副本给CGPath属性,如下代码:

 Mixing Core Graphics and UIBezierPath calls


UIBezierPath*    aPath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, 300, 300)];
  

 
  

// Get the CGPathRef and create a mutable version.
  

CGPathRef cgPath = aPath.CGPath;
  

CGMutablePathRef  mutablePath = CGPathCreateMutableCopy(cgPath);
  

 
  

// Modify the path and assign it back to the UIBezierPath object
  

CGPathAddEllipseInRect(mutablePath, NULL, CGRectMake(50, 50, 200, 200));
  

aPath.CGPath = mutablePath;
  

 
  

// Release both the mutable copy of the path.
  

CGPathRelease(mutablePath);
  
8.rendering(渲染)Bezier Path对象的内容。
   当创建一个UIBezierPath对象之后,我们可以使用它的stroke和fill方法在current graphics context中去渲染它。在调用这些方法之前,我们要进行一些其他的任务去确保正确的绘制path。
   使用UIColor类的方法去stroke和fill想要的颜色。
   设置形状在目标视图中的位置。如果我们创建的path相对于原点(0,0),则我们可以给current drawing context应用一个适当的affie transform。例如,我想drawing一个形状起始点在(0,0),我可以调用函数CGContextTranslateCTM,并指定水平和垂直方向的translation值为10。调整graphic context相对于调整path对象的points是首选的方法,因为我们可以很容易的保存和撤销先前的graphics state。
    更新path对象的drawing 属性。当渲染path时,UIBezierPath实例的drawing属性会覆盖graphics context下的属性值。
   下面的代码实现了在一个自定义view中实现drawRect:方法中去绘制一个椭圆。椭圆边框矩形的左上角位于视图坐标系统的点(50,50)处。

  Drawing a path in a view


- (void)drawRect:(CGRect)rect
  

{
  

    // Create an oval shape to draw.
  

    UIBezierPath* aPath = [UIBezierPath bezierPathWithOvalInRect:
  

                                CGRectMake(0, 0, 200, 100)];
  

 
  

    // Set the render colors
  

    [[UIColor blackColor] setStroke];
  

    [[UIColor redColor] setFill];
  

 
  

    CGContextRef aRef = UIGraphicsGetCurrentContext();
  

 
  

    // If you have content to draw after the shape,
  

    // save the current state before changing the transform
  

    //CGContextSaveGState(aRef);
  

 
  

    // Adjust the view's origin temporarily. The oval is
  

    // now drawn relative to the new origin point.
  

    CGContextTranslateCTM(aRef, 50, 50);
  

 
  

    // Adjust the drawing options as needed.
  

    aPath.lineWidth = 5;
  

 
  

    // Fill the path before stroking it so that the fill
  

    // color does not obscure the stroked line.
  

    [aPath fill];
  

    [aPath stroke];
  

 
  

    // Restore the graphics state before drawing any other content.
  

    //CGContextRestoreGState(aRef);
  

}  

说明:
1、这篇文章以上内容部分参考自:http://blog.csdn.net/guo_hongjun1611/article/details/7839371 博客,进行了内容和demo代码补充。
2、本人在实现一个小画板功能的时候,发现这个类实现挺不错的,所以这篇博文就对  UIBezierPath 类进行了比较详细的介绍,更加详细的内容请参看文档。
3、关于小画板的实现请参看下一篇博文。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS UIBezierPath类 介绍 的相关文章

  • 在 UITableView 中设置滚动位置

    我有一个应用程序 其工作方式与 iPhone 的 联系人 应用程序的工作方式有些相似 当我们添加新的联系人时 用户将被定向到包含联系人信息的仅查看屏幕 如果我们从导航栏中选择 所有联系人 用户将导航到查看最近添加的联系人的所有联系人列表 我
  • 应用程序在第二次运行 nsnull 计数的循环时崩溃

    我有一个循环 第一次运行正常 但第二次循环时我得到 NSNull count unrecognized selector sent to instance 0x3a094a70 Terminating app due to uncaught
  • CNContact 添加新的联系人问题

    我在通过以下方式添加联系人时遇到问题联系框架 我使用的是装有 iOS 12 1 2 的 iPhone 5s 设备 我添加联系人的代码如下 let saveRequest CNSaveRequest saveRequest add self
  • iOS UITableViewCell 配件在左侧?

    对于我的应用程序 我想要一些可以同时具有复选标记和详细信息披露按钮的单元格 也就是说 我希望它们看起来与 iOS 设置中的 Wi Fi 网络选择一模一样 左侧的复选标记 中间的内容 右侧的详细信息披露按钮 有没有正确的方法来做到这一点 或者
  • 自动布局:Y 位置为两个值中的最大值

    我有一个按钮 play Button 和两个 UIView myView 1 和 myView 2 它们的位置在执行过程中可能会发生变化 我希望 playButton 的顶部比 UIView 1 的底部或 UIView 2 的底部低 10
  • 编写支持 iOS 3.1.3 和 iOS 4.x 的 iOS 应用程序时的陷阱

    我想编写一个可以在 iOS 3 1 3 到 iOS 4 1 上运行的应用程序 我知道如何设置部署目标和基础 SDK 阅读 Apple 文档后 它很大程度上依赖于检查类是否可用和 或实例是否响应特定选择器 现在我的问题是 如果 Apple 从
  • ios 8 核心数据崩溃

    保存时 CoreData 发生崩溃 2014 09 16 09 51 58 273 My app 2678 105246 Terminating app due to uncaught exception NSInvalidArgument
  • 应用程序图标未刷新

    我更改了新版本应用程序中的图标图像 并且我在设备中安装了旧版本应用程序 然后我安装了新版本 它在 iOS 5 中运行良好 但在 iOS 6 中 图标没有刷新 它仍然显示旧版本图标 徽标 如果没有安装旧版本应用程序 该设备在 iOS 5 和
  • 适用于 iOS 的 Google Cast SDK 2.3.0 不支持 64 位

    似乎是适用于 iOS 的 Google Cast SDK 2 3 0 版本 https developers google com cast downloads GoogleCastFramework 2 3 0 Release zip停止
  • 如何等待 webViewDidFinishLoad 完成

    我有一个初始化 webView 的布尔条件 并在 webViewDidFinishLoad 中加载另一个委托 以便在完成完成后触发 但是 由于布尔值在条件 webViewDidFinishLoad 之前返回 因此页面永远不会完全加载 如何确
  • 使用 Push Transition 效果更改 RootViewcontroller

    在我的iOS应用程序中 我需要更改应用程序之间窗口的rootviewController 因此 当我动态更改我的rootviewcontroller时 它会在更改之前轻拂视图 但我想要的是在更改rootviewcontroller时提供平滑
  • iOS 解决方案仅当图像尚未使用 SDWebImage 缓存在内存中时才加载带有动画的图像

    我已经为这个问题苦苦挣扎了几天 以前我使用 AFNetworking 类别来加载和缓存图像 但它的回调中没有提供缓存类型 所以我过去常常在每个控制器中跟踪哪些图像已经加载 我浏览了 SDWebImage 它提供了我正在寻找的东西 SDIma
  • 在 iOS 中录制音频并永久保存

    我制作了 2 个 iPhone 应用程序 可以录制音频并将其保存到文件中并再次播放 其中之一使用 AVAudiorecorder 和 AVAudioplayer 第二个是苹果的在这里说话 http developer apple com l
  • 在 Interface Builder 中的资产目录上使用图像

    是否可以直接在界面生成器上使用添加到资产目录中的图像 这是怎么做到的 在 UIImageView 属性上 我看不到任何引用资产目录上任何图像的选项 Import the images into the xcassets folder 单击右
  • 为了支持 iPhone 5 的更长屏幕,需要检查什么? [复制]

    这个问题在这里已经有答案了 可能的重复 iPhone 5屏幕尺寸如何处理 https stackoverflow com questions 12396545 how to deal with iphone 5 screen size iP
  • Cognito/IAM 策略和 S3 获取对象

    我正在尝试将 S3 和 Cognito 集成到我的 iOS 应用程序中 但到目前为止尚未成功 我相信该错误与我针对 Auth 和 Unauth 用户的 IAM 策略有关 所以这是我的政策 Version 2012 10 17 Stateme
  • 应用未能及时恢复

    我在一个非常具体的场景中遇到 未能及时恢复 崩溃 我认为与看门狗相关 仅在从后台恢复时 并且仅在进入后台后在很短的时间内执行此操作 a最多几秒钟 这似乎是相关的崩溃日志 Incident Identifier E30F2238 5B15 4
  • 播放(非库)Apple Music 内容 - 请求失败

    我正在尝试使用以下代码播放专辑 let predicate MPMediaPropertyPredicate value 1459938538 forProperty MPMediaItemPropertyAlbumPersistentID
  • 如何自动为 Swift 类创建初始化程序?

    UPDATE 使用结构而不是类 struct 在很多方面都更好 它有自己的初始化器 这是我的模型课 是否有可能创建init自动方法 每次我都必须将所有变量一一初始化 这会花费很多时间 class Profile var id String
  • iOS 发送 iMessage 尽可能简单

    我希望能够以编程方式发送 iMessage 除了调用一个将文本发送到带有消息的号码的函数之外 无需执行任何其他操作 这两个消息都是文本框 我真的很感激一些示例代码 因为我在网上搜索过 但我发现没有任何帮助 这不适用于商业应用程序 仅适用于我

随机推荐

  • 修改debian系统默认语言

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 安装debian时选择了中文 xff0c 结果发现在shell中文还是乱码 xff0c 于是想把语言更改成英语 方法如下 xff1a vi etc default loca
  • iOS绘制线条的使用

    1 相关简介 1 1 iOS之UIBezierPath贝塞尔曲线属性简介 1 2 iOS之CAShapeLayer属性简介 2 绘制曲线 2 1 方法详解 void addQuadCurveToPoint CGPoint endPoint
  • 2.2Python数据处理篇之---math模块的数学函数

    目录 目录前言 xff08 一 xff09 一览表 1 基本函数2 对数函数3 三角函数4 角度的切换5 双曲函数6 math定义的常数 xff08 二 xff09 实例 目录 前言 math模块是基础的python数学函数模块 xff0c
  • vs 开发 qt 遇到 无法找到 Visual Studio 2010 的生成工具(平台工具集 =“v100”) 解决方案...

    参考链接 相关解决方案 转载于 https www cnblogs com eat too much p 10843399 html
  • 认识“JPG、TXT”格式的病毒

    前两天有突然个坏人从QQ上发来了个rar压缩文件 xff0c 当时我肯定这个是病毒 xff0c 但是在我解压后发现 xff0c 这个是一个asxarcs txt的文本文件 xff0c 随后我进入文件夹选项 xff0c 发现隐藏已知文件类型的
  • iOS、mac开源项目及库汇总

    2019独角兽企业重金招聘Python工程师标准 gt gt gt UI 下拉刷新 EGOTableViewPullRefresh 最早的下拉刷新控件 SVPullToRefresh 下拉刷新控件 MJRefresh 仅需一行代码就可以为U
  • jieba中文分词的.NET版本:jieba.NET

    简介 平时经常用Python写些小程序 在做文本分析相关的事情时免不了进行中文分词 xff0c 于是就遇到了用Python实现的结巴中文分词 jieba使用起来非常简单 xff0c 同时分词的结果也令人印象深刻 xff0c 有兴趣的可以到它
  • iptables 个人详解 从基础到精通

    iptables iptables xff1a 包过滤防火墙 firewall xff1a 防火墙 xff0c 隔离工具 xff1a 工作于主机或网络边缘 xff0c 对于进出本主机或网络的报文根据事先定义好的检查规则做匹配检测 xff0c
  • 系统学习iOS动画之七:其它类型的动画

    本文是我学习 iOS Animations by Tutorials 笔记中的一篇 文中详细代码都放在我的Github上 andyRon LearniOSAnimations 前面学习很多动画方面的知识 xff0c 但有两个更专业的主题不适
  • 打造FreeBSD中文桌面

    打造FreeBSD中文桌面 第一站 xff1a 装KDE 1 安装桌面肯定要先配置鼠标和显卡 xff0c 对BSD而言 xff0c 可以用自动检测 xff1a usr X11R6 bin X configue cp root xorg co
  • java 组合问题_java数组排列组合问题汇总

    面试或笔试中 xff0c 多次遇到以下4个关于排列组合的手撕算法 xff0c 这里做个笔记 xff0c 方法日后查阅 xff1a 1 无重复元素的数组 xff0c 求全排列 xff1b 2 有重复元素的数组 xff0c 求全排列 xff1b
  • Btrfs文件系统管理及应用

    btrfs xff08 通常念成 Butter FS xff09 xff0c 由 Oracle 于 2007 年开发的遵循 GPL 协定的开源文件系统 Btrfs 支持创建快照 snapshot 以及支持递归的快照 xff08 即支持快照的
  • ubuntu制作本地源

    背景 平时apt get install安装软件时 xff0c 下载的deb文件都会存放在 var cache apt archives 下 xff0c 为了今后重装或给别人用 xff0c 特别是没有网络时 xff0c 这些deb文件实际上
  • linux平台下远程桌面服务器的安装和设置

    系统 ubuntu 9 04 redhat centos 说明 xff1a 使用 xdm xff08 gdm kdm xff09 时 xff0c 使用的是UDP 177端口进行广播 xff0c 只适合布署在单一子网内 xff0c 如要在多个
  • Oracle的常见错误及解决办法

    ORA 12528 TNS listener all appropriate instances are blocking new connections ORA 12528问题是因为监听中的服务使用了动态服务 实例虽然启动 xff0c 但
  • java swap空间_故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题...

    背景起因 xff1a 记起以前的另一次也是关于内存的调优分享下 有个系统平时运行非常稳定运行 没经历过大并发考验 xff0c 然而在一次活动后 xff0c 人数并发一上来后 xff0c 系统开始卡 我按经验开始调优 xff0c 在每个关键步
  • 微信开发者工具配置服务器信息,微信开发者中心如何配置

    微信开发者中心配置是怎么样的呢 xff0c 那么微信开发者中心又是如何配置的呢 下面是学习啦小编收集整理的微信开发者中心如何配置 xff0c 希望对大家有帮助 微信开发者中心配置的方法 工具 原料 一台电脑和一个微信公众号 需要再SEA上部
  • Zabbix使用ICMP ping监控网络状况

    xff08 一 xff09 简述 xff1a Zabbix在监控网络的时候需要查看ping包的丢失率和响应时间 xff0c 而zabbix模块也有改模块 xff0c 名称为 xff1a Template Network ICMP Ping
  • 负载均衡集群HAProxy讲解篇

    负载均衡集群 HAProxy 讲解篇 一 HAProxy组成部分 Haproxy配置中分成五部分内容 xff0c 当然这些组件不是必选的 xff0c 可以根据需要选择作为配置 1 global xff1a 参数是进程级的 xff0c 通常和
  • iOS UIBezierPath类 介绍

    使用UIBezierPath类可以创建基于矢量的路径 xff0c 这个类在UIKit中 此类是Core Graphics框架关于path的一个封装 使用此类可以定义简单的形状 xff0c 如椭圆或者矩形 xff0c 或者有多个直线和曲线段组