如何在隐藏或显示控件后重新绘制窗口



我有一个NSTextField控件在窗口的底部。我需要根据某些条件显示或隐藏它们。

在初始状态下控件是隐藏的。该窗口显示控件位置上的空白。在运行时,控件应该是可见的

mpTxtCtrl.hidden = NO;

它没有发生。

任务:

1显示/隐藏控件。

2根据控件的状态调整主窗口的大小。

我找不到任何教程如何管理布局的可可。我将感激任何帮助!

在运行时,控件应该是可见的

mpTxtCtrl.hidden = NO;

它没有发生。

确保您将mpTxtCtrl出口连接到笔尖中的文本字段。忘记把插座连接到任何东西上,是导致什么事情都不会发生的主要原因。

我找不到任何教程如何管理布局的可可。

在编辑笔尖时切换到文件检查器并打开"使用自动布局"。Xcode会在你沿着Aqua线放置视图时创建约束(当你正确放置和调整视图大小时出现的蓝线),Cocoa会在视图和窗口大小变化时强制执行这些约束。

更多信息:

  • Cocoa自动布局指南
  • WWDC 2012视频-包括几个关于自动布局的会议
  • OS X人机界面指南- Aqua指南似乎表明符合HIG

检查这段代码,如果你会发现一些有用的东西在这里:

-(void)awakeFromNib{
    [self.label setHidden:YES];
}

- (IBAction)showHide:(id)sender {
    NSLog(@"%@",[sender title]);
    if ([[sender title] isEqualToString:@"Hide"]) {
        [self.label setHidden:YES];
        [sender setTitle:@"Show"];
    }
    else if ([[sender title] isEqualToString:@"Show"]){
        [self.label setHidden:NO];
        [sender setTitle:@"Hide"];
    }
}
- (IBAction)maximize:(id)sender {
    NSArray *screens = [NSScreen screens];
    NSRect screenRect;
    for (NSInteger index=0; index < [screens count]; index++) {
        NSScreen *screen = screens[index];
        screenRect = [screen visibleFrame];
    }
    [self.window setFrame:screenRect display:YES];
}

最新更新