setTitleTextAttributes:forState:
should be called multiple times, for each state you wish to customise. At the moment you're calling it once, for UIControlStateNormal
, for other states the values will be at their default.
Call it with UIControlStateDisabled
as well, with whatever attributes you need.