これは非常に古い質問であることは知っていますが、ここに非常に優れた解決策があります。UIColor のカテゴリを作成し、このメソッドを追加するだけです。
+ (UIImage *)imageWithColor:(UIColor *)color size:(CGSize)size
{
UIGraphicsBeginImageContext(size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, color.CGColor);
CGContextFillRect(context, (CGRect){.size = size});
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
+ (UIImage *)imageWithColor:(UIColor *)color
{
return [UIImage imageWithColor:color size:CGSizeMake(1, 1)];
}
これで、backgroundImage を任意の色に設定するだけで、無効な外観が自動的に処理されます。
[button setTitleColor:[UIColor someColor] forState:UIControlStateNormal];