Tôi cần sao chép chức năng của bringSubviewToFront: trên iPhone, nhưng tôi đang lập trình trên máy Mac. Điều này có thể giải quyết như thế nào?Phiên bản OS X của bringSubviewToFront :?
Trả lời
đã không thực sự cố gắng này ra - và có thể có những cách tốt hơn để làm điều đó - nhưng điều này nên làm việc:
NSView* superview = [view superview];
[view removeFromSuperview];
[superview addSubview:view];
này sẽ di chuyển 'xem' vào phía trước của anh chị em của nó
Các lượt xem anh chị em có thể chồng chéo có thể khó thực hiện công việc ngay trong AppKit — nó hoàn toàn không được hỗ trợ trong một thời gian dài. Thay vào đó, hãy xem xét việc đặt chúng thành CALayers. Là phần thưởng, bạn có thể sử dụng lại mã này trong phiên bản iOS của mình.
cũng hãy chắc chắn để cho phép các lớp cho thạch anh rendering:
...
NSImageView *anImage = [[NSImageView alloc] initWithFrame:NSRectMake(0,0,512,512)];
[anImageView setWantsLayer:YES];
...
cách khác, lớp của bạn không thể được trả lại một cách chính xác.
Câu trả lời của Pete Rossi hoạt động, nhưng hãy nhớ giữ lại chế độ xem khi bạn xóa khỏi trình giám sát.
Bạn có thể thêm này trong một thể loại trên NSView:
-(void)bringSubviewToFront:(NSView*)view
{
[view retain];
[view removeFromSuperview];
[self addSubview:view];
[view release];
}
Pete Rossi của câu trả lời không làm việc cho tôi, vì tôi cần phải bật chế độ xem để trước khi kéo nó với con chuột. Tuy nhiên, những đường lối cũ sau đã làm việc mà không giết chết chuột:
CALayer* superlayer = [[view layer] superlayer];
[[view layer] removeFromSuperlayer];
[superlayer addSublayer:[view layer]];
Ngoài ra, sau đây được đặt trong một lớp con NSView hoặc loại khá tiện dụng:
- (void) bringToFront {
CALayer* superlayer = [[self layer] superlayer];
[[self layer] removeFromSuperlayer];
[superlayer addSublayer:[self layer]];
}
Hoàn hảo! Chỉ cần những gì tôi cần, cảm ơn. –
Đây là giải pháp Swift 3.0:
extension NSView {
public func bringToFront() {
let superlayer = self.layer?.superlayer
self.layer?.removeFromSuperlayer()
superlayer?.addSublayer(self.layer!)
}
}
- 1. Nhiều phiên bản Python trên OS X Leopard
- 2. Phiên bản tương thích với Mac OS X libcurl dylib
- 3. Dữ liệu về số lượng người dùng của từng phiên bản Mac OS X?
- 4. Làm cách nào để đặt phiên bản mặc định của Python thành 3.3 trên OS X?
- 5. Dylibs và OS X
- 6. Làm cách nào để biết phiên bản Perl nào có sẵn trên các phiên bản Mac OS X cũ hơn?
- 7. Phiên bản Python giao hàng với Mac OS X Snow Leopard?
- 8. Ứng dụng Hộp thư/Thư viện với Tự động lưu & Phiên bản trong OS X Lion
- 9. Xác định phiên bản OS X SDK và triển khai Target từ Framework
- 10. Phát triển nhiều phiên bản BlackBerry OS
- 11. Tôi làm cách nào để nhắm mục tiêu phiên bản Mac OS X cụ thể?
- 12. Làm cách nào để gỡ cài đặt phiên bản git 1.6.5.1 khỏi Mac OS X 10.5.8
- 13. Numpy-MKL cho OS X
- 14. Mono & WInforms trên OS X
- 15. Kiểm tra phiên bản OS sau đó ra lệnh nếu phiên bản chính xác
- 16. Phiên bản 4.x nào của gcc nên sử dụng?
- 17. Gỡ cài đặt ipython mac os x
- 18. Cách tải phiên bản hệ điều hành X?
- 19. Cách phát hiện phiên bản Mac OS bằng Python?
- 20. Đối diện với bringSubviewToFront?
- 21. chown (mac os x)
- 22. Lấy bản đồ bộ nhớ của tiến trình riêng của mình trong OS X 10.5/10,6
- 23. Sublime Văn bản 2 - OS X Command Line
- 24. pygettext.py và msgfmt.py trên Mac OS X
- 25. OS-X hỗ trợ cho std :: tr1
- 26. JNotify trên Mac OS X?
- 27. PyCharm - $ PATH trên OS X
- 28. Maven, JAVA_HOME w/OS X
- 29. OS X 10.8 Gatekeeper và Java applet
- 30. ldconfig cho Mac OS X
Có lẽ không hiệu quả, nhưng nó hoàn thành những gì tôi muốn, vì vậy cảm ơn. – Regan
Thay vào đó, có thể đáng nghiên cứu bằng cách sử dụng phương thức 'setSubviews:'. – ArtOfWarfare