我在我的造型与UINavigationBar的UIAppearance 。 我希望所有的后退按钮有灰色的文字,我所有的rightBarButtonItems有绿色文本(颜色是假设)。 由于这两个按键,默认情况下UIBarButtonItems,UIAppearance将无法区分这两个。 所以我决定子类的UIBarButtonItem,称这是ActionBarButtonItem。 我用这个新的子类的任何地方,我需要一个rightBarButtonItem。
rightBarButtonItem
UIBarButtonItem* done = [[ActionBarButtonItem alloc]
initWithTitle:@"Done"
style:UIBarButtonItemStyleDone
target:self
action:@selector(onDonePress)];
self.navigationItem.rightBarButtonItem = done;
[done release];
UIAppearance
NSDictionary* buttonStyle = [NSDictionary
dictionaryWithObjects:[NSArray
arrayWithObjects:
[UIColor grayColor],
, nil
]
forKeys:[NSArray
arrayWithObjects:
UITextAttributeTextColor,
nil
]
];
NSDictionary* actionStyle = [NSDictionary
dictionaryWithObjects:[NSArray
arrayWithObjects:
[UIColor greenColor],
nil
]
forKeys:[NSArray
arrayWithObjects:
UITextAttributeTextColor,
nil
]
];
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationController class], nil]
setTitleTextAttributes:buttonStyle
forState:UIControlStateNormal
];
[[ActionBarButtonItem appearanceWhenContainedIn:[UINavigationController class], nil]
setTitleTextAttributes:actionStyle
forState:UIControlStateNormal
];
从理论上讲,灰色文本将适用于所有UIBarButtonItems。 然后我重写与仅ActionBarButtonItems绿色文本灰色文本。 未如预期的最终结果。 不知什么原因, 每次得到的UIBarButtonItem绿色文本。 为什么?