我有一个带有附件视图和三个按钮的NSAlert,按钮未向右对齐(对于LTR系统),但似乎扩展到附件视图的宽度,如下所示
同时删除附件视图,三个按钮在右侧未正确对齐
如何解决这个问题?我不想替换自己编写代码的NSAlert,为什么我必须重新发明轮子呢?
我使用的代码由setAccessoryView文档复制并在下面报告
NSTextView *accessory = [[NSTextView alloc] initWithFrame:NSMakeRect(0,0,600,15)];
NSFont *font = [NSFont systemFontOfSize:[NSFont systemFontSize]];
NSDictionary *textAttributes = [NSDictionary dictionaryWithObject:font forKey:NSFontAttributeName];
[accessory insertText:[[NSAttributedString alloc] initWithString:@"Text in accessory view"
attributes:textAttributes]];
[accessory setEditable:NO];
[accessory setDrawsBackground:NO];
NSAlert *alert = [[NSAlert alloc] init];
[alert setMessageText:@"Message text"];
[alert setInformativeText:@"Informative text"];
[alert setAccessoryView:accessory];
[alert addButtonWithTitle:@"Btn 3"];
[alert addButtonWithTitle:@"Btn 2"];
[alert addButtonWithTitle:@"Btn 1"];
[alert runModal];
[alert release];
Run Code Online (Sandbox Code Playgroud)
小智 6
这是警报的当前默认布局。具有三个按钮的警报的处理方式有所不同,因为其常见用例为:
第三个按钮位于左侧,以便清楚地表示它代表的动作不同于前进(第一个按钮)和停止(第二个按钮)。
在某些Apple应用程序中可以看到这一点。在页面中:
在TextEdit中:
另外,NSAlert的文档指出:
标准警报布局可能会在将来的系统软件版本中更改。因此,如果您依赖自定义警报布局,则应确保布局能在Mac OS的将来版本中按预期工作。
因此,他们将来可能会决定将所有三个按钮都对准右边,或者只将第一个按钮对准右边,而将其余两个按钮对准左边。这就解释了为什么NSAlert不提供公共API来指定其按钮的位置或对齐方式。
如果您确实需要其他布局,则看起来您必须自己设计。
归档时间: |
|
查看次数: |
926 次 |
最近记录: |