iOS CGSize, CGPoint, CGRect, CGFloat 辅助工具
诸如 roundedToNearestPixel
这样的辅助方法,可以将浮点数四舍五入到最近的像素,而不是点。在像素边界对齐时非常有用。
hairLineHeight
屏幕上 1 像素的高度roundedToNearestPixel
ceiledToNearestPixel
flooredToNearestPixel
诸如 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()
非常有用center
topLeft
topRight
bottomLeft
bottomRight
midX
midY
topMiddle
bottomMiddle
midLeft
midRight
with(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:)
从两点之间直线的斜率创建斜率isHorizontal
isVertical
perpendicular
与此斜率垂直的斜率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:)
创建圆上给定中心点的切线isHorizontal
isVertical
perpendicular(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
返回此弧,但在逆时针方向