This is an old question, but I think the answer might be better. One way to do this is to grab your button and then capture its image. So, if you configured your buttons in IB, it might look like this: objc:
UIImage *i = [self.button backgroundImageForState:UIControlStateNormal];
If you did this in code, then you already have these things!
And then you want to adjust the alignment to adjust the difference.
i = [i imageWithAlignmentRectInsets:UIEdgeInsetsMake(0, 0, -5, -5)];
(top, left, bottom, right).
Now set the button image.
[self.button setBackgroundImage:i forState:UIControlStateNormal]
Auto Layout uses alignment rectangles to align. You may need to change some constants on your alignments to fine tune.
smileBot
source share