2010-11-21 27 views

cevap

6

aslında bu dışarı denemedim - ve bunu yapmak için daha iyi yollar var olabilir - ama bu çalışması gerekir:

NSView* superview = [view superview]; 
[view removeFromSuperview]; 
[superview addSubview:view]; 

Bu onun kardeşleri önüne 'görünümü' hareket edecek

+0

Muhtemelen verimsiz, ancak istediğimi gerçekleştirir, teşekkürler. – Regan

+0

Bunun yerine 'setSubviews:' yöntemini kullanarak araştırmaya değer olabilir. – ArtOfWarfare

0

Üst üste binen kardeş görünümleri, AppKit'te doğru bir şekilde çalışmak için zor olabilir - uzun bir süre boyunca tamamen desteklenmedi. Onları yerine CALayers yapmayı düşünün. Bonus olarak, bu kodu iOS sürümünüzde yeniden kullanabilirsiniz.

0

da kuvars oluşturma için katmanı sağlamak için emin olun:

... 
NSImageView *anImage = [[NSImageView alloc] initWithFrame:NSRectMake(0,0,512,512)]; 
[anImageView setWantsLayer:YES]; 
... 

aksi takdirde katman doğru getirilmesi mümkün değildir.

0

Pete Rossi'nin cevabı işe yarıyor, ancak görüntüyü süper görüntüden kaldırdığınızda görünümü korumayı unutmayın.

Sen NSView bir kategoride bu ekleyebilirsiniz: Ben fare ile sürükleyerek zaman öne doğru görüşü pop gerekiyordu çünkü

-(void)bringSubviewToFront:(NSView*)view 
{ 
    [view retain]; 
    [view removeFromSuperview]; 
    [self addSubview:view]; 
    [view release]; 
} 
5

Pete Rossi'nin cevabı benim için çalışmadı. Ancak, aynı doğrultuda şu fareyi öldürmeden çalışma yaptı: Ayrıca

CALayer* superlayer = [[view layer] superlayer]; 
[[view layer] removeFromSuperlayer]; 
[superlayer addSublayer:[view layer]]; 

, bir NSView alt sınıfta veya kategoriye yerleştirilen aşağıdaki oldukça kullanışlıdır:

- (void) bringToFront { 
    CALayer* superlayer = [[self layer] superlayer]; 
    [[self layer] removeFromSuperlayer]; 
    [superlayer addSublayer:[self layer]]; 
} 
+0

Mükemmel! İhtiyacım olan şey, teşekkürler. –

0

Bu Swift 3.0 çözümdür:

extension NSView { 
    public func bringToFront() { 
     let superlayer = self.layer?.superlayer 
     self.layer?.removeFromSuperlayer() 
     superlayer?.addSublayer(self.layer!) 
    } 
}