Каждое представление имеет свое происхождение для своих подпредставлений.
, поэтому установка ImageView.frame.origin для того же элемента, что и для ButtonView.frame.origin, не помещает их в одно и то же место вуважение к суперпредставлению.
, поэтому вашему представлению imageView необходимо задать исходные значения относительно верхнего левого угла вашей кнопки.
imageButton.frame = CGRect(20.0, 20.0, 100.0, 100.0);
//then say you want the image to in the top left corner of the button
imageView.frame = CGRect(0.0, 0.0, 50.0, 50.0);
[imageButton addSubview:imageView];