Not a real issue, but you can avoid this line:
var imageView: CaptionableImageView!
because you can instantiate the view on the fly, even multiple times (eg. in a loop), by declaring it locally. There's no need to make it a class member.
(https://guides.codepath.com/ios/Custom-Views-Quickstart)