操作系统实际上有一些不同的行为
这就是popover的样子,因为它在10.10中打开了动画:
如果仔细观察,可以在NSTextField
我们这里有一个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中,但无济于事
答案 0 :(得分:0)
解决了这个问题,在界面构建器中必须检查" View Effects Inspector"中的视图和标签,它设置wantsLayer = YES
也许可以通过编程方式完成