如何为 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;
}