Oto przykładowy projekt, który pokazuje, jak to zrobić:
http://github.com/NSGod/BlackBorderlessWindow
Zasadniczo trzeba tworzyć obramowania NSWindow
podklasy. Najłatwiej to zrobić, ustawiając rozmiar i układ okna w pliku nib, a następnie ustawiając jego klasę na niestandardową podklasę. Tak więc, chociaż nadal będzie wyglądać jak normalne okno w Kreatorze interfejsów, w czasie wykonywania będzie wyglądać tak, jak tego potrzebujesz.
@implementation MDBorderlessWindow
- (id)initWithContentRect:(NSRect)contentRect
styleMask:(NSUInteger)windowStyle
backing:(NSBackingStoreType)bufferingType
defer:(BOOL)deferCreation {
if (self = [super initWithContentRect:contentRect
styleMask:NSBorderlessWindowMask
backing:NSBackingStoreBuffered defer:deferCreation]) {
[self setAlphaValue:0.75];
[self setOpaque:NO];
[self setExcludedFromWindowsMenu:NO];
}
return self;
}
Wartość alfa spowoduje, że okno będzie półprzezroczyste.
Ponadto, można utworzyć niestandardową NSView
podklasę, która będzie czerpać okrągły prostokąt:
@implementation MDBlackTransparentView
- (id)initWithFrame:(NSRect)frame {
if (self = [super initWithFrame:frame]) {
}
return self;
}
- (void)drawRect:(NSRect)frame {
NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:frame
xRadius:6.0 yRadius:6.0];
[[NSColor blackColor] set];
[path fill];
}
@end
Podobnie jak w oknie, wystarczy ustawić klasę okna contentView być niestandardowe NSView
podklasy. (Użyj trybu widoku konspektu i kliknij trójkąt ujawnienia, aby wyświetlić zagnieżdżoną NSView
w ikonie okna w pliku nib). Ponownie, podczas gdy widok będzie wyglądać zwyczajnie w Konstruktorze interfejsów, będzie wyglądał dobrze w środowisku wykonawczym.
Następnie wystarczy umieścić na wierzchu widok NSTextField
i odpowiednio ustawić tekst.
Zauważ, że ogólnie okna bez obramowania nie są łatwe w użyciu (na przykład, jeśli chcesz przeciągnąć okno, musisz dodać tę funkcję ponownie). Apple ma przykładowy kod, jak pozwolić na przeciąganie.
Dokładnie tego, czego szukałem. Zabawne, nawet aplikacja demo używa dokładnie tego samego tekstu próbki "1-800-MY-APPLE". – amrox
@amrox: Cóż, zrobiłem demo specjalnie ;-) (Właściwie to już miałem przykładowy projekt okna bez obramowania, wystarczyło minutę, aby go poprawić, aby zrobić to, co chciałeś). – NSGod
Teraz byłoby wspaniale, gdyby ktoś uczynił to w usłudze OSX, do której można by po prostu przesłać jakiś tekst. Była taka aplikacja (LargeType 1.0), ale została przerwana, a pliki do pobrania usunięte (!?). Chcesz do niego NSGod? – davemyron