我想确保CGSize
小于或等于另一个CGSize
。如:如何比较两个CGSize变量?
CGSize firstSize = CGSizeMake(1.0,1.0);
CGSize secondSize = CGSizeMake(5.0,3.0);
if(firstSize <= secondSize){
Do Stuff . . .
}
我该如何比较?
我想确保CGSize
小于或等于另一个CGSize
。如:如何比较两个CGSize变量?
CGSize firstSize = CGSizeMake(1.0,1.0);
CGSize secondSize = CGSizeMake(5.0,3.0);
if(firstSize <= secondSize){
Do Stuff . . .
}
我该如何比较?
if(firstSize.width <= secondSize.width && firstSize.height <= secondSize.height &&
firstSize.width*firstSize.height < secondSize.width*secondSize.height)
下面的函数确定是否CGSize的在第一个参数的矩形范围内,或在CGSize在第二参数的矩形的程度完全相符。
- (BOOL)size:(CGSize)smallerSize isSmallerThanOrEqualToSize:(CGSize)largerSize {
return CGRectContainsRect(
CGRectMake(0.0f, 0.0f, largerSize.width, largerSize.height),
CGRectMake(0.0f, 0.0f, smallerSize.width, smallerSize.height)
);
}
而是自己与困难写完整的逻辑读出的条件语句中,你可以使用内置的,内嵌辅助功能,其名称是描述性的。
虽然我还没有做过研究,但这个方法可能比接受的答案慢,因为它涉及到将两个CGSize转换为两个CGRects C结构体。尽管它具有读者快速理解的优点。
Swift 4.0CGSize
的一个非常直接的扩展。 正如OP所述,这是假定您关注的是尺寸而不是面积。
import UIKit
extension CGSize {
func isGreaterOrEqual(to size: CGSize) -> Bool {
return width >= size.width &&
height >= size.height
}
}
然后,您可以用以下值测试:
let size = CGSize(width: 100, height: 100)
let smaller = CGSize(width: 80, height: 80)
let bigger = CGSize(width: 120, height: 120)
let small = size.isGreaterOrEqual(to: smaller) // true
let big = size.isGreaterOrEqual(to: bigger) // false
let same = size.isGreaterOrEqual(to: size) // true
这取决于你如何定义“小”。既然你有两个维度,他们都必须变小吗?或只是高度?只是宽度?或者也许是定义矩形的区域? – lnafziger
越小,至少1维越小,而第二维不大(可以相等)。 –
好,所以总面积并不重要?如果你有一个盒子是100x100,另一个盒子是101x25,那么你的定义是更大的? – lnafziger