Tôi cần hiểu cách NSView tự động hóa lượt xem của NSView. Tôi đã thiết lập tất cả mọi thứ trong IB và subviews của tôi thay đổi kích thước độc đáo (khi tôi thay đổi kích thước cửa sổ của tôi xung quanh với một con chuột). Tuy nhiên, nếu tôi làm [myMainView setFrame:]
với khung hình mới của tôi, không có gì xảy ra. Tất cả các chế độ xem phụ của tôi vẫn là kích thước ban đầu (mặc dù chế độ xem chính có kích thước chính xác). Trẻ em được gọi là resizeWithOldSuperviewSize:
nhưng vẫn không được định kích thước phù hợp.Hành vi tự động hóa của NSView
Tôi có đầy đủ các thành phần ca cao trên màn hình (màn hình # 1), nhãn, hình ảnh, video. Có một bố cục được xác định rõ ràng cho các yếu tố này. Tôi đã thiết lập hành vi tự động hóa thông qua Trình tạo giao diện hoạt động rất tốt. Thay đổi kích thước cửa sổ chính thay đổi kích thước các yếu tố một cách thỏa mãn.
Bây giờ, người dùng nhấp vào nút "tiếp theo", trong đó một màn hình thứ hai của các phần tử (màn hình # 2) sẽ được vẽ. Bố trí của tôi được xây dựng dựa trên một màn hình chính tắc (ví dụ: 800x600). Nhưng bây giờ cửa sổ lớn hơn (hoặc nhỏ hơn) bởi vì nó đã được thay đổi kích thước trong màn hình # 1. Vì vậy, các yếu tố hiện nay chỉ lấy một khu vực nhỏ trong cửa sổ, thay vì được kích thước thích hợp để lấp đầy không gian có sẵn. Tôi muốn mở rộng các yếu tố này.
Tôi có hiểu lầm về cách hoạt động của tính năng tự động hóa không? Làm thế nào tôi có thể kích hoạt máy móc tự động hóa bên dưới NSView theo cách thủ công?
Có hai điều tôi có thể làm:
- thủ thay đổi kích thước các yếu tố dựa trên kích thước màn hình hiện tại tương đối so với kích thước ban đầu. Tùy chọn này không phải là yêu thích của tôi vì dường như, tôi buộc phải viết lại mã đã hoạt động trong NSView (hành vi tự động hóa
- Tùy chọn thứ hai của tôi là gọi phép thuật tự động hóa của NSView đã đề cập ở trên. Điều tôi đã thử là, thay đổi kích thước nội dung của tôi thành màn hình gốc (800x600), hiển thị các phần tử của tôi và sau đó thay đổi kích thước của nó thành kích thước cửa sổ hiện tại. dường như không được. Một lần nữa, tùy chọn này là một lợi thế vì nó giảm thiểu số lượng mã mà đã te được viết và duy trì.
Thử [resizeSubviewsWithOldSize:] (http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Classes/NSView_Class/Reference/NSView.html#//apple_ref/occ/instm/NSView/resizeSubviewsWithOldSize :) hoặc [setAutoresizesSubviews:] (http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Classes/NSView_Class/Reference/NSView.html#//apple_ref/occ/instm/NSView/setAutoresizesSubviews :). –
Tôi không chắc chắn những gì bạn có ý nghĩa ở đây. Parent's resizeSubviewsWithOldSize được gọi, setAutoresizesSubviews được đặt thành có. Bạn có thể cung cấp thêm một số hướng dẫn không? – EightyEight
Trước đây là vì sau này - nếu autoresizesSubviews được đặt thành YES, sau đó resizeSubviewsWithOldSize: sẽ được gọi tự động. Vì bạn có nó để thiết lập và đó là xảy ra, tôi cũng stumped. Lấy làm tiếc. –