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

像所有像素(x,y)一样,使用UIBezierPath获取每个cgpoint(x,y)坐标

像所有像素(x,y)一样,使用UIBezierPath获取每个CGPoint(x,y)坐标。

UIBezierPath是iOS开发中的一个类,用于创建和管理矢量图形路径。它可以用于绘制直线、曲线、多边形等形状,并且可以通过填充或描边来渲染路径。

要获取每个CGPoint(x,y)坐标,可以使用UIBezierPath的方法addLineToPoint(:CGPoint)或addCurveToPoint(:CGPoint, controlPoint1:CGPoint, controlPoint2:CGPoint)来添加路径的线段或曲线段。然后,可以通过遍历路径上的每个点来获取每个CGPoint(x,y)坐标。

以下是一个示例代码,演示如何使用UIBezierPath获取每个CGPoint(x,y)坐标:

代码语言:txt
复制
let path = UIBezierPath()

// 添加路径的线段或曲线段
path.move(to: CGPoint(x: 0, y: 0))
path.addLine(to: CGPoint(x: 100, y: 100))
path.addCurve(to: CGPoint(x: 200, y: 200), controlPoint1: CGPoint(x: 150, y: 150), controlPoint2: CGPoint(x: 180, y: 180))

// 获取每个CGPoint(x,y)坐标
var coordinates: [CGPoint] = []
let pathLength = path.cgPath.length

for i in 0..<Int(pathLength) {
    let point = path.cgPath.point(at: CGFloat(i), transform: nil)
    coordinates.append(point)
}

// 打印每个CGPoint(x,y)坐标
for coordinate in coordinates {
    print("x: \(coordinate.x), y: \(coordinate.y)")
}

在上面的示例代码中,我们首先创建了一个UIBezierPath对象,并使用addLine(to:)和addCurve(to:controlPoint1:controlPoint2:)方法添加了一些线段和曲线段。然后,我们通过遍历路径上的每个点,使用point(at:transform:)方法获取每个CGPoint(x,y)坐标,并将它们存储在一个数组中。最后,我们打印出每个CGPoint(x,y)坐标。

这是一个简单的例子,展示了如何使用UIBezierPath获取每个CGPoint(x,y)坐标。根据具体的需求,你可以根据UIBezierPath的其他方法和属性进行更复杂的路径操作和坐标获取。

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

请注意,以上链接仅供参考,具体的产品选择应根据实际需求进行评估和决策。

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

相关·内容

绘图-几个较复杂统计图案例的实现分析

,把这个路径拼接上X坐标轴上的两个垂直投影点形成一个底部矩形状的封闭路径,把个路径作为渐变图层的path,并绘制一条比这个UIBezierPath顶部低一点的路径作为 渐变图层的遮罩图层(maskLayer...X坐标一样Y坐标的值 middleY-point.y+middleY 就是保证 初始化Y坐标是终坐标的关于中线的对称点。...(3) 开始弹性动画,设置子视图的终点,X坐标跟曲线上点的X坐标一样Y坐标的值跟曲线上点的Y坐标一样。 ,在 completion 中对 CADisplayLink定时器暂停。...(4) 在弹性动画的执行期间,定时器会不断的获取某一时刻的所有的子视图的 坐标 ,并修改 曲线上的点的位置的坐标,并根据 currentLinePathForWave 这个方法绘制出 渐变图层的 mask...得到每一个环外小圆的中心点坐标后,根据该点的X坐标值跟当前页面中心点的X坐标进行比较,确定小圆尾部的线的朝向以及字体的对其方向(在左侧字体向左对齐,在右边字体向右对齐) 环外圆点和直线使用CoreGraphics

1.4K20

ios 图像处理

, y1)为圆心radius半径,startAngle和endAngle为弧度 CGContextAddArc(context, x1, y1, radius, startAngle, endAngle..., clockwise); // 先画两条线从point 到 (x1, y1) , 从(x1, y1) 到(x2, y2) 的线  切里面的圆 CGContextAddArcToPoint(context..., x1, y1,  x2,  y2, radius); // 设置阴影 CGContextSetShadowWithColor // 设置填充颜色 CGContextSetRGBFillColor...,则新的UIBezierPath对象的初始位置为(3,4),末位置是(0,0),但是两条直线看上去是一模一样的 将 UIBezierPath 对象的 currentPoint 移动到指定的点 - (...)closePath; //意思就是闭合路径,初始位置和末位置点连成直线,形成闭合的状态 删除 UIBezierPath 对象中的所有点, 效果也就等同于删除了所有子路经 - (void)removeAllPoints

1.6K30

UIDynamic 物理引擎概念介绍UIDynamicAnimator(动画者)动力行为(UIDynamicBehavior)一、抽象类 UIDynamicBehavior二、UIGravityBeh

)p1 toPoint:(CGPoint)p2; 6.移除该碰撞所有边界 - (void)removeAllBoundaries; 7.根据边界标识获取路径 - (nullable UIBezierPath...刚性附着和弹性附着 分为刚性附着和弹性附着 1、刚性附着,固定了length就是刚性附着,红、蓝两点距离固定 attachment.length = 100; 2、弹性附着(设置了频率和振幅),红、蓝两色皮筋一样距离不固定...子视图为基准的坐标转换为以父视图为基准的视图坐标方法 ---- UIPushBehavior(推行为) 注意要进行懒加载,多次添加会导致无效 1.获取该行为作用的动力项 @property...property (readwrite, nonatomic) CGFloat magnitude; 算法:取触摸点loc的x,y与动力项的中点center的x,y做差算出两条直线长度,再用勾股定理:...sqrt(x2+y2) 求出 例子: CGFloat offsetX = loc.x - self.redView.center.x; CGFloat offsetY = loc.y - self.redView.center.y

3K80

iOS实践:通过核心动画完成过山车1. 思路和所用到的内容2. 辅助元素的创建(背景颜色、草坪、大地、小树、云彩)3. 雪山的实现4. 轨道的实现

所有上面的内容之前的文章里面都有仔细的写过怎么使用哒,要是不清楚的小伙伴们可以翻翻之前的文章。几乎绝大部分的内容都在iOS动画系列这个里面。...其实要计算的是从山脚到山顶两点之间的连线上任意一点的坐标。知道了X坐标,要计算Y坐标。 这个就是咱们初中学到的计算公式,y = kx + b。 k是斜率,b是截距。...这样给出这条线段上任意一点x坐标,就能轻易的算出y坐标了。xy都知道了,CGPoint不就知道了嘛。...{ // 求出两点连线的斜率 CGFloat k = (endpoint.y - startPoint.y) / (endpoint.x - startPoint.x);...CGFloat b = startPoint.y - startPoint.x * k; CGFloat yvalue = k * xvalue + b; return CGPointMake

1.7K50

CoreText实现图文混排之文字环绕及点击算法

= origin.x + xOffset; boundsRun.origin.y = origin.y - descent; CGPathRef path = CTFrameGetPath...这个方法是获取当前点在所在文字处于当前绘制文本的索引值。事实上如果没有一些其他因素的话,能使用这个方法是最简便快捷的。然而老司机为什么没有使用这个方法去获取点击事件呢?请看下面的动图? ?...可以看到,实际的响应区域相比预期响应区域x坐标会整体向左偏移一定区域。...实际使用中CTLineGetStringIndexForPosition这个方法获取一个字的index范围是这个字前面大概半个字开始到这个字中间的位置。...但是第一篇文章中老司机说过,每个CTRun是所有具有相同属性的连续同行文字的集合。

1.2K20

图片中多个二维码选择的实现

过程 整个的过程是: 识别二维码 只有一个,则直接跳转; 有多个二维码信息,则跳转二维码选择页面; 二维码选择页面标记出每个二维码的位置; 点击对应位置的二维码,跳转对应的链接。...判断features,如果count > 1,则遍历features,把对应二维码的位置标记出来,生成新的图片,这里需要注意的是,CIQRCodeFeature中返回的坐标位置不能直接使用,由于坐标系不同的原因...- 10; CGFloat minY = self.qrcodeFrame.origin.y - 10; CGFloat maxX = self.qrcodeFrame.origin.x...+ offsetValue; // 要判断的点 CGFloat targetX = targetPoint.x; CGFloat targetY = targetPoint.y...touch 对象 UITouch *touch = touches.anyObject; // 获取 touch 点 CGPoint touchPoint = [touch locationInView

34720

iOS动画-CALayer基础知识

这似乎很酷,但惊喜之余,我们也发现了仍然存在的小缺憾,那就是此时的图片显示效果是变形的;那它是否也可以UIImageView一样具有可设置的方法呢,答案是肯定的,我们可以使用如下的代码,将图片自适应显示...,默认1.0;1.0:以每个点1个像素绘制图片;2.0:以每个点2个像素绘制图片,Retina屏幕; maskToBounds(BOOL) clipsToBounds(BOOL) 超出边界的内容或者子视图是否显示...; CGPoint transition; transition.x = newOrigin.x - oldOrigin.x; transition.y = newOrigin.y...= newOrigin.x - oldOrigin.x; transition.y = newOrigin.y - oldOrigin.y; //重新设置原来视图位置...坐标系.png 使用下面的代码进行测试,结果如下: CGPoint targetPoint = CGPointMake(10, 10); CGPoint point1 = [purpleView convertPoint

1.8K50

文字排版入门—— 排版基础、CoreText和图文混排

由许许多多的线段组成; 当我们获取某个点的属性,实际上就是询问所有的线段中,经过这个点的线段(属性)有哪些。...,如果是UIKit的坐标则需要做坐标系变换) CFIndex CTLineGetStringIndexForPosition( CTLineRef line, CGPoint position...); 计算当行中,某个字符相对的x坐标;(secondaryOffset通常用不到,传NULL即可) CGFloat CTLineGetOffsetForStringIndex( CTLineRef...,会出现上下颠倒的情况 // [image drawInRect:CGRectMake(lineOrigin.x + offsetX + marginX, lineOrigin.y...语言一样,直接用str[0]去访问NSString的第一个字符,而是使用characterAtIndex的接口去获取(并且返回的是UTF16编码的字符); 另外,在iOS中NSUnicodeStringEncoding

6.5K32

手把手带你撸一个网易云音乐首页(三)

这种上图下文的 CollectionViewCell 也很好定义,这里就不多做阐述,部分代码如下: import UIKit import SnapKit import Kingfisher class...CGPoint 来记录最新滚动的偏移坐标 定义俩个值分别为 UICollectionView 可滚动的最大偏移量与最小偏移量也是就 0 每次滚动停止都会调用上述的函数 func targetContentOffset...(...), 在这个函数中有一个参数 proposedContentOffset 记录了滚动的目标位移坐标,通过这个坐标和记录的上次滚动的坐标可以判断出是向左滚动还是向右滚动 如果俩坐标的水平方向相减的绝对值大于某个固定值...newProposedContentOffset = CGPoint(x: lastOffset.x, y: lastOffset.y) }...本篇文章的所有代码都在我的 github 上 欢迎 star: https://github.com/ShenJieSuzhou/SomePracticeCodes

2.3K10
领券