すべての UISegmentedControl の外観をグローバルに設定しています。ただし、これを行うと、無効な状態が壊れることに気付きました。
titleTextAttributes を変更する必要があるコードは次のとおりです。
NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:
[UIFont boldSystemFontOfSize:12], UITextAttributeFont,
[UIColor whiteColor], UITextAttributeTextColor,
[UIColor colorWithRed:0x49/255.0 green:0x49/255.0 blue:0x49/255.0 alpha:1], UITextAttributeTextShadowColor,
[NSValue valueWithUIOffset:UIOffsetMake(0, -1)], UITextAttributeTextShadowOffset,
nil];
[[UISegmentedControl appearance] setTitleTextAttributes:attributes forState:UIControlStateNormal];
これで問題なく動作し、すべてのセグメント化されたコントローラーが更新されました。
しかし、setEnabled:forSegmentAtIndex: で無効にした項目は無効にならず、クリック可能です。なぜこれが起こるのですか?それらを再び無効にするにはどうすればよいですか。無効状態にも適用しようとしましたが、機能しません。
[[UISegmentedControl appearance] setTitleTextAttributes:attributes forState:UIControlStateDisabled];