I just found a solution that works great, and I have no idea why.
If you select a button in Interface Builder and open the “Identity Inspector”, you can add “Custom Runtime Attributes”. If you add a "self.fillColor" key with a color type, this color is used as the fill color for the button.
I discovered this by accident. I had a custom UIButton subclass called ColoredButton, where I drew a rounded rectangle and filled it myself. He used the fillColor property. I changed one of the ColoredButton objects to UIButton to check something, and was surprised to find that it was still filled with color.
I do not know why this works, but it is.
Duncan c
source share