objective-ccocoansbox

Create NSBox runtime example


Please, could you give me examples of how to create the NSBox instance runtime to place it inside the NSView?


Solution

  • NSView *superview = …; // Reference to the view that will contain the box
                           // for instance, [window contentView]
    
    NSUInteger resizeAllMask = (NSViewWidthSizable
        | NSViewHeightSizable
        | NSViewMinXMargin
        | NSViewMaxXMargin
        | NSViewMinYMargin
        | NSViewMaxYMargin);
    
    // This is the box. We use an autoresizing mask so that it occupies
    // the entire superview 
    NSBox *box = [[NSBox alloc] initWithFrame:[superview bounds]];
    [box setAutoresizingMask:resizeAllMask];
    [box setBoxType:NSBoxPrimary];
    [box setBorderType:NSBezelBorder];
    [box setTitle:@"This is a box"];
    
    // This is the box' content view. It represents the box contents.
    // By default, a box autoresizes its content view so that it occupies
    // the entire box
    NSView *boxContentView = [[NSView alloc] initWithFrame:NSZeroRect];
    [box setContentView:boxContentView];
    
    // For example, we add a text field to the box' content view
    NSRect textRect = {{0,0}, {100,20}};
    NSTextField *textField = [[NSTextField alloc] initWithFrame:textRect];
    [textField setStringValue:@"Hey there"];
    [boxContentView addSubview:textField];
    
    [superview addSubview:box];