Position the search box at the left of the title bar

旧巷老猫 提交于 2019-12-11 11:16:57

问题


I'm using INAppStoreWindow for my application. I put an NSSearchButton in the title bar of the application.

INAppStoreWindow *aWindow = (INAppStoreWindow*)self.window;
aWindow.titleBarHeight = 60.0;
aWindow.showsTitle = YES;

NSView *titleBarView = aWindow.titleBarView;
NSSize buttonSize = NSMakeSize(200.f, 100.f);
NSRect buttonFrame =
    NSMakeRect(NSMidX(titleBarView.bounds) - (buttonSize.width / 2.f),
               NSMidY(titleBarView.bounds) - (buttonSize.height / 2.f),
               buttonSize.width,
               buttonSize.height);

The previous code positioned the search box at the center of the title bar. What I want to do is position the search box at the left side of the title bar and if "Maximize" button of the application is clicked, I want the search box to remain at left. (not exact left. I want the left where there is a space between the search box and the left edge of the title bar).

Of course, I want to leave a space for the "full screen" arrows.

I'm not really familiar with Cocoa development (yet).
How to position my search box as I want?


回答1:


You will have to register to the notifications (NSWindowWillExitFullScreenNotification, NSWindowWillEnterFullScreenNotification) and adjust the frame of the button accordingly.

For example

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(windowWillEnterFullScreen:)
                                                 name:NSWindowWillEnterFullScreenNotification
                                               object:nil];

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(windowWillExitFullScreen:)
                                                 name:NSWindowWillExitFullScreenNotification
                                               object:nil];

And later

- (void)windowWillEnterFullScreen:(NSNotification *)notification
{
 // set your button frame to the left
}


- (void)windowWillExitFullScreen:(NSNotification *)notification
{
 // set your button frame back to the centre
}

Hope this helps



来源:https://stackoverflow.com/questions/22822458/position-the-search-box-at-the-left-of-the-title-bar

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!