2012-09-15 35 views

Trả lời

23

Sử dụng -setFrame:display:animate: để kiểm soát tối đa:

NSRect frame = [window frame]; 
frame.size = theSizeYouWant; 
[window setFrame: frame display: YES animate: whetherYouWantAnimation]; 

Lưu ý rằng tọa độ cửa sổ lộn với những gì bạn có thể được sử dụng để. Điểm gốc của hình chữ nhật nằm ở dưới cùng bên trái của nó trong Quartz/Cocoa trên OS X. Để đảm bảo điểm gốc vẫn giữ nguyên:

+1

@ Leo của câu trả lời có một điểm, hoặc ít nhất tôi đã thấy điều tương tự - +/- nên được đảo ngược. –

+1

Tôi đã thử mã này nhưng cửa sổ của tôi vẫn di chuyển xuống dưới. bất kỳ giải pháp nào để ngừng di chuyển cửa sổ. –

+0

Hoạt động hoàn hảo cho tôi. Tôi muốn lập trình thay đổi kích thước một bộ điều khiển cửa sổ đang được trình bày dưới dạng một khung nhìn trang tính. Cảm ơn! – Supertecnoboff

2

Sử dụng setFrame:display:animate:

[window setFrame:NSMakeRect(0.f, 0.f, 200.f, 200.f) display:YES animate:YES]; 
+3

không biết những gì NSMakeFrame là. Tôi sử dụng NSMakeRect. –

9

Thực sự có vẻ là +/- cần được đảo ngược để giữ cửa sổ từ di chuyển trên màn hình:

NSRect frame = [window frame]; 
frame.origin.y += frame.size.height; // origin.y is top Y coordinate now 
frame.origin.y -= theSizeYouWant.height; // new Y coordinate for the origin 
frame.size = theSizeYouWant; 
+0

Hoặc vẫn tốt hơn: frame.origin.y + = (frame.size.height - theSizeYouWant.height); – mojuba

0

Swift phiên bản

var frame = self.view.window?.frame 
frame?.size = NSSize(width: 400, height:200) 
self.view.window?.setFrame(frame!, display: true) 
Các vấn đề liên quan