我的导航栏有问题。
UIBarButtonItem tintColor 是橙色的,但是当我呈现 popover 时,barButtonItem tintColor 变为 lightGray。导航栏色调颜色为白色。我需要在弹出框出现后留下橙色。
有人能帮我吗?谢谢!
编辑 1
我制作了可选择的 barButtonItem,并且我有 UIBarButtonItem 的子类:
-(void)setSelectedBOOL)selected {
_selected = selected;
if (selected) {
self.tintColor = self.selectedColor;
} else {
self.tintColor = self.defaultColor;
}
}
-(id)initWithImageUIImage *)image styleUIBarButtonItemStyle)style targetid)target actionSEL)action defaultColorUIColor *)defaultColor {
self = [super initWithImage:image style:style target:target action:action];
if (self) {
self.tintColor = defaultColor;
}
return self;
}
-(id)initWithTitleNSString *)title styleUIBarButtonItemStyle)style targetid)target actionSEL)action defaultColor:(UIColor *)defaultColor {
self = [super initWithTitle:title style:style target:target action:action];
if (self) {
self.tintColor = defaultColor;
}
return self;
}
编辑 2
感谢 Warren Burton 的回答,解决方案是:
self.navigationController.navigationBar.tintAdjustmentMode = UIViewTintAdjustmentModeNormal;
Best Answer-推荐答案 strong>
此行为是 iOS 7 "Normal"。它告诉您的用户该按钮当前不是您的事件 UI 的一部分。
如果你想绕过这个常规约定,你可以继承 UIBarButtonItem 并覆盖
- (void)tintColorDidChange
只留下一个空的实现。
- (void)tintColorDidChange {
//nothing to see here, move along
}
当弹出框呈现时,呈现 View 进入 tintMode UIViewTintAdjustmentModeDimmed 因此即使您提供另一种颜色,该颜色也会被系统变灰(不饱和?)。
这就是为什么你需要覆盖 tintColorDidChange 来阻止这种情况发生。
来自文档...
When this property’s value is UIViewTintAdjustmentModeDimmed, the
value of the tintColor property is modified to provide a dimmed
appearance.
关于iOS 7 弹出框覆盖进度条和 uibarbuttonItem 色调颜色,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/21280651/
|