如何为 peek&pop 自定义操作着色?
How to tint peek&pop custom actions?
呈现拾取和弹出视图时,自定义操作(UIPreviewAction
个对象)默认显示为 iOS 蓝色。
有什么办法可以将它们染成不同的颜色吗?
对于 iOS 11,似乎有效的是添加 didFinishLaunchingWithOptions
:
UIApplication.sharedApplication.delegate.window.tintColor = MY_COLOR
我不确定相同的方法是否适用于 iOS11 之前的版本,但以下是对 iOS11 之前的版本有用的方法:
在预览控制器的 viewWillAppear
方法中(viewController 实现 previewActionItems
方法添加:
- (void) viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
UIView* container = [self.view superviewOfClass:NSClassFromString(@"_UIVisualEffectContentView")];
container.tintColor = YOUR_COLOR;
}
superviewOfClass
方法在UIView+MyUtils
类别中实现:
- (UIView*) superviewOfClass:(Class)c
{
UIView* parent = self;
while ((parent = parent.superview))
{
if ([parent isKindOfClass:c])
{
return parent;
}
}
return nil;
}
呈现拾取和弹出视图时,自定义操作(UIPreviewAction
个对象)默认显示为 iOS 蓝色。
有什么办法可以将它们染成不同的颜色吗?
对于 iOS 11,似乎有效的是添加 didFinishLaunchingWithOptions
:
UIApplication.sharedApplication.delegate.window.tintColor = MY_COLOR
我不确定相同的方法是否适用于 iOS11 之前的版本,但以下是对 iOS11 之前的版本有用的方法:
在预览控制器的 viewWillAppear
方法中(viewController 实现 previewActionItems
方法添加:
- (void) viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
UIView* container = [self.view superviewOfClass:NSClassFromString(@"_UIVisualEffectContentView")];
container.tintColor = YOUR_COLOR;
}
superviewOfClass
方法在UIView+MyUtils
类别中实现:
- (UIView*) superviewOfClass:(Class)c
{
UIView* parent = self;
while ((parent = parent.superview))
{
if ([parent isKindOfClass:c])
{
return parent;
}
}
return nil;
}