是否可以更改 UIPreviewAction 颜色?

Is it possible to change UIPreviewAction color?

我在 API 中看到的唯一样式选项是:

是否有可能以某种方式将按钮涂成另一种颜色?我们的设计师真的不喜欢默认的蓝色按钮

您可以在下面为实现 UIPreviewAction

的 viewcontroller 添加这些片段
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    UIView *containerView = [self.view superviewOfClass:NSClassFromString(@"_UIVisualEffectContentView")];
    containerView.tintColor = YOUR_CUSTOM_COLOR;
}

在 UIView 类别中

- (UIView *)superViewOfClass:(Class)class {
    UIView *parent = self;
    while ((parent = parent.superview)) {
        if ([parent isKindOfClass:class]) {
            return parent;
        }
    }
    return nil;
}

不,无法在 UIPreviewAction 中更改按钮颜色。即使您添加彩色图像,它也会切换为默认蓝色。

试试这个:

myPreviewAction.tintColor = myColor

使用此 UIPreviewAction 扩展:

extension UIPreviewAction {

    var tintColor: UIColor? {
        get {
            return value(forKey: "_color") as? UIColor
        }
        set {
            setValue(newValue, forKey: "_color")
        }
    }

}

您只能通过设置全局色调颜色 UIPreviewActionStyleDefault:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [self.window setTintColor:[UIColor greenColor]];
    return YES;
}