Короткий ответ - нет.Длинный ответ в основном потому, что frame
является вычисляемым свойством , функцией bounds
, center
и transform
.Даже простое тестирование попаданий основано на итерации.
Реальный вопрос в том, почему вы думаете, что это слишком медленно.Если у вас есть сотни видов, я предлагаю кэшировать кадры, скажем, в touchesBegan:withEvent:
, чтобы сэкономить на вычислениях кадров и отправлять сообщения Objective-C каждый раз, когда вам нужно проверить пересечение (когда вы перетаскиваете палец).
Возможно, вы также можете применить некоторые приемы оптимизации, такие как сортировка представлений по происхождению фрейма, но это усложнит ваш код.