objective-c - 如何在 Mac (Cocoa) 应用程序中实现夜间模式?

标签 objective-c macos cocoa osx-yosemite osx-elcapitan

我不熟悉在 Mac (Cocoa) 上创建应用程序。

有人可以指导我如何在 Mac 应用程序中创建夜间模式功能吗?

非常感谢您在这方面的帮助。

谢谢!

最佳答案

要实现夜间模式滤镜,您需要减少蓝光照射(阳光中含有蓝光,可让我们保持清醒和警觉)。

消除整个应用蓝光的最简单方法是在您的 View 上使用内容过滤器,在我的例子中,我使用棕褐色调。

选择您的 View 并转到“ View 效果检查器”

View Effects inspector

在内容过滤器中,单击“+”图标并添加并滚动到“颜色效果”/“棕褐色调”

Content Filters

您可以调整棕褐色调或选择不同的滤色器来尝试实现所需的效果,但请记住,主要目标是去除蓝光(强度为 1 的棕褐色调就足够了)。

before after

如果您想以编程方式创建过滤器:

#import "ViewController.h"
#import <CoreImage/CIFilter.h>

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    CIFilter * sepiaTone = [CIFilter filterWithName:@"CISepiaTone" keysAndValues:@"inputIntensity", @1.0, nil];
    self.view.contentFilters = [NSArray arrayWithObject:sepiaTone];

}

Apple 引用号:Core Image Filters Reference

注意:一些应用程序在所有应用程序 View 上放置了红色色调层,但您可能会遇到一些用户交互问题。

关于objective-c - 如何在 Mac (Cocoa) 应用程序中实现夜间模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37359825/

相关文章:

objective-c - 如何打印 Cocoa 中字符串迭代创建的 Unicode?

macos - 在 Qt 中组合工具栏和标题栏

objective-c - 使用 ParseKit 标记化和 DelimitedString

macos - 如何检测是否按下了 Shift 键?

ios - UItableview 滑动删除 iOS 11 不刷新/重新加载数据

objective-c - 无法访问的对象在变得无法访问后是否随时都可以安全地收集?

ios - 如何通过父节点进行点击?

c++ - 无法在我的 Mac 上运行程序

objective-c - 应用程序设计 - 谁应该拥有单例对象

iphone - 每个线程都需要自己的自动释放池吗?