在 Swift 中以编程方式将系统映像设置为 NSImageView

问题描述

您可以在 UIKit 中使用 imageView.image = NSImage(named: "pencil") //result is no image 设置系统映像(SF 符号)。对于 macOS 应用程序,您可以在故事板中设置系统映像。但是,我找不到以编程方式为 macOS 设置系统映像的方法。这是否可能,或者系统图像是否仅限于 macOS 应用程序中的故事板。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int ar[100][100];

void create_mat(int a)
{
    srand(time(NULL));
    for (int i=0; i<a; i++)
    {
        printf("\n");
        for (int j=0; j<a; j++)
        {
            ar[i][j]=rand()%16;
            printf("%d\t",ar[i][j]);
        }
    }
}
void reverse_mat(int a)
{
    for (int i=0; i<a/2; i++)
    {
        printf("\n");
        for (int j=0; j<a; j++)
        {
            int temp = ar[i][j];
            ar[i][j]=ar[a-i-1][j];
            ar[a-i-1][j]=temp;
        }
    }
}

void print_reversed(int a)
{
    printf("\nMatricea in forma inversa: ");
    for (int i=0; i<a; i++)
    {
        printf("\n");
        for (int j=0; j<a; j++)
        {

            printf("%d\t",ar[i][j]);
        }
    }
}

int main()
{
    int (*funcptr)(int);
    int (*rev)(int);
    int (*ptr_rev)(int);
    funcptr = &create_mat;
    rev = &reverse_mat;
    ptr_rev = &print_reversed;
    int a;
    printf("Introduceti nr de linii si coloane: ");
    scanf("%d",&a);
    funcptr(a);
    rev(a);
    ptr_rev(a);

    return 0;
}

解决方法

调用签名是 NSImage(systemSymbolName:accessibilityDescription:) (https://developer.apple.com/documentation/appkit/nsimage/3622472-init),而不是 NSImage(named:),它试图从您的应用程序包中获取图像,而不是 SF 符号。

示例:

NSImage(systemSymbolName: "pencil",accessibilityDescription: nil)

请注意,这仅适用于 macOS 11.0 (Big Sur) 及更高版本。在此之前,SF Symbols 不适用于 Mac 应用程序,除非通过 Catalyst。