How to change the text color on UINavigationBar button items

Here's one way:

[[theNavigationBar.subviews objectAtIndex:1] setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[[theNavigationBar.subviews objectAtIndex:2] setTitleColor:[UIColor redColor] forState:UIControlStateNormal];

However, HUGE, caveat. This is highly likely to break on a future OS release and is not recommended.

At the very least you should perform a lot of testing and make sure you your assumptions of the subview layout of the navigation bar are correct.

 

 

或者

for (id subView in theNavigationBar.subviews) {
   
if ([subView isKindOfClass:[UIButton class]]) {
       
[(UIButton *)subView setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
       
[(UIButton *)subView setTitleShadowColor:[UIColor clearColor] forState:UIControlStateNormal];
   
}

}

附:某个UINavigationBar的subviews:

Printing description of what:

(

    "<UINavigationItemView: 0x66c18d0; frame = (0 0; 0 0); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x66c1970>>",

    "<UINavigationButton: 0x66c2490; frame = (7 7; 48 30); opaque = NO; layer = <CALayer: 0x66c2540>>",

    "<UINavigationButton: 0x66c19d0; frame = (713 7; 48 30); opaque = NO; layer = <CALayer: 0x66c1920>>"

)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值