2015-12-25 29 views
0

我不能讓自動佈局在OS X上工作。我想要做的事很簡單,即我有一個NSTextField應該填充整個空間的超級觀點。這裏是我正在使用的最小工作示例代碼:在OS X上的自動佈局 - 使NSTextField填充超級視圖

@import AppKit; 


int main() { 

    @autoreleasepool { 

     NSWindow *window = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 300, 300) 
                 styleMask:(NSTitledWindowMask | NSClosableWindowMask | NSResizableWindowMask) 
                 backing:NSBackingStoreBuffered 
                  defer:NO]; 

     NSTextField *textField = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 100, 100)]; 
     textField.stringValue = @"Lorem ipsum dolor sit atmet."; 
     [window.contentView addSubview:textField]; 

     textField.translatesAutoresizingMaskIntoConstraints = NO; 
     window.contentView.translatesAutoresizingMaskIntoConstraints = NO; 

     [textField setContentHuggingPriority:1 
           forOrientation:NSLayoutConstraintOrientationHorizontal]; 
     [textField setContentHuggingPriority:1 
           forOrientation:NSLayoutConstraintOrientationVertical]; 

     [window.contentView addConstraints: 
      [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[textField]-|" 
                options:0 
                metrics:nil 
                 views:@{@"textField": textField}]]; 

     [window.contentView addConstraints: 
      [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[textField]-|" 
                options:0 
                metrics:nil 
                 views:@{@"textField": textField}]]; 

     window.contentView.wantsLayer = YES; 
     window.contentView.layer.borderWidth = 5; 
     [window makeKeyAndOrderFront:nil]; 

     [[NSApplication sharedApplication] run]; 

     [textField release]; 
     [window release]; 
    } 

    return EXIT_SUCCESS; 
} 

當我運行這個時,文本字段不會出現。調整窗口大小時,您可以清楚地看到內容視圖的邊框正確調整大小。我究竟做錯了什麼?

回答

1

我相信你不應該改變NSWindowcontentView行爲,例如,設置其translatesAutoresizingMaskIntoConstraints屬性。

刪除以下行工作對我來說:

window.contentView.translatesAutoresizingMaskIntoConstraints = NO; 
+0

謝謝!我絕對不會想到自己... – vlikahmv

+0

@vlikahmv沒問題,看起來像一個意想不到的複製粘貼:) –

相關問題