added new method that also accepts a completion block

@ndonald2 Quick PR for you. Just one question: do you think the completion block should be called before or after `layoutIfNeeded` in the non-animated case?
These should be `instancetype`. I think that methods starting with “int” and returning `id` are automatically interpreted as `instancetype`, but it’s good practice to use it.