następujących funkcji określa czy prostokąta CGSize pierwszym parametrem mieści się całkowicie wewnątrz lub w zakresie prostokąta CGSize drugi parametr.
- (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)
);
}
Zamiast pisać pełnej Logic się z trudnym do odczytania instrukcje warunkowe, można użyć wbudowanej, funkcje inline pomocnicze, których nazwy są opisowe.
Chociaż nie przeprowadziłem badań, ta metoda jest prawdopodobnie wolniejsza w wykonaniu niż akceptowana odpowiedź, ponieważ wymaga przekonwertowania dwóch CGSizes na dwa CGRects C struct. Chociaż ma tę zaletę, że czyta go szybciej.
To zależy od tego, jak zdefiniujemy „mniejszy”. Skoro masz dwa wymiary, czy oba muszą być mniejsze? A może po prostu wysokość? Tylko szerokość? A może obszar zdefiniowanego prostokąta? – lnafziger
mniejszy to co najmniej 1 wymiar jest mniejszy, natomiast drugi wymiar nie jest większy (może być równy). –
OK, więc całkowita powierzchnia nie ma znaczenia? Jeśli masz jedno pudełko o wymiarach 100 x 100 i inne o rozmiarze 101x25, to według twojej definicji jest ono większe? – lnafziger