Подтвердить что ты не робот

Как сравнить две переменные CGSize?

Я хочу убедиться, что CGSize меньше или равно другому CGSize. например:

CGSize firstSize = CGSizeMake(1.0,1.0);
CGSize secondSize = CGSizeMake(5.0,3.0);
if(firstSize <= secondSize){
    Do Stuff . . .
}

Как бы это сравнить?

4b9b3361

Ответ 1

Определите, входит ли firstSize в secondSize без вращения:

if(firstSize.width <= secondSize.width && firstSize.height <= secondSize.height)

Ответ 2

Для проверки равенства вы можете использовать CGSizeEqualToSize функцию Apple.

CGSize firstSize = CGSizeMake(1.0,1.0);
CGSize secondSize = CGSizeMake(5.0,3.0);

if(CGSizeEqualToSize(firstSize, secondSize)) {
    //they are equal
}else{
    //they aren't equal
}

Ответ 3

Следующая функция определяет, соответствует ли прямоугольник 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)
    );
}

Вместо того, чтобы писать полную логику с трудными для чтения условными операторами, вы можете использовать встроенные вспомогательные вспомогательные функции, имена которых являются описательными.

Пока я не проводил исследования, этот метод, вероятно, медленнее в исполнении, чем принятый ответ, поскольку он включает в себя преобразование двух CGSizes в две структуры CGRects C. Хотя это имеет то преимущество, что быстрее читайте читателя.

Ответ 4

if(firstSize.width <= secondSize.width && firstSize.height <= secondSize.height &&
    firstSize.width*firstSize.height < secondSize.width*secondSize.height)