Как к пользовательской панели заголовка окна ничьей в Objective C?

Парное программирование может быть удивительно эффективным, однако Вы не должны нанимать программистов в парах. Вы не можете вынудить разработчиков к парной программе. Это только работает, когда два разработчика нажимают и решают, что могут учиться друг от друга и создать что-то потрясающее вместе. Мой совет состоит в том, чтобы нанять в качестве многих самых умных разработчиков, можно найти и поместить их в установку, которая естественно предоставляет себя ободрительному парному программированию с частичной занятостью. Разработчики должны быть в состоянии кодировать один, но также и говорить с другими в команде об этом.

Нахождение правильного соединения, которое работает на Вас и Вашу компанию, будет большим количеством искусства, чем наука и конечно не что-то, что можно сделать путем слепого следования требованиям некоторой опубликованной методологии.

Тем не менее, чем больше ошибок Вы давите, прежде чем в них когда-либо зарегистрируются, тем больше Вы сохраняете в конечном счете. Наличие другого разработчика, наблюдающего, поскольку Вы проектируете что-то, всегда будет более эффективным, чем наличие черного ящика тестера это позже. Я назвал бы это деньгами хорошо потраченный.

11
задан Sixten Otto 3 November 2009 в 05:43
поделиться

3 ответа

Если вы не хотите использовать класс окна без полей, вы можете сделать несколько вещей.

Во-первых, вы можете настроить кнопки закрытия / минимума / максимума покупки, используя - [NSWindow standardWindowButton:] . Как только вы получите кнопку, вы можете разместить ее / удалить / и т. Д.

Вы можете настроить заголовок, установив заголовок на @ "" . Затем вы можете добавить NSTextField , чтобы нарисовать свой собственный заголовок, выполнив следующие действия [[[NSWindow contentView] superview] addSubview: textField] .

Это, вероятно, самый простой способ делать вещи.

Другой способ сделать это - настроить представление, которое рисует всю строку заголовка окна и т. д.

Представление содержимого NSWindow находится внутри "представления темы". Вы можете создать подкласс вида темы и сделать свой собственный рисунок.

6
ответ дан 3 December 2019 в 08:56
поделиться

cocoadev предоставляет более подробную информацию о том, как лучше всего реализовать свои собственные Подкласс NSWindow с описанием большинства распространенных ошибок.

Суть его состоит в том, чтобы создать подкласс NSWindow и установить для его styleMask значение NSBorderlessWindowMask в методе инициализации:

- (id) initWithContentRect: (NSRect) contentRect
                 styleMask: (unsigned int) aStyle
                   backing: (NSBackingStoreType) bufferingType
                     defer: (BOOL) flag
{
    if ((self = [super initWithContentRect: contentRect
                                 styleMask: NSBorderlessWindowMask
                                   backing: bufferingType
                                     defer: flag]) == nil) { return nil; }

    [super setMovableByWindowBackground:YES];
    [super setLevel:NSNormalWindowLevel];
    [super setHasShadow:YES];
    // etc.

    return self;
}

Обратите внимание, что вам, вероятно, следует вернуть YES для canbecomeKeyWindow , чтобы ваше окно вело себя как обычное окно.

- (BOOL) canBecomeKeyWindow
{
    return YES;
}

Затем вы можете создать собственный подкласс NSView, заполнить все окно экземпляром упомянутый класс, а затем выполнить все соответствующие отрисовки окон из этого настраиваемого представления.

Все это может стать немного болезненным. Вам придется заново реализовать большинство обычных действий окна, таких как изменение размера, перетаскивая правый нижний угол.

Все это может стать немного болезненным. Вам придется заново реализовать большинство обычных действий окна, таких как изменение размера, перетаскивая правый нижний угол.

Все это может стать немного болезненным. Вам придется заново реализовать большинство обычных действий окна, таких как изменение размера, перетаскивая правый нижний угол.

5
ответ дан 3 December 2019 в 08:56
поделиться

Там '

2
ответ дан 3 December 2019 в 08:56
поделиться