我想確保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