OStack程序员社区-中国程序员成长平台

标题: iOS 7 弹出框覆盖进度条和 uibarbuttonItem 色调颜色 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 06:00
标题: iOS 7 弹出框覆盖进度条和 uibarbuttonItem 色调颜色

我的导航栏有问题。 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-推荐答案


此行为是 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/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4