当以不受支持的方式自定义AppKit行为时,是否有人会经验Mac App Store接受规则



在我的Objective-C MacOS应用程序中,我找到了一种更改Windows标题字体的方法,并将此代码插入我的NSTitlebarAccessoryViewController

- (void)viewWillLayout {
    NSView *superView = [[[self.view superview] superview] superview];
    for (id view in superView.subviews) {
        if ([view isKindOfClass:[NSTextField class]]) {
            NSTextField *titleLabel = view;
            NSString *title = titleLabel.stringValue;
            NSFont *font = [NSFont systemFontOfSize:12.0];
            NSAttributedString *smallTitle = [[NSAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:font}];
            titleLabel.attributedStringValue = smallTitle;
        }
    }
}

这很好。您是否认为苹果会发现这种不可接受,因为它属于禁止的私人API?感谢您的任何帮助。

您根本不应该这样做。苹果没有充分出现此API的出口:它希望我们开发人员使用一致的外观来保持用户熟悉的操作系统外观。您应该阅读苹果的人类界面准则,以了解为什么这很重要。因此,由于这种黑客攻击,您的应用程序很可能会被拒绝,除非您有很好的理由这样做。

我认为您的应用程序将被批准,但是我不会这样做,因为视图层次结构是无证的,甚至可以随着iOS的次要更新而改变。此外,NSTitlebarAccessoryViewController中的布局不能保证是固定的,因此,由于您的字体与原始字体不同,因此任何这样的未来更改都可能导致奇怪的剪辑和其他工件。

相关内容