Hàm sau xác định nếu hình chữ nhật của CGSize trong tham số đầu tiên khớp hoàn toàn trong hoặc ở mức độ hình chữ nhật của CGSize trong tham số thứ hai.
- (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)
);
}
Thay vì viết toàn bộ logic với khó đọc câu lệnh có điều kiện, bạn có thể sử dụng hàm dựng sẵn nội tuyến có tên mô tả.
Trong khi tôi chưa thực hiện nghiên cứu, phương pháp này có thể chậm hơn trong thực thi so với câu trả lời được chấp nhận vì nó liên quan đến việc chuyển đổi hai CGSizes thành hai cấu trúc CGRects C. Mặc dù nó có lợi thế là nhanh hơn để hiểu bởi người đọc.
Nó phụ thuộc vào cách bạn định nghĩa "nhỏ hơn". Vì bạn có hai chiều, cả hai có phải nhỏ hơn không? Hay chỉ là chiều cao? Chỉ cần chiều rộng? Hoặc có lẽ là khu vực của hình chữ nhật được xác định? – lnafziger
nhỏ hơn ít nhất 1 kích thước nhỏ hơn trong khi thứ nguyên thứ hai không lớn hơn (có thể bằng nhau). –
Được rồi, vậy tổng diện tích không quan trọng? Nếu bạn có một hộp 100x100 và một hộp khác là 101x25, thì theo định nghĩa của bạn, nó lớn hơn? – lnafziger