If you want to find out what views are in a specified section of a common superview then you do need to do some iteration and a 'hit detection'. Using the frame intersection as you say is good.
Rather than iterating all subviews, which would need to be recursive, you should maintain a property which is an array of all of the image views such that you can iterate that array directly and ignore any other subviews that aren't interesting.