gpt4 book ai didi

navigationbar - 如何在qlpreviewcontroller中自定义导航栏的颜色

转载 作者:行者123 更新时间:2023-12-02 11:23:41 27 4
gpt4 key购买 nike

我可以自定义 QlPreviewController Controller 中导航栏的颜色吗?

我尝试过以下

[[UINavigationBar appearanceWhenContainedIn: [QLPreviewController class], nil] setBarTintColor: [UIColor redColor]];

但是它不起作用。

谢谢。

最佳答案

是的,如果您通过 presentViewController:animated: 显示的话,iOS 11 的 QLPreviewController 上的 barTintColor 会出现错误

这是我的解决方案,将 setBackgroundImage: 与 1x1 图像一起使用,而不是 setBarTintColor:

[[UINavigationBar appearanceWhenContainedInInstancesOfClasses:@[[QLPreviewController class]]] 
setBackgroundImage:[UIImage imageWithColor:[UIColor redColor]]
forBarMetrics:UIBarMetricsDefault];

imageWithColor: 是我的 UIImage 自定义类别中的一种方法,它返回所需颜色的可调整大小的 1x1 图像(上例中的红色):

+ (UIImage *)imageWithColor:(UIColor *)color {
CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
const CGFloat alpha = CGColorGetAlpha(color.CGColor);
const BOOL opaque = alpha == 1;
UIGraphicsBeginImageContextWithOptions(rect.size, opaque, 0);
CGContextRef context = UIGraphicsGetCurrentContext();

CGContextSetFillColorWithColor(context, [color CGColor]);
CGContextFillRect(context, rect);

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

return image;
}

我还建议用 iOS 版本检查来包装它,例如:

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"11.0")) {
[[UINavigationBar appearance...
setBackgroundImage:[UIImage imageWithColor:...]
forBarMetrics:UIBarMetricsDefault];
}

SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO 来源:

#define SYSTEM_VERSION_EQUAL_TO(v)                  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
#define SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)

关于navigationbar - 如何在qlpreviewcontroller中自定义导航栏的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46239664/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com