2009-09-03 43 views
6

Có cách nào tôi nhận được kích thước của một NSWindow (tính bằng pixel) và hiển thị nó không? Vì vậy, khi người đó thay đổi kích thước cửa sổ, văn bản sẽ thay đổi và hiển thị kích thước mới.lấy kích thước của nswindow

Trả lời

12

Nếu bạn thực hiện phương pháp

- (NSSize)windowWillResize:(NSWindow *)sender toSize:(NSSize)frameSize

vào một đối tượng bạn đặt làm đại biểu của cửa sổ, nó sẽ được gọi bất cứ khi nào cửa sổ thay đổi kích thước. Từ đó bạn có thể cập nhật trường văn bản bạn sử dụng để hiển thị kích thước.

+0

ok đây là những gì tôi có: - (NSSize) windowWillResize: (NSWindow *) sendertoSize: (NSSize) framesize { \t [chiều dài setStringValue: @ "thisworks"]; \t [width setStringValue: @ "test"]; \t trở về; } (chuỗi là các bài kiểm tra để đảm bảo nó hoạt động) Mọi thứ được kết nối đúng với IB, tất cả đều được lưu. Nhưng khi tôi chạy ứng dụng nó chỉ hiển thị "nhãn" nó không nói những gì tôi đã nói với nó. –

+0

Mã trên có trong một đại biểu không? Bạn có thể cập nhật câu hỏi của mình bằng mã mà bạn phải cung cấp thêm ngữ cảnh không? – fbrereto

+0

trong cửa sổ đại biểu –

5

gì về:

CGSize window_size = my_window.frame.size; 
0

Thay vì cố gắng xử lý thay đổi kích thước, thay vào đó bạn nên đảm bảo đặt mặt nạ tự động xem của chế độ xem của bạn được đặt chính xác. Trong giao diện Builder, bạn làm điều này trên thanh tra kích thước (⌘3) với các quan điểm được chọn.

Nếu bạn đã duy trì toàn bộ cấu trúc phân cấp mà không cần đặt mặt nạ tự động hóa, bạn có một chút tedium trước bạn, nhưng nó không khó (chỉ tẻ nhạt) và sẽ không mất nhiều thời gian. Đây là lý do tại sao bạn nên đặt chế độ tự động hóa mặt nạ khi bạn tạo chúng.

Khi mặt nạ tự động hóa được đặt, chế độ xem sẽ tự động thay đổi kích thước; trừ khi giao diện của bạn là rất phức tạp hoặc bất kỳ chế độ xem nào có thể giảm xuống mức 0, bạn sẽ không cần phải can thiệp.

+0

Làm cách nào để cho phép tôi hiển thị kích thước bằng cách sử dụng NSTextField? –

+0

Ồ, tôi nghĩ rằng bạn đã yêu cầu để có được kích thước và thay đổi kích thước quan điểm của bạn với nó. Lấy làm tiếc. Tôi xác nhận câu trả lời của Ken. –

2
NSSize myNSWindowSize = [ [ myNSWindow contentView ] frame ].size; 

... phải là những gì bạn đang tìm kiếm. Đề nghị của fbrereto là những gì bạn nên sử dụng nếu bạn muốn kích thước bao gồm thanh tiêu đề của NSWindow.

+0

Cách khác, lấy 'khung' của cửa sổ, sau đó gửi cửa sổ thông báo 'contentRectForFrameRect:' để chuyển đổi nó. –

Các vấn đề liên quan