iOS CGSize, CGPoint, CGRect, CGFloat 辅助工具
诸如 roundedToNearestPixel 这样的辅助方法,可以将浮点数四舍五入到最近的像素,而不是点。在像素边界对齐时非常有用。
hairLineHeight 屏幕上 1 像素的高度roundedToNearestPixelceiledToNearestPixelflooredToNearestPixel诸如 with(x:), with(y:) 这样的辅助方法,可以快速更改组件。
all(_:) 创建一个点,其 x 和 y 值都设置为给定值x(_:) 创建一个点,其 x 值设置为给定值,y 值设置为 0y(_:) 创建一个点,其 y 值设置为给定值,x 值设置为 0with(x:) 返回一个具有给定 x 值的新点with(y:) 返回一个具有给定 y 值的新点offsetted(by:) 通过另一个点进行偏移offsetted(x:y:) 通过给定的 x 和 y 值进行偏移offsetted(by:) 通过内边距进行偏移reverseOffsetted(by:) 撤销通过另一个点/内边距进行的偏移mirrored 返回一个沿 y 轴镜像的点flipped 返回一个沿 x 轴翻转的点roundedToNearestPixel 四舍五入到最近的像素ceiledToNearestPixel 向上取整到最近的像素flooredToNearestPixel 向下取整到最近的像素roundedToFullPoints 四舍五入到完整(整数)点ceiledToFullPoints 向上取整到完整(整数)点flooredToFullPoints 向下取整到完整(整数)点slope(to:) 返回从该点到另一点的直线的斜率min(_:) 返回自身和另一个尺寸的最小尺寸max(_:) 返回自身和另一个尺寸的最大尺寸all(_:) 创建一个尺寸,其宽度和高度都设置为给定值rectAtZeroOrigin 返回 CGRect(origin: .zero, size: self)center 返回 rectAtZeroOrigin 的中心点with(width:) 返回一个具有新宽度的新尺寸with(height:) 返回一个具有新高度的新尺寸adding(width:height) 返回通过增加宽度或高度得到的新尺寸adding(_:) 返回通过增加另一个尺寸得到的新尺寸adding(_:) 返回通过增加内边距得到的新尺寸subtracting(width:height:) 从该尺寸中减去subtracting(_:) 从该尺寸中减去另一个尺寸insetted(by:) 通过给定的内边距缩进尺寸verticallyStacked(with: spacing) 返回与其他尺寸垂直堆叠所需的尺寸horizontallyStacked(with: spacing) 返回与其他尺寸水平堆叠所需的尺寸roundedToNearestPixel() 四舍五入到最近的像素ceiledToNearestPixel() 向上取整到最近的像素flooredToNearestPixel() 向下取整到最近的像素roundedToFullPoints() 四舍五入到完整(整数)点ceiledToFullPoints() 向上取整到完整(整数)点flooredToFullPoints() 向下取整到完整(整数)点sizeThatFitsSize(_:) 返回一个保持纵横比的同时适应另一个尺寸的尺寸aspectFill(for:) 返回在给定的另一个尺寸中纵横比填充的尺寸aspectFit(for:) 返回在给定的另一个尺寸中纵横比适应的尺寸aspectScale(for:) 返回在给定的尺寸中纵横比缩放的尺寸isEmpty 如果宽度或高度 <= 0,则为 truegreatestFiniteMagnitude 宽度和高度都设置为 greatestFiniteMagnitude,对于 UIView.sizeThatFits() 非常有用centertopLefttopRightbottomLeftbottomRightmidXmidYtopMiddlebottomMiddlemidLeftmidRightwith(origin:) 返回一个具有新原点的新矩形with(size:) 返回一个具有新尺寸的新矩形with(x:) 返回一个具有新 x 原点的新矩形with(y:) 返回一个具有新 y 原点的新矩形with(height:) 返回一个具有新高度的新矩形with(width:) 返回一个具有新宽度的新矩形offsetted(by:) 返回一个通过点/内边距偏移的新矩形offsetted(x:y:) 返回一个通过 x 和 y 偏移的新矩形insetted(top:left:bottom:right) 返回一个通过给定的值缩进的新矩形roundedToNearestPixel 返回一个角被四舍五入到最近像素的新矩形ceiledToNearestPixel 返回一个最小坐标向下取整,最大坐标向上取整到最近像素的新矩形rectThatFitsInRect(_:) 返回适应此矩形,并保持纵横比的矩形当设置 UIView 的 center 和 bounds 时,必须特别注意视图实际上是否在像素边界上对齐。如果不是,视图会稍微模糊,因为网格的像素与设备的像素网格不对齐。
safeCenter 和 safeSize 会自动为您执行此操作:它们确保视图的未变换帧将像素对齐。
使用 UIView.frame 会补偿视图的当前 transform:它实际上返回实际位置。通常,人们希望设置帧而不用考虑 transform,例如,在进行缩放动画时。一种方法是设置 center 和 bounds。
safeFrame 通过为您计算 safeCenter 和 safeSize 并正确设置它来包装此操作,忽略任何变换。
还有许多用于处理简单欧几里得几何的辅助工具
斜率直线线段圆圆弧斜率模拟直线的斜度。三种情况
init(rawValue:) 使用给定的原始值作为斜率创建斜率.horizontal 水平斜率.vertical 垂直斜率init(from:to:) 从两点之间直线的斜率创建斜率isHorizontalisVerticalperpendicular 与此斜率垂直的斜率isAmostEqual(to: tolerance:)直线穿过具有特定斜率的点,并且没有起点和终点:它永远延伸。
init(point:slope:) 创建一条穿过具有特定斜率的点的直线init(verticalLineAtX:) 创建一条穿过 x 坐标的垂直线init(horizontalLineAtY:) 创建一条穿过 y 坐标的水平线init(yIsXTimes:plus:) 从公式 y = x * slope + b 创建一条直线init(from:to:) 创建一条穿过给定两点的直线init(tangentFromPointOnCircle:center:) 创建圆上给定中心点的切线isHorizontalisVerticalperpendicular(at:tolerance:) 在给定点创建垂直于此直线的直线,如果给定点在此直线上,否则为 nil。yValue(forX:) 获取给定 x 值的 y 值(如果存在)point(forX:) 获取给定 x 值的点(如果存在)xValue(forY:) 获取给定 y 值的 x 值(如果存在)point(forY:) 获取给定 y 值的点(如果存在)contains(other:tolerance:) 检查此直线是否包含给定的点isAlmostEqual(to:tolerance:) 检查此直线是否等于另一条直线intersection(with:tolerance:) 获取此直线与另一条直线的交点结果,结果可能是:sameLine、parallel 或 intersect(at:)intersectionPoint(with:tolerance:) 返回此直线与另一条直线的交点,如果只有一个唯一的交点,否则为 nil。线段是两点之间直线的一部分。
init(start:end:) 创建一个起点和终点之间的线段。line 获取此线段的直线slope 获取此线段的斜率isAlmostEqual(to:tolerance:) 检查此线段是否等于另一个线段contains(point:tolerance:) 检查线段是否包含给定的点这是一个圆 :)
init(center:radius:) 创建一个具有给定中心和半径的圆isOnCircle(point:tolerance:) 检查给定的点是否在圆上isInsideCircle(point:tolerance:) 检查给定的点是否在圆内angle(for:tolerance:) 返回圆上点的角度(以弧度为单位)point(for:tolerance:) 返回给定角度(以弧度为单位)的点tangent(at:tolerance:) 返回圆上点的切线tangent(for:tolerance:) 返回给定角度(以弧度为单位)的点的切线isAlmostEqual(to:tolerance:) 检查此圆是否与另一个圆相同圆弧。圆弧从圆上的一个点开始,到圆上的一个点结束,并且可以顺时针或逆时针方向移动。
init(circle:startPoint:endPoint:clockwise:tolerance:) 在圆上创建从起点到终点的圆弧init(circle:startAngle:endAngle:clockwise:) 在圆上创建从起始角到结束角的圆弧init(center:startPoint:endPoint:clockwise:tolerance:) 在圆上创建以给定中心穿过 startPoint 和 endPoint 的圆弧。init(center:startPoint:endAngle:clockwise:tolerance:) 在圆上创建以给定起点和结束角的圆弧contains(angle:tolerance:) 检查弧是否包含给定的角度contains(point:tolerance:) 检查弧是否包含圆上的给定点isAlmostEqual(to: tolerance:) 检查此弧是否等于另一个弧clockwise 返回此弧,但在顺时针方向counterClockwise 返回此弧,但在逆时针方向