CGRect, CGSize, CGPoint C 语法 —— 披着羊皮的狼 我相信下面这种写法,很多 Swift 开发者都会中枪,让我看见你们的双手! CGRect(x: 0, y: 0, width: 100, height: 100) let size = CGSize(width: 100, height: 100) let point = CGPoint let rect = CGRect.zero let size = CGSize.zero let point = CGPoint.zero 这样写代码也更为清晰,Xcode 会将 . let view = UIView(frame: .zero) view.frame.size = CGSize(width: 10, height: 10) view.frame.origin = CGPoint
== nil { return } // let the spline start cubicPath.move(to: CGPoint 0.0 var pt1 = CGPoint(x: CGFloat(dataSet.entryForIndex(bounds.min + bounds.range)?.x ?? 0.0), y: fillMin) var pt2 = CGPoint(x: CGFloat(dataSet.entryForIndex(bounds.min)?.x ?? drawFirst){continue} filled.addLine(to: CGPoint(x: CGFloat(previousEntry.x), y: fillMin (x: CGFloat(e.x), y: fillMin), transform: matrix) filled.addLine(to: CGPoint(x: CGFloat
这里提供一种方法如下: - (void)setAnchorPoint:(CGPoint)anchorPoint forView:(UIView *)view{ CGPoint oldOrigin = anchorPoint; CGPoint newOrigin = view.frame.origin; CGPoint transition; transition.x 锚点动画.gif 三、视图与图层的坐标系 CALayer给不同坐标系之间的图层转换提供了一些工具类方法: - (CGPoint)convertPoint:(CGPoint)p fromLayer:(nullable CALayer *)l; - (CGPoint)convertPoint:(CGPoint)p toLayer:(nullable CALayer *)l; - (CGRect)convertRect )convertPoint:(CGPoint)point toView:(nullable UIView *)view; - (CGPoint)convertPoint:(CGPoint)point fromView
: CGPoint(x: 100, y: 200)), NSValue(cgPoint: CGPoint(x: 200, y: 200)), NSValue(cgPoint: CGPoint(x: 200, y: 300)), NSValue(cgPoint: CGPoint(x: 100, path.addCurve(to: CGPoint(x: 50.0, y: 275.0), control1: CGPoint(x: 150.0, y: 275.0), control2: CGPoint to: CGPoint(x: 350.0, y: 275.0), control1: CGPoint(x: 450.0, y: 275.0), control2: CGPoint(x: 130, y: NSValue(cgPoint: CGPoint(x: 200, y: 300)), NSValue(cgPoint: CGPoint(x: 100,
, withScrollingVelocity velocity: CGPoint) -> CGPoint // return a point at which to rest after scrolling me the code, 代码实现如下: class RowStyleLayout: UICollectionViewFlowLayout { private var lastOffset: CGPoint override init() { super.init() lastOffset = CGPoint.zero } required init? , withScrollingVelocity velocity: CGPoint) -> CGPoint { // 分页的 width let pageSpace = = CGPoint.zero if (offsetForCurrentPointX > pageSpace/8.0) && (lastOffset.x >= offsetMin) &
move(to: CGPoint(x: 10, y: startOffsetY)) context?. addLine(to: CGPoint(x: self.frame.width-20, y: startOffsetY)) context?. addLine(to: CGPoint(x: 10, y: startOffsetY+rectHeight)) context?. move(to: CGPoint(x: hoverX, y: startOffsetY)) context?. move(to: CGPoint(x: 10, y: startOffsetY)) //添加线条,从一个点画向另一个点,形成线条 context?.
bujige.net 文章链接:https://bujige.net/blog/iOS-Foundation-other.html 本文对Foundation框架中一些数字类(NSNumber)、常用结构体类(CGPoint 结构体类(CGPoint、CGSize、CGRect、CGRange和NSValue) 1. NSPoint和CGPoint CGPoint和NSPoint是同义的 CGPoint代表的是二维平面中的一个点 CGPoint有2个成员 CGFloat x:表示该矩形原点的横坐标位置 CGFloat y:表示该矩形原点的纵坐标位置 typedef CGPoint NSPoint; // CGPoint的定义 struct CGPoint { CGFloat x; CGFloat y; }; typedef struct CGPoint CGPoint; typedef double CGFloat; 可以使用CGPointMake和NSMakePoint函数创建CGPoint CGPoint
self.view.addSubview(imageView) 8 9 let animation = CAKeyframeAnimation(keyPath:“position”) 10 11 let point1 = CGPoint (x:40, y:80) 12 let point2 = CGPoint(x:280, y:80) 13 let point3 = CGPoint(x:60, y:300) 14 let point4 = CGPoint(x:280, y:300) 15 16 animation.values = [NSValue(cgPoint:point1), NSValue(cgPoint:point2 ), 17 NSValue(cgPoint:point3), NSValue(cgPoint:point4)] 18 animation.keyTimes = [NSNumber(value:0.0
line segment from the current point to the specified /// point. public mutating func addLine(to p: CGPoint , control cp: CGPoint) 这个方法是 Path 类的画贝塞尔曲线的方法,通过一个控制点从开始点到结束点画一条曲线, 在通过这两个主要方法画出我们图形的轮廓之后我们在通过 CGPoint(x: middle, y: topHeight / 2 + spacing), CGPoint(x: middle + topWidth, y: /// path 移动到这个点重新开始绘制 其实这句没啥影响 /// path.move(to: CGPoint(x: middle, y ), CGPoint(x: width - spacing, y: height - spacing), CGPoint(
, targetContentOffset: UnsafeMutablePointer<CGPoint>) { } (滑动显示更多) 然后在viewController里面添加refreshVie : UnsafeMutablePointer<CGPoint>) { if ! , targetContentOffset: UnsafeMutablePointer<CGPoint>) { if ! , targetContentOffset: UnsafeMutablePointer<CGPoint>) { if ! , targetContentOffset: UnsafeMutablePointer<CGPoint>) { if !
一、几个常用结构体 struct CGPoint { CGFloat x; CGFloat y; }; 定义一个点,设置x坐标和y坐标 struct CGSize { CGFloat width; height; }; 定义一个尺寸,设置宽度和高度 struct CGVector { CGFloat dx; CGFloat dy; }; 定义一个二维矢量 struct CGRect { CGPoint origin; CGSize size; }; 定义一个矩形 二、几个系统定义的量 const CGPoint CGPointZero 零点,与CGPointMake(0, 0)等效 const CGSize point1, CGPoint point2); 判断两个点是否相等 bool CGSizeEqualToSize(CGSize size1, CGSize size2); 判断两个尺寸是否相等 bool point); 返回一个表示点的字典 bool CGPointMakeWithDictionaryRepresentation(CFDictionaryRef dict, CGPoint *point
)point; /** * 附加一条直线到接收器的路径 * @param point 要到达的坐标 */ - (void)addLineToPoint:(CGPoint)point; / )endPoint controlPoint1:(CGPoint)controlPoint1 controlPoint2:(CGPoint)controlPoint2; ? )endPoint controlPoint:(CGPoint)controlPoint; 图片来自网络 /** * 添加一个弧线 与 bezierPathWithArcCenter:radius // 路径包括的矩形 @property(nonatomic,readonly) CGRect bounds; // 图形路径中的当前点 @property(nonatomic,readonly) CGPoint currentPoint; // 接收器是否包含指定的点 - (BOOL)containsPoint:(CGPoint)point; // Drawing properties // 线宽 @property
iOS 首先左上角为坐标原点(0,0) CGPoint创建坐标点也就是位置 CGSize表示视图宽度和高度 CGRect结合了CGPoint和CGSize origin表示左上角所在的CGPoint frame是在父视图的CGRect bounds是指在自身视图中的CGRect center是指在父视图中的CGPoint ? cocos2d 首先左下角为坐标原点(0,0) anchorPoint中心点(0.5,0.5) bounds和frame相同 position就是CGPoint
)systemPointFromScreenPoint:(CGPoint)origin { return CGPointMake(origin.x, self.bounds.size.height ---- 坐标转换 这里用到了第一个工具方法(老司机习惯把写好的方法分类,这些中间方法老司机习惯叫他们工具方法),-(CGPoint)systemPointFromScreenPoint:(CGPoint 其实很简单 ///坐标转换 /* 将屏幕坐标转换为系统坐标 */ -(CGPoint)systemPointFromScreenPoint:(CGPoint)origin { return :(CGPoint)location返回YES,否则返回NO。 回到上一层,如果-(BOOL)checkIsClickOnImgWithPoint:(CGPoint)location返回YES,则说明点击的是图片并且已经执行完响应事件,直接return结束方法即可。
gradient = Gradient(colors: [.green, .blue]) let from = rect.origin let to = CGPoint font(font)) let start = CGPoint(x: (size.width - resolved.measure(in: size). 只有中间的房子,需要被模糊化: 下面的所有例子将使用以下CGPoint扩展: extension CGPoint { static func +(lhs: CGPoint, rhs: CGPoint ) -> CGPoint { return CGPoint(x: lhs.x + rhs.x, y: lhs.y + rhs.y) } static func -(lhs : CGPoint, rhs: CGPoint) -> CGPoint { return CGPoint(x: lhs.x - rhs.x, y: lhs.y - rhs.y)
CGFloat = 0) -> some View 创建一个路径 var path = Path() 在指定点开始一个新的子路径 public mutating func move(to p: CGPoint ) 将二次贝塞尔曲线添加到路径中,并具有指定的端点和控制点 public mutating func addQuadCurve(to p: CGPoint, control cp: CGPoint) addLine 函数的定义为: public mutating func addLine(to p: CGPoint) 这个函数的作用是从当前点到给定的点绘制一条直线。 由于我们已经知道了数据数组,但是它仅仅只是一个 Double 类型的数组,所以我们需要将它的每个值来对应一个 CGPoint,那具体怎么做呢!接着往下看。 , control cp: CGPoint) 使用方式如代码所示: static func quadCurvedPathWithPoints(points:[Double], step:CGPoint
)point; //添加一天线 - (void)addLineToPoint:(CGPoint)point; //添加一个二阶贝塞尔曲线段 - (void)addCurveToPoint:(CGPoint )endPoint controlPoint1:(CGPoint)controlPoint1 controlPoint2:(CGPoint)controlPoint2; //添加一个三阶贝塞尔曲线段 - (void)addQuadCurveToPoint:(CGPoint)endPoint controlPoint:(CGPoint)controlPoint; //添加圆弧 - (void)addArcWithCenter :(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise currentPoint; //判断是否包含某个点 - (BOOL)containsPoint:(CGPoint)point; //设置线宽 @property(nonatomic) CGFloat
坐标转换分为两种,一种是 CGPoint 转换,一种是 CGRect 转换。 CGPoint转换 // self.view(from参数)的self.redView.center(point参数)转换到self.redView(调用者)中 orangeView.center = withRelativeStartTime: 0.1, relativeDuration: 0.1, animations: { self.leaf.center = CGPoint withRelativeStartTime: 0.2, relativeDuration: 0.1, animations: { self.leaf.center = CGPoint withRelativeStartTime: 0.3, relativeDuration: 0.1, animations: { self.leaf.center = CGPoint
成员变量 public var lineWidth:CGFloat = 1 fileprivate var allLineArray = [[CGPoint]]() //所有的线 记录每一条线 fileprivate var currentPointArray = [CGPoint]() //当前画线的点 画完置空 增加到 线数组中 fileprivate var { let point:CGPoint = (event?.allTouches?.first?.location(in: self))! { let point:CGPoint = (event?.allTouches?.first?.location(in: self))! <tmpArr.count { let endPoint:CGPoint = tmpArr[j] context
(x: 0.0, y: 0.5) gradientLayer.endPoint = CGPoint(x: 1.0, y: 0.5) // 灰, 白, 灰 , targetContentOffset: UnsafeMutablePointer<CGPoint>) { if ! ), controlPoint1: CGPoint(x: frame.minX + 0.04828 * frame.width, y: frame.minY + 0.68225 * frame.height ), controlPoint2: CGPoint(x: frame.minX + 0.21694 * frame.width, y: frame.minY + 0.85855 * frame.height : oldLayer.position) animation.toValue = NSValue(cgPoint: newLayer.position)