带有NSTextField的NSPopover显示文本字段,它在打开时显示不透明背景,然后在弹出动画后变为透明
问题描述:
实际上在操作系统中有一些不同的行为
这是弹出窗口的样子,因为它在10.10中打开动画:
如果你仔细观察,你可以看到周围的NSTextField
带有NSTextField的NSPopover显示文本字段,它在打开时显示不透明背景,然后在弹出动画后变为透明
这里有点不透明的边界是什么样子的10.11: 只是有一个直线上升不透明背景
我们在这里是一个NSViewController
,它只有一个容器NSView
和一个NSTextField
。该容器是这样我们就可以通过自动布局约束
@interface MessageViewController()
@property (strong) IBOutlet NSTextField *messageLabel;
@property (weak) IBOutlet NSLayoutConstraint *rightPadding;
@property (weak) IBOutlet NSLayoutConstraint *topPadding;
@property (weak) IBOutlet NSLayoutConstraint *bottomPadding;
@property (weak) IBOutlet NSLayoutConstraint *leftPadding;
@end
@implementation MessageViewController
@synthesize message = _message;
- (instancetype)initWithMessage:(NSString *)message andPadding:(CGFloat)padding
{
self = [super init];
if(self)
{
[self loadView];
self.rightPadding.constant = padding;
self.topPadding.constant = padding;
self.bottomPadding.constant = padding;
self.leftPadding.constant = padding;
self.message = message;
}
return self;
}
- (void)setMessage:(NSString *)message
{
_message = message;
self.messageLabel.stringValue = message;
}
- (NSString *)message
{
return _message;
}
这就是为什么你可以看到边框,只有酥料饼的部分是不透明的添加填充。这是内部NSTextField
有背景/边框,容器视图保持透明背景。它不是直到酥料饼尽显的背景/边框变为透明以及
怎么会这样?
我已经尝试设置背景颜色属性,并试图设定-awakeFromNib,而不是在init属性,但无济于事
答
解决了这个问题,在Interface Builder不得不检查视图和标签“查看效果检查器”,其集合wantsLayer = YES
也许可以通过编程方式完成