. На самом деле существует немного другое поведение в ОС.
Это то, что похоже на popover, поскольку оно анимируется в 10.10 :
Если вы внимательно посмотрите, вы можете увидеть маленькую непрозрачную границу вокруг NSTextField
NSPopover с NSTextField показывает текстовое поле с непрозрачным фоном при его открытии, а затем становится прозрачным после анимации popover.
Вот как это выглядит в 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 вместо в инициализации, но безрезультатно